http报文格式.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
http报文格式

1.协议简介和应用 1.1协议介绍 HTTP(Hypertext Transfer Protocol, 超文本传输协议)是目前最常用的应用层协议之一,这里只对协议做一个简单的介绍。 HTTP自1990 年以来就被全球信息网采用为基础通讯协议,它是一种应用层的通讯协议,特性是轻便、快速,特别适合如Web 这种分布式、合作式的超媒体信息系统。HTTP 虽早自1990 年起就已被普遍使用,但过去许多年并无统一规范,此项不明确的规范后来通称为HTTP/0.9。直到1996 年6 月一份仅供参考的文件才由Internet Society 的HTTP Working Group 出版,称为HTTP/1.0。 HTTP/1.0 传输格式就像大部分的网络通讯协议,HTTP 使用C/S模式。但是,HTTP/1.0没有充分考虑到分层代理,高速缓存的作用以及对稳定连接和虚拟主机的需求。并且随着不完善的进程应用的激增,HTTP/1.0迫切需要一个新的版本,以便使两个通信应用程序能够确定彼此的真实性能。 这里规定的协议叫做“HTTP/1.1”,这个协议与HTTP/1.0相比,要求更为严格,以确保各项功能得到可靠实现。 1.2协议常见的应用环境 在我们日常生活中最常见的应用环境就是上网浏览网页,很多上班族到办公室的第一件事就是打开电脑,而开机后的第一件事就是打开IE、Firefox、Myie、GreenBrowser、Opera等浏览器时,做的第一件事就是浏览一下例如, 的新闻,而这种简单的应用操作,完成的交互过程就是一个典型的HTTP协议的应用过程。 1.2.1正常连接的应用环境 基于HTTP协议的客户/服务器模式的信息交换过程,它分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。如图1 HTTP_图1 显而易见有如下4个交互的过程: 建立连接   连接的建立是通过申请套接字(Socket)实现的。客户打开一个套接字并把它约束在一个端口上,如果成功,就相当于建立了一个虚拟文件。以后就可以在该虚拟文件上写数据并通过网络向外传送。通俗地说就是TCP的三次握手。 发送请求  首先,这个消息是用普通的ASCII文本书写的。这个消息共有多行(每行以一个回车符和一个换行符结束),最后一行后面还有额外的一个回车符和换行符。当然,一个请求消息也可以仅仅只有一行。请求的报文中包含了各种信息,包括客户端想要访问的URL,HTTP的版本,支持的浏览的字体等内容。详细分析见2.2.1请求报文字段。 发送响应   服务器在处理完客户的请求之后,要向客户机发送响应消息。 这个响应消息分为3部分:1个起始的状态行(status line),6个头部行(不固定)、1个包含所请求对象本身的附属体。状态行有3个字段:协议版本字段、状态码字段、原因短语字段。详细分析见2.2.2应答报文字段。 关闭连接   客户和服务器双方都可以通过关闭套接字来结束TCP/IP对话。通俗地说就是TCP的4次握手断开。常见的应用环境就是这样,实际生活中可能就是多了一个NAT转换,其实过程都是一样的。 1.2.2通过代理上网的应用环境 在很多网络安全产品中,提供了HTTP过滤的功能,要求客户在IE浏览器上做一个【Internet选项】-【连接】-【局域网设置】的更改,配置代理的ip和端口。如下图2: HTTP_图2 点击【局域网设置】后输入ip和端口,并钩选“为LAN使用代理服务器”如下图3: HTTP_图3 客户端和代理主机间用交换机相连,下面的拓扑中为了看得更加清晰并没有画出交换机。 下面是一个简单的拓扑图4: HTTP_图4 详细的交互过程分析参见:3.3 2.协议分析 HTTP报文格式并不复杂,但是各个字段类型数量庞大,这里只对常见的字段进行分析。 对于下面字段说明中出现的一些常见字符作一下说明: “文字” 文字原文使用引号。除特殊情况,原文对外界不敏感。 规则1 | 规则2 由竖线(|)分开的元素是可选的,例如,yes | no表示yes或no都是可接受的。 (规则1 规则2) 围在括号里的多个元素视作一个元素。这样“(elem (foo | bar) elem)”允许标记序列“elem foo elem”和elem bar elem”。 *规则 前面的字符*表示重复。完整的形式是*元素,表示元素至少出现次,至多出现次。默认值是0和无穷大,所以*(元素)允许任何数值,包括零;1*元素至少需要一次;1*2element允许一次或两次。 [规则] 方括号里是任选元素;[foo bar]相当于*1(foo bar)。 2.1报文格式 对于HTTP的报文格式分析,就是两种格式,因为基于C/S的访问应答模式,所以一个是请求的报文格式,而另一个是应答的报文格式。 2.1.1请求报文格式 先看一下请求报文

文档评论(0)

cgtk187 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档