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协议的报文结构的更多相关文章

  1. 【HTTP】二、HTTP协议的报文结构

      HTTP有两类报文:请求报文和响应报文,由于 HTTP 是面向正文的(text-oriented),因此在报文中的每一个字段都是一些 ASCII码串,因而每个字段的长度都是不确定的.(HTTP2引 ...

  2. HTTP协议报文结构及示例

    HTTP基本架构 下面我们用一张简单的流程图来展示HTTP协议基本架构,以便大家先有个基本的了解. 9.png Web Client可以是浏览器.搜索引擎.机器人等等一切基于HTTP协议发起http请 ...

  3. 报文分析4、TCP协议的头结构

    TCP协议的头结构 来源端口(2字节) 目的端口(2字节) 序号(4字节) 确认序号(4字节) 头长度(4位) 保留(6位) URG ACK PSH RST SYN PIN 窗口大小(2字节) 校验和 ...

  4. 报文分析5、UDP协议的头结构

    UDP协议的头结构 源端口(2字节) 目的端口(2字节) 封报长度(2字节) 校验和(2字节) 数据 (1)源端口(Source Port):16位的源端口域包含初始化通信的端口号.源端口和IP地址的 ...

  5. HTTP 协议基础概念和报文结构

    基础概念 1.WWW(World Wide Web,万维网)构建技术有3项: (1)把SGML(Standard Generalized Markup Language,标准通用标记语言)作为页面的文 ...

  6. HTTP协议图--HTTP 协议报文结构

    1.HTTP 报文 用于 HTTP 协议交互的信息被称为 HTTP 报文.请求端(客户端)的 HTTP 报文叫做请求报文:响应端(服务器端)的叫做响应报文.HTTP 报文本身是由多行(用 CR[car ...

  7. 接口测试01 - HTTP协议报文结构及示例

    HTTP基本架构 用一张简单的流程图来展示HTTP协议的基本架构,以便先有个基础的了解. 1)Web Client可以是浏览器.搜索引擎等等一切基于HTTP协议发起http请求的工具. 2)Web S ...

  8. 报文分析3、ICMP协议的头结构

    ICMP协议的头结构 类型(8位) 代码(8位) 校验和(8位) 类型或者代码   (1)类型:一个8位类型字段,表示ICMP数据包类型. (2)代码:一个8位代码域,表示指定类型中的一个功能.如果一 ...

  9. 重温Http协议--请求报文和响应报文

    http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...

随机推荐

  1. Unit01: JAVA开发环境

    Top JAVA开发环境 1. JAVA开发环境 1.1. 认识Linux操作系统 1.1.1. Linux的由来及发展 Linux起源于1991年,1995年流行起来,大家可以看到旁边的这个人,它就 ...

  2. Windows Phone 八、文件读写IO

    文件存储的类型 •本地应用文件: •ApplicationData.Current.LocalFolder: •漫游应用文件: •ApplicationData.Current.RoamingFold ...

  3. struts2 jquery ajaxFileUpload 异步上传文件

    网上搜集的,整理一下. 一.ajaxFileUpload 实现异步上传文件利用到了ajaxFileUpload.js这个文件,这是别人开发的一个jquery的插件,可以实现文件的上传并能够和strut ...

  4. Java被忽略的基本知识(三)

    35.e.printStackTrace();输出异常信息,也可以使用System.out.println(e); 36.范围小的异常,要放在范围大的异常前面. 37.断言:判断某个结果的正确性,正确 ...

  5. getPhysicalNumberOfCells 与 getLastCellNum的区别

    用org.apache.poi的包做excel导入,无意间发明若是excel文件中有空列,空列后面的数据全部读不到. 查来查去本来是HSSFRow供给两个办法:getPhysicalNumberOfC ...

  6. 用自己赚的钱第一次坐飞机 那feel倍儿爽

    马年春晚上,歌手大张伟的神曲<倍儿爽>如今已传遍大街小巷.其实,不管人家到底有没有炒作,能让我们这些观众感觉到放松.乐呵,那就是一个成功的春晚节目.而今年,我也如同这歌中唱的一样,活得倍儿 ...

  7. 超简单的JNI——NDK开发教程

    不好意思各位,我按照网上一些教程进行JNI开发,折腾了半天也没成功,最后自己瞎搞搞定了,其实超简单的,网上的教程应该过时了,最新版的AS就包含了NDK编译的功能,完全不用手动javah,各种包名路径的 ...

  8. net core 控制台中文乱码的解决方案

    net core 对控制台中文的支持需要加入下面的语句 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

  9. 6.Git内容修改之后的查看和提交

    我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容: Git is a distributed version c ...

  10. java第六次作业(老师讲过后)

    import java.util.*; public class Draw { private ArrayList list; public Draw() { list= new ArrayList( ...