学习WEB开发需要对HTTP协议熟悉,下面直接进入主题。

一、什么是报文

报文,是网络中交换和传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。

HTTP报文是由一行一行简单的字符串组成的。HTTP报文都是纯文本,不是二进制代码,所以人们可以很方便地对其进行读写。如果说HTTP是因特网的信使,那么HTTP报文就是它用来搬东西的包裹了。

二、报文的流动

报文会流入源端服务器,工作完成之后,会流会用户的Agent代理。

HTTP报文会像河水一样流动,不管是请求报文还是响应报文,所有报文都会向下游流动。所有报文的发送者都在接受者的上游。如下图所示,对请求报文来说,代理1位于代理3的上游,但对响应报文来说,它就位于代理3的下游。

三、报文的组成部分

HTTP报文是简单的格式化文本。如下图所示。每条报文都包含一条来自客户端的请求或者一条来自服务器的响应。它们由三部分组成:对报文进行描述的起始行、包含属性的首部块以及可选的、包含数据的主体部分。

所有的HTTP报文都可以分为两类:请求报文和响应报文。请求报文会向Web服务器请求一个动作。响应报文会将请求的结果返回给客户端。请求报文和响应报文的基本报文结构相同。

1、报文的语法

请求报文的格式:

[plain] view plaincopy
  1. <method> <request-URL> <version>
  2. <headers>
  3. <entity-body>

响应报文的格式

[plain] view plaincopy
  1. <method> <status> <reason-phrase>
  2. <headers>
  3. <entity-body>

下面是对报文格式各部分的解释:

method(方法)

客户端希望服务器对资源执行的动作。是一个单独的词,如:GET、HEAD、POST。

request-URL(请求URL)

命名了所请求资源,或者URL路径组件的完整URL。

version(版本)

报文所使用的HTTP版本,其格式:HTTP/<major>.<minor>

其中major(主要版本号)和minor(次要版本号)都是整数。

status(状态码)

由三位数字组成,描述了请求过程中所发生的情况。

reason-phrase(原因短语)

上面数字状态码的可读版本包含行终止序列之前的所有文本。

headers(首部)

可以有零个或多个首部,每个首部都包含一个名字,后面跟着一个冒号(:),然后是一个可选的空格,接着是一个值,最后是一个CRLF。首部是由一个空行(CRLF)结束的,表示了首部列表的结束和实体主体部分的开始,

entity-body(实体的主体部分)

包含一个由任意数据组成的数据块。并不是所有的报文都包含实体的主体部分。有时,报文只是以一个CRLF结束。

2、起始行

所有的HTTP报文都以一个起始行作为开始。请求报文的起始行说明了要做些什么。响应报文的起始行说明发生了什么。

请求行。请求报文请求服务器对资源进行一些操作。请求报文的起始行,称为请求行,包含一个方法和一个请求URL,方法描述了服务器应该执行的操作,请求URL描述了要对哪个资源执行这个方法。请求行还包含HTTP的版本,用来告知服务器,客户端使用的是哪种版本的HTTP。所有的这些字段都由空格符分隔。在HTTP/1.0之前,并不要求请求行中包含HTTP版本号。

响应行。响应报文承载了状态信息和操作产生的所有结果数据,将其返回给客户端。响应报文的起始行,称为响应行,包含了响应报文使用的HTTP版本、数字状态码,以及描述状态码的文本信息的原因短语。所有的这些字段都由空格符分隔。在HTTP/1.0之前,并不要求响应行中包含HTTP版本号。

方法。请求的起始行以方法作为开始,方法用来告知服务器要做些什么。

HTTP规范中定义了一组常用的请求方法。

注:并不是所有服务器都实现了上面列出的7种方法。而且,由于HTTP设计得易于扩展,所以除了这些方法以外,其他服务器可能还会是实现一些自己的请求方法,称为扩展方法。

状态码。用来告诉客户端,发生了什么事情。

客户端向一个HTTP服务器发送请求报文时,会发生很多事情。状态码是在每条响应报文的起始行中返回的。

下面是状态码的分类

原因短语。是响应起始行中最后一个组件。为状态码提供了文本形式的解释。例:200 OK中,OK就是原因短语。

版本号。为HTTP应用程序提供了一种将自己所遵循的协议版本告知对方的方式。版本号说明了应用程序支持的最高版本。版本好不会被当作小数来处理。版本的每个数字都回被当成一个单独的数字来处理。因此,每个数字都必须单独进行比较,以便确定哪个版本更高。比如,HTTP/2.22就比HTTP/2.3的版本更高,因为22比3大。

3、首部

首部字段向请求和响应报文中添加一些附加信息。从本质上来说,它们只是一些名/值对的列表。

首部分类:

通用首部

既可以出现在请求报文中,也可以出现在响应报文中

请求首部

提供更多有关请求的信息

响应首部

提供更多有关响应的信息

实体首部

描述主体的长度和内容,或者资源自身

扩展首部

规范中没有定义的新首部

常见首部实例:

4、实体的主体部分

HTTP报文的负荷。就是HTTP要传输的内容。

HTTP报文可以承载很多类型的数字数据:图片、视频、HTML文档、软件应用程序等。

参考文献:《HTTP权威指南》

HTTP协议之报文详解相关推荐

  1. STM32 MQTT协议 连接中国移动OneNet服务器 上传接收数据(二)MQTT协议常用报文详解

    STM32 MQTT协议 连接中国移动OneNet服务器 上传接收数据(二)MQTT协议常用报文详解 上一次我们讲了OneNet平台的注册,这次我们来讲一下MQTT的常用报文用法 上一篇地址https ...

  2. TCP协议中报文详解

    TCP协议中报文SYN.ACK.FIN.RST.PSH.URG详解 1. SYN:同步连接序号,TCP SYN报文就是把这个标志设置为1,来请求建立连接: 2. ACK:请求/应答状态.0为请求,1为 ...

  3. OSPF报文详解——LSA概述

    目录 一.OSPF报文详解: (1)---OSPF头部分析: (2)---hello字段分析: 二.LSA报文--链路状态通告 (1)---简介: (2)---头部信息: (3)---数据部分: 一. ...

  4. 虚拟路由器冗余协议VRRP原理详解!

    虚拟路由器冗余协议VRRP原理详解! https://virtual.51cto.com/art/201905/596666.htm?pc 我们知道,为了实现不同子网之间的设备通信,需要配置路由.目前 ...

  5. HTTP权威指南读书笔记(一)HTTP概述、URL和资源及报文详解

    一.HTTP概述 1.WEB客户端和服务器. 2.资源:资源可以是各种格式的静态文件,也可以是应用程序. 3.媒体类型 4.URI:统一资源标识符 URL:统一资源定位符. URL的第一部分称为方案: ...

  6. bgp 建立邻居发送的报文_bgp邻居建立过程及报文详解.doc

    bgp邻居建立过程及报文详解.doc 还剩 4页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 前缀长度和网络号8.当路由失效时,也发送 update ...

  7. http请求报文和相应报文详解

    Http协议的特点 HTTP协议的特点 基于请求/响应模型的协议. 请求和响应必须成对: 先有请求后有响应. 简单快捷 因为发送请求的时候只需要发送请求方式和请求路径即可 HTTP协议默认的端口:80 ...

  8. UDP和TCP的报文详解

    TCP和UDP报文详解 一.先说说端口号 TCP和UDP都是位于传输层的协议,传输层负责将数据从发送端传输到接收端. 端口号(Port)标识了一台主机上正在进行通信的一个具体的应用程序,在TCP/IP ...

  9. 传输协议之ICMP详解

    文章目录 TCP和UDP ICMP 简介 ICMP出现的原因 ICMP的用途 ICMP作为IP的上层协议在工作(报文) ICMP实现之MTU探索 ICMP实现之改变路由 ICMP实现之源点抑制 ICM ...

最新文章

  1. 计算机音乐情深深雨蒙蒙,情深深雨蒙蒙 MIDI File Download :: MidiShow
  2. 用户密码登录改造实现
  3. 视觉SLAM笔记(15) 李群与李代数
  4. php获取pid,在Shell脚本中获取指定进程的PID
  5. mysql 处理文件函数_mysql的字符串处理函数
  6. [译] 第二天:AngularJS - 认识AngularJS
  7. Introduction to the 80386
  8. 关于图像高速缩放算法,目前看到的最好的最清晰的一篇文章2
  9. win7系统gpt分区激活工具哪个好?
  10. qqkey获取原理_HIT我守护的一切手游电脑版苹果版有吗 HIT我守护的一切iOS电脑版模拟器...
  11. World Wind Java 系列
  12. matlab 非均匀采样,非均匀采样信号的频谱分析
  13. 北大元培学院数学与计算机,通识教育试验的尴尬 北京大学元培学院近距离观察...
  14. INTERCEPTOR DISCONNECTED 的问题
  15. Facebook批量养号分享
  16. 国产自研芯片取得的进展,连外媒都认可了,ARM真怕了
  17. 马宁伟-20年工作经验谈-4-男怕入错行
  18. 如何精确设计压铸模具的溢流槽和排气槽?| 智铸超云干货分享
  19. 什么是证券投资基金?
  20. 阅读文献Evaluation of dynamic route planning impact on vehicular communications with SUMO

热门文章

  1. ueditor多图片上传中去掉在线管理和图片搜索Tab页功能
  2. 安全测试演练环境搭建
  3. Android手机的休眠状态
  4. Gazebo仿真UUV水下机器人
  5. 今年江西供电服务公司录取人员年龄差竟在十岁以上?
  6. Excel单元格斜线分割线怎样插入?干货分享!如何将斜线分隔线加入单元格?
  7. onTouch事件中抬手时让View自动归位
  8. 加强个税纳税信用建设 严重失信者将被联合惩戒
  9. linux挂载外部磁盘目录,Linux挂载外部硬盘
  10. IDEA技巧汇总:这30个强大的功能,总有一个你能用上!