HTTP协议的报文结构

HTTP 有两类报文:
(1) 请求报文----从客户向服务器发送请求报文,见图6-12(a).浏览器

(2) 响应报文----从服务器到客户的回答,见图6-12(b).服务器

因为 HTTP是面向文本的(text-oriented),所以在报文中的每个字段都是一些ASCII码串,于是每一个字段的长度都是不肯定的。
网络

HTTP请求报文和响应报文都是由三个部分组成。能够看出,这两种报文格式的区别就是开始行不一样。spa

(1) 开始行 用于区分是请求报文仍是响应报文。在请求报文中的开始行叫作请求行(Request-Line),
而在响应报文中的开始行叫作状态行(Staus-Line).在开始行的三个字段之间都以空格隔开,最后的“CR”
和“LF”分别表示“回车”和“换行”。计算机网络

(2)首部行 用来讲明浏览器,服务器或报文主体的一些信息。首部能够有好几行,也能够不使用。
在每个首部行中都有首部字段名和它的值,每一行在结束的地方都要有“回车”和“换行”。整个首部行
结束时,还有一空行将首部行和后面的实体主体分开。代理

(3)实体主体 在请求报文中通常都不用这个字段,而在响应报文中也可能没有这个字段。htm

 

下面介绍HTTP请求中最主要的一些主要特色。对象

请求报文中的第一行“请求行”,只有三个内容,即方法,请求资源的URL,以及HTTP的版本。blog

 

请注意:这里的名词“方法”是面向对象技术中使用的专门名词。所谓“方法”就是对所请求的对象进行的
操做,这些方法实际上也就是一些命令。所以,请求报文的类型是由它所采起的方法决定的。表6-1
给出了请求报文中经常使用的几种方法。资源

下面是一个请求报文的例子:
GET /chn/yxsz/index.htm HTTP/1.1 (请求使用了相对URL)
Host: www.tsinghua.edu.cn (此行是首部行的开始,这行给出了主机的域名)
Connection: close(告诉服务器发送完请求的文档后就能够释放链接了)
User-Agent: Mozilla/5.0 (代表用户代理是使用Netscape浏览器)
Accept-Language:cn (表示用户但愿优先获得中文版本的文档)
(请求报文的最后还有一个空行)

在请求行使用了相对URL(即省略了主机的域名)是由于下面的首部行(第二行)给出了主机的域名。
第三行是告诉服务器不使用持续链接,表示浏览器但愿服务器在传送完所请求的对象后即关闭TCP链接。这个请求报文
没有实体主体。

 

在看看HTTP响应报文的主要特色。
每个请求报文发出后,都能收到一个响应报文,响应报文的第一行就是状态行。
状态行包含三项内容:HTTP的版本,状态码,以及解释状态码的简单语句。
状态码都是三位数字的,分为5大类共33种。例如:
1xx 表示通知信息的,如请求收到了或正在进行处理。
2xx 表示成功,如接受或是知道了。
3xx 表示重定向,如要完成请求还必须采起下一步的行动。
4xx 表示客户的差错,如请求中有错误的语法或不能完成。
5xx 表示服务器的差错,如服务器失效没法完成请求。

节选自《计算机网络》(第五版)谢希仁

相关文章
相关标签/搜索