第6章HTTP协议分析_第1页
第6章HTTP协议分析_第2页
第6章HTTP协议分析_第3页
第6章HTTP协议分析_第4页
第6章HTTP协议分析_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第六讲第六讲 HTTPHTTP协议协议统一资源定位符统一资源定位符http:/hostname:port/path;parameters?qhttp:/hostname:port/path;parameters?queryuery 例子:例子:http:/ The author of this text is The author of this text is 浙江工浙江工业大学物联网实验室业大学物联网实验室超文本传输协议超文本传输协议HTTP HTTP 超文本传输协议(超文本传输协议(HTTPHTTP,Hypertext Transfer Hypertext Transfer Protoc

2、olProtocol)是在)是在InternetInternet上传送文件的一组规上传送文件的一组规则。则。 HTTPHTTP传输的文件将在浏览器显示。传输的文件将在浏览器显示。HTTPHTTP应用程应用程序在序在WebWeb服务器上运行,收听请求,然后响应服务器上运行,收听请求,然后响应请求,向请求方发回文件。请求,向请求方发回文件。WebWeb服务器是个运服务器是个运行行HTTPHTTP服务器应用程序的服务器。服务器应用程序的服务器。HTTPHTTP在一个在一个TCPTCP端口收听,通常在端口端口收听,通常在端口 8080收听收听请求,然后,将被请求的文件传送给请求方。请求,然后,将被请求

3、的文件传送给请求方。请求方主机使用请求方主机使用WebWeb浏览器应用程序显示文件浏览器应用程序显示文件。 HTTPHTTP协议的运作方式协议的运作方式 1. 1. 宏观运作方式宏观运作方式 HTTPHTTP协议是基于请求响应模式的。一个客协议是基于请求响应模式的。一个客户机与服务器建立连接后,发送一个请求给服户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为,统一资源标识符、务器,请求方式的格式为,统一资源标识符、协议版本号,后边是协议版本号,后边是MIMEMIME信息包括请求修饰符信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求、客户机信息和可能的内容。服务器接到请求

4、后,给予相应的响应信息,其格式为一个状态后,给予相应的响应信息,其格式为一个状态行包括信息的协议版本号、一个成功或错误的行包括信息的协议版本号、一个成功或错误的代码,后边是代码,后边是MIMEMIME信息包括服务器信息、实体信息包括服务器信息、实体信息和可能的内容。信息和可能的内容。 建立建立HTTPHTTP连接连接 HTTPHTTP协议的内部操作过程协议的内部操作过程 基于基于HTTPHTTP协议的客户协议的客户/ /服务器模式的信息交换过程服务器模式的信息交换过程,如下图所示,它分四个过程,建立连接、发送请,如下图所示,它分四个过程,建立连接、发送请求信息、发送响应信息、关闭连接。求信息、

5、发送响应信息、关闭连接。 信息交换的实现步骤信息交换的实现步骤建立连接。连接的建立是通过申请套接字建立连接。连接的建立是通过申请套接字(Socket)(Socket)实现的。客户打开一个套接字并把它实现的。客户打开一个套接字并把它约束在一个端口上,如果成功,就相当于建立约束在一个端口上,如果成功,就相当于建立了一个虚拟文件。以后就可以在该虚拟文件上了一个虚拟文件。以后就可以在该虚拟文件上写数据并通过网络向外传送。写数据并通过网络向外传送。发送请求。打开一个连接后,客户机把请求发送请求。打开一个连接后,客户机把请求消息送到服务器的停留端口上,完成提出请求消息送到服务器的停留端口上,完成提出请求动

6、作。动作。 发送响应。服务器在处理完客户的请求之后发送响应。服务器在处理完客户的请求之后,要向客户机发送响应消息。,要向客户机发送响应消息。 关闭连接。客户和服务器双方都可以通过关关闭连接。客户和服务器双方都可以通过关闭套接字来结束闭套接字来结束TCP/IPTCP/IP对话。对话。HTTPHTTP报文格式报文格式 HTTPHTTP报文由从客户机到服务器的请求和从服务报文由从客户机到服务器的请求和从服务器到客户机的响应构成。器到客户机的响应构成。 这两种类型的消息这两种类型的消息由一个起始行,一个或者多个头域,一个只是由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。头域

7、结束的空行和可选的消息体组成。HTTPHTTP的的头域包括通用头,请求头,响应头和实体头四头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(个部分。每个头域由一个域名,冒号(: :)和)和域值三部分组成。域名是大小写无关的,域值域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格展为多行,在每行开始处,使用至少一个空格或制表符。或制表符。 请求报文格式和响应报文请求报文格式和响应报文 HTTP/1.0HTTP/1.0请求消息的格式请求消息的格式 HTTPHTTP请

8、求由三部分组成:请求行,请求报头,请求请求由三部分组成:请求行,请求报头,请求正文正文请请 求求 行行= =方法请求方法请求URLURLHTTPHTTP版本号版本号CRLFCRLF方法方法=GET|HEAD|POST|=GET|HEAD|POST|扩展方法扩展方法请求行中的方法请求行中的方法 请求行中的方法描述指定资源中应该执行的动作,常请求行中的方法描述指定资源中应该执行的动作,常用的方法有用的方法有GETGET、HEADHEAD和和POSTPOST。不同的请求对象对应。不同的请求对象对应GETGET的结果是不同的,对应关系如下:的结果是不同的,对应关系如下:对象对象GETGET的结果的结果

9、文件文件的内容文件文件的内容程序该程序的执行结果程序该程序的执行结果数据库查询查询结果数据库查询查询结果HEADHEAD要求服务器查找某对象的元信息,而不是对要求服务器查找某对象的元信息,而不是对象本身。象本身。POSTPOST从客户机向服务器传送数据,在要求服务器从客户机向服务器传送数据,在要求服务器和和CGICGI做进一步处理时会用到做进一步处理时会用到POSTPOST方法。方法。 HTTP/1.0HTTP/1.0的响应消息格式的响应消息格式 HTTPHTTP响应由三部分组成:状态行,消息报头,响应正响应由三部分组成:状态行,消息报头,响应正文文状态行状态行=HTTP=HTTP版本号状态码

10、原因叙述版本号状态码原因叙述状态码表示响应类型状态码表示响应类型1 1保留保留2 2表示请求成功地接收表示请求成功地接收3 3为完成请求客户需进一步细化请求为完成请求客户需进一步细化请求4 4客户错误客户错误5 5服务器错误服务器错误常见状态代码,状态描述常见状态代码,状态描述200 OK /200 OK /客户端请求成功客户端请求成功400 Bad Request /400 Bad Request /客户端请求有语法错误,不能被服务器所理客户端请求有语法错误,不能被服务器所理解解401 Unauthorized / 401 Unauthorized / 请求未经授权,请求未经授权, 这个状态

11、代码必须和这个状态代码必须和WWW-WWW-Authenticate Authenticate 报头域一起使用报头域一起使用403 Forbidden /403 Forbidden /服务器收到请求,但是拒绝提供服务服务器收到请求,但是拒绝提供服务404 Not Found /404 Not Found /请求资源不存在,请求资源不存在,egeg:输入了错误的:输入了错误的URLURL500 Internal Server Error /500 Internal Server Error /服务器发生不可预期的错误服务器发生不可预期的错误503 Server Unavailable / 503

12、 Server Unavailable / 服务器当前不能处理客户端的请求服务器当前不能处理客户端的请求, 一段时间后,可能恢复正常一段时间后,可能恢复正常报头详解报头详解HTTPHTTP报头消息包括:报头消息包括:通用信息头通用信息头请求头请求头响应头响应头报头格式:报头格式:名字名字+“+“:”+ +空格空格+ +值值消息报头域的名字是大小写无关的。消息报头域的名字是大小写无关的。通用信息头通用信息头通用信息头域包含请求和响应消息都支持的头域,通用信息头域包含请求和响应消息都支持的头域,通用头域包含通用头域包含Cache-ControlCache-Control、ConnectionCon

13、nection、DateDate、PragmaPragma、Transfer-EncodingTransfer-Encoding、UpgradeUpgrade、ViaVia。对通。对通用头域的扩展要求通讯双方都支持此扩展,如果存用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头域,一般将会作为实体头域处理在不支持的通用头域,一般将会作为实体头域处理。下面简单介绍几个在。下面简单介绍几个在UPnPUPnP(Universal Plug and Universal Plug and PlayPlay,通用即插即用协议,有兴趣读者可自己查找,通用即插即用协议,有兴趣读者可自己查找资料理解之

14、)消息中使用的通用头域。资料理解之)消息中使用的通用头域。通用信息头通用信息头Cache-ControlCache-Control请求时的缓存指令:请求时的缓存指令:no-cacheno-cache指示请求或响应消息不能缓存指示请求或响应消息不能缓存no-storeno-store用于防止重要的信息被无意的发布。在请求消息中用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。发送将使得请求和响应消息都不使用缓存。max-agemax-age指示客户机可以接收生存期不大于指定时间(以秒指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。为单位)的响应。min

15、-freshmin-fresh指示客户机可以接收响应时间小于当前时间加上指示客户机可以接收响应时间小于当前时间加上指定时间的响应。指定时间的响应。max-stalemax-stale指示客户机可以接收超出超时期间的响应消息。指示客户机可以接收超出超时期间的响应消息。如果指定如果指定max-stalemax-stale消息的值,那么客户机可以接收超出超消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。时期指定值之内的响应消息。 通用信息头通用信息头响应时的缓存指令:响应时的缓存指令:PublicPublic指示响应可被任何缓存区缓存。指示响应可被任何缓存区缓存。PrivatePriva

16、te指示对于单个用户的整个或部分响应消息,不能被指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。息,此响应消息对于其他用户的请求无效。No-cache, no-store, max-age, s-maxageNo-cache, no-store, max-age, s-maxageDateDateDateDate头域表示消息发送的时间,时间的描述格式由头域表示消息发送的时间,时间的描述格式由rfc822rfc822定义。例如,定义。例如,Date:Mon,3

17、1Dec200104:25:57GMTDate:Mon,31Dec200104:25:57GMT。DateDate描述的时间描述的时间表示世界标准时,换算成本地时间,需要知道用户所表示世界标准时,换算成本地时间,需要知道用户所在的时区。在的时区。通用信息头通用信息头ConnectionConnection普通报头域允许发送指定连接的选项普通报头域允许发送指定连接的选项例如指定连接是连续,或者指定例如指定连接是连续,或者指定“close”close”选项,通选项,通知服务器,在响应完成后,关闭连接知服务器,在响应完成后,关闭连接请求头请求头AcceptAcceptAccept Accept 请求

18、报头域用于指定客户端接受哪些类型的请求报头域用于指定客户端接受哪些类型的信息。信息。egeg:AcceptAccept:image/gifimage/gif,表明客户端希望接,表明客户端希望接受受GIF GIF 图象格式的资源;图象格式的资源;AcceptAccept:text/htmltext/html,表明,表明客户端希望接受客户端希望接受html html 文本。文本。请求头请求头Accept-CharsetAccept-CharsetAccept-Charset Accept-Charset 请求报头域用于指定客户端接受的字符请求报头域用于指定客户端接受的字符集。集。eg eg :Ac

19、cept-Charset:iso-8859-1,gb2312.Accept-Charset:iso-8859-1,gb2312.如果在请如果在请求消息中没有设置这个域,缺省是任何字符集都可以接受求消息中没有设置这个域,缺省是任何字符集都可以接受。Accept-EncodingAccept-EncodingAccept-Encoding Accept-Encoding 请求报头域用于指定可接受的内容编码请求报头域用于指定可接受的内容编码。egeg:Accept-Encoding:gzip.deflate.Accept-Encoding:gzip.deflate.如果请求消息中如果请求消息中没有设

20、置这个域服务器假定客户端对各种内容编码都可以没有设置这个域服务器假定客户端对各种内容编码都可以接受。接受。Accept-LanguageAccept-LanguageAccept-Language Accept-Language 请求报头域用于指定一种自然语言。请求报头域用于指定一种自然语言。eg eg :Accept-Language:zh-cn.Accept-Language:zh-cn.如果请求消息中没有设置这个如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以接受。报头域,服务器假定客户端对各种语言都可以接受。请求头请求头AuthorizationAuthorizati

21、onAuthorization Authorization 请求报头域主要用于证明客户端有请求报头域主要用于证明客户端有权查看某个资源。当浏览器访问一个页面时,如果收权查看某个资源。当浏览器访问一个页面时,如果收到服务器的响应代码为到服务器的响应代码为401401(未授权),可以发送一(未授权),可以发送一个包含个包含Authorization Authorization 请求报头域的请求,要求服请求报头域的请求,要求服务器对其进行验证。务器对其进行验证。HostHost(发送请求时,该报头域是必需的)(发送请求时,该报头域是必需的)Host Host 请求报头域主要用于指定被请求资源的请求报

22、头域主要用于指定被请求资源的Internet Internet 主机和端口号,它通常从主机和端口号,它通常从HTTP URL HTTP URL 中提中提取出来的。取出来的。请求头请求头我们在浏览器中输入:我们在浏览器中输入:http:/ Host 请求报头请求报头域,如下:域,如下: Host Host:此处使用缺省端口号此处使用缺省端口号8080,若指定了端口号,则变成:,若指定了端口号,则变成:HostHost::指定端口号指定端口号请求头请求头User-AgentUser-Agent我们上网登陆论坛的时候,往往会看到一些欢迎信息我们上网登陆论坛的时候,往往会看到一些欢迎信息,其中列出了你

23、的操作系统的名称和版本,你所使用,其中列出了你的操作系统的名称和版本,你所使用的浏览器的名称和版本,这往往让很多人感到很神奇的浏览器的名称和版本,这往往让很多人感到很神奇,实际上,服务器应用程序就是从,实际上,服务器应用程序就是从User-AgentUser-Agent这个请求报头域中获取到这些信息。这个请求报头域中获取到这些信息。User-Agent User-Agent 请请求报头域允许客户端将它的操作系统、浏览器和其它求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。不过,这个报头域不是必需的,如属性告诉服务器。不过,这个报头域不是必需的,如果我们自己编写一个浏览器,不使用果

24、我们自己编写一个浏览器,不使用User-AgentUser-Agent请请求报头域,那么服务器端就无法得知我们的信息了。求报头域,那么服务器端就无法得知我们的信息了。响应头响应头LocationLocationLocation Location 响应报头域用于重定向接受者到一个新的响应报头域用于重定向接受者到一个新的位置。位置。Location Location 响应报头域常用在更换域名的时候响应报头域常用在更换域名的时候。ServerServerServer Server 响应报头域包含了服务器用来处理请求的软响应报头域包含了服务器用来处理请求的软件信息。与件信息。与User-Agent U

25、ser-Agent 请求报头域是相对应的。下请求报头域是相对应的。下面是面是Server Server 响应报头域的一个例子:响应报头域的一个例子:ServerServer:Apache-Coyote/1.1Apache-Coyote/1.1响应头响应头WWW-AuthenticateWWW-AuthenticateWWW-Authenticate WWW-Authenticate 响应报头域必须被包含在响应报头域必须被包含在401401(未授权的)响应消息中,客户端收到未授权的)响应消息中,客户端收到401 401 响应消息响应消息时候,并发送时候,并发送Authorization Auth

26、orization 报头域请求服务器对报头域请求服务器对其进行验证时,服务端响应报头就包含该报头域。其进行验证时,服务端响应报头就包含该报头域。egeg:WWW-Authenticate:Basic realm=Basic Auth WWW-Authenticate:Basic realm=Basic Auth Test! /Test! /可以看出服务器对请求资源采用的是基本可以看出服务器对请求资源采用的是基本验证机制。验证机制。实体头实体头Content-EncodingContent-EncodingContent-Encoding Content-Encoding 实体报头域被用作媒体类

27、型的修实体报头域被用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内饰符,它的值指示了已经被应用到实体正文的附加内容的编码,因而要获得容的编码,因而要获得Content-Type Content-Type 报头域中所引报头域中所引用的媒体类型,必须采用相应的解码机制。用的媒体类型,必须采用相应的解码机制。Content-Encoding Content-Encoding 这样用于记录文档的压缩方法,这样用于记录文档的压缩方法,egeg:Content-EncodingContent-Encoding:gzipgzip实体头实体头Content-LanguageContent-Lan

28、guageContent-Language Content-Language 实体报头域描述了资源所用的自实体报头域描述了资源所用的自然语言。没有设置该域则认为实体内容将提供给所有然语言。没有设置该域则认为实体内容将提供给所有的语言阅读者。的语言阅读者。egeg:Content-Language:daContent-Language:daContent-LengthContent-LengthContent-Length Content-Length 实体报头域用于指明实体正文的长实体报头域用于指明实体正文的长度,以字节方式存储的十进制数字来表示。度,以字节方式存储的十进制数字来表示。Cont

29、ent-TypeContent-TypeContent-Type Content-Type 实体报头域用语指明发送给接收者的实体报头域用语指明发送给接收者的实体正文的媒体类型。实体正文的媒体类型。egeg:Content-Type:text/html;charset=ISO-8859-1Content-Type:text/html;charset=ISO-8859-1Content-Type:text/html;charset=GB2312Content-Type:text/html;charset=GB2312实体头实体头Last-ModifiedLast-ModifiedLast-Modi

30、fied Last-Modified 实体报头域用于指示资源的最后修实体报头域用于指示资源的最后修改日期和时间。改日期和时间。ExpiresExpiresExpires Expires 实体报头域给出响应过期的日期和时间。实体报头域给出响应过期的日期和时间。为了让代理服务器或浏览器在一段时间以后更新缓存为了让代理服务器或浏览器在一段时间以后更新缓存中中( (再次访问曾访问过的页面时,直接从缓存中加载再次访问曾访问过的页面时,直接从缓存中加载,缩短响应时间和降低服务器负载,缩短响应时间和降低服务器负载) )的页面,我们可的页面,我们可以使用以使用Expires Expires 实体报头域指定页面

31、过期的时间。实体报头域指定页面过期的时间。egeg:ExpiresExpires:ThuThu,15 Sep 2006 16:23:12GMT15 Sep 2006 16:23:12GMT实体头实体头HTTP1.1 HTTP1.1 的客户端和缓存必须将其他非法的日期格的客户端和缓存必须将其他非法的日期格式(包括式(包括0 0)看作已经过期。)看作已经过期。egeg:为了让浏览器不要缓存页面,:为了让浏览器不要缓存页面, 我们也可以利用我们也可以利用Expires Expires 实体报头域,实体报头域, 设置为设置为0 0典型的请求消息典型的请求消息 GET GET http:/download.microtool.de:80/somedatahttp:/download.microtool.de:80/somedata.exe.exeHost:download.microtool.deHost:download.microtool.deAccept:Accept:* */ /* *Accept Language: zh-cnAccept Language: zh-cnAccpet-Encoding:gzip, deflateAccpet-Encoding:gzip, deflateCache-Control:no-cach

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论