HTTP协议的报文结构
HTTP 有两类报文:
(1) 请求报文----从客户向服务器发送请求报文,见图6-12(a).
(2) 响应报文----从服务器到客户的回答,见图6-12(b).
由于 HTTP是面向文本的(text-oriented),因此在报文中的每一个字段都是一些ASCII码串,因而每个字段的长度都是不确定的。
HTTP请求报文和响应报文都是由三个部分组成。可以看出,这两种报文格式的区别就是开始行不同。
(1) 开始行 用于区分是请求报文还是响应报文。在请求报文中的开始行叫做请求行(Request-Line),
而在响应报文中的开始行叫做状态行(Staus-Line).在开始行的三个字段之间都以空格隔开,最后的“CR”
和“LF”分别表示“回车”和“换行”。
(2)首部行 用来说明浏览器,服务器或报文主体的一些信息。首部可以有好几行,也可以不使用。
在每一个首部行中都有首部字段名和它的值,每一行在结束的地方都要有“回车”和“换行”。整个首部行
结束时,还有一空行将首部行和后面的实体主体分开。
(3)实体主体 在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段。
下面介绍HTTP请求中最主要的一些主要特点。
请求报文中的第一行“请求行”,只有三个内容,即方法,请求资源的URL,以及HTTP的版本。
请注意:这里的名词“方法”是面向对象技术中使用的专门名词。所谓“方法”就是对所请求的对象进行的
操作,这些方法实际上也就是一些命令。因此,请求报文的类型是由它所采取的方法决定的。表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 表示服务器的差错,如服务器失效无法完成请求。
节选自《计算机网络》(第五版)谢希仁
HTTP协议的报文结构的更多相关文章
- 【HTTP】二、HTTP协议的报文结构
HTTP有两类报文:请求报文和响应报文,由于 HTTP 是面向正文的(text-oriented),因此在报文中的每一个字段都是一些 ASCII码串,因而每个字段的长度都是不确定的.(HTTP2引 ...
- HTTP协议报文结构及示例
HTTP基本架构 下面我们用一张简单的流程图来展示HTTP协议基本架构,以便大家先有个基本的了解. 9.png Web Client可以是浏览器.搜索引擎.机器人等等一切基于HTTP协议发起http请 ...
- 报文分析4、TCP协议的头结构
TCP协议的头结构 来源端口(2字节) 目的端口(2字节) 序号(4字节) 确认序号(4字节) 头长度(4位) 保留(6位) URG ACK PSH RST SYN PIN 窗口大小(2字节) 校验和 ...
- 报文分析5、UDP协议的头结构
UDP协议的头结构 源端口(2字节) 目的端口(2字节) 封报长度(2字节) 校验和(2字节) 数据 (1)源端口(Source Port):16位的源端口域包含初始化通信的端口号.源端口和IP地址的 ...
- HTTP 协议基础概念和报文结构
基础概念 1.WWW(World Wide Web,万维网)构建技术有3项: (1)把SGML(Standard Generalized Markup Language,标准通用标记语言)作为页面的文 ...
- HTTP协议图--HTTP 协议报文结构
1.HTTP 报文 用于 HTTP 协议交互的信息被称为 HTTP 报文.请求端(客户端)的 HTTP 报文叫做请求报文:响应端(服务器端)的叫做响应报文.HTTP 报文本身是由多行(用 CR[car ...
- 接口测试01 - HTTP协议报文结构及示例
HTTP基本架构 用一张简单的流程图来展示HTTP协议的基本架构,以便先有个基础的了解. 1)Web Client可以是浏览器.搜索引擎等等一切基于HTTP协议发起http请求的工具. 2)Web S ...
- 报文分析3、ICMP协议的头结构
ICMP协议的头结构 类型(8位) 代码(8位) 校验和(8位) 类型或者代码 (1)类型:一个8位类型字段,表示ICMP数据包类型. (2)代码:一个8位代码域,表示指定类型中的一个功能.如果一 ...
- 重温Http协议--请求报文和响应报文
http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...
随机推荐
- CentOS双网卡绑定bond0
a)拷⻉并配置vim /etc/sysconfig/network-scripts/ifcfg-bond0配置⽂件(会自动创建文件) DEVICE=bond0 TYPE=Ethernet ONBOOT ...
- JAVA基本类库介绍
我们曾经讲过,Java已经为编程者编制了许多类,这些类已经经过测试,基本上不存在错误,这些类都是我们编程的基础.如果不利用这些已存在的类,我们的 编程工作将变得异常复杂,所以我们应尽可能多的掌握Jav ...
- linux命令行中单个减号表示标准输入输出流
tar cvf - /src/myprojectsrc 这里本来是要输出到一个.tar文件的,目标.tar文件应该放在上面命令的减号处,因此这里的减号表示标准输出流. 减号单独作为命令行参数时,是标准 ...
- String相关的问题
基本事实:对于字符串常量,如果内容相同,Java认为它们代表同一个String对象.而用关键字new 调用的构造器,总是会创建新的对象,无论内容是否相同.字符串常量是放在常量池(或者叫常量缓冲区)里面 ...
- 数据绑定控件之Repeater
引言 前几篇的文章在说AJAX的内容,利用AJAX技术能够开发出高效运行的网站应用程序,不过在进行B/S项目开发时只拥有AJAX技术是远远不够的,踏入到B/S要学的东西会更多,但相较C/S的复杂逻辑结 ...
- Java未被捕获的异常该怎么处理
在你学习在程序中处理异常之前,看一看如果你不处理它们会有什么情况发生是很有好处的.下面的小程序包括一个故意导致被零除错误的表达式.class Exc0 { public static void ...
- python之haproxy配置文件操作(第三天)
作业: 对haproxy配置文件进行操作 要求: 对haproxy配置文件中backend下的server实现增删改查的功能 一.这个程序有二个版本 1. python2.7版本见haproxy_py ...
- babel6 的 export default bug
把export default 变成 module.exports 就行了
- 通达信5分钟.lc5和.lc1文件格式
一.通达信日线*.day文件 文件名即股票代码 每32个字节为一天数据 每4个字节为一个字段,每个字段内低字节在前 00 ~ 03 字节:年月日, 整型 04 ~ 07 ...
- Hibernate的批量插入(&&JDBC)
来自: http://blog.csdn.net/an_2016/article/details/51759890 一.批量插入(两种方式) 1,通过hibernate缓存 如果这样写代码进行批量插入 ...