HTTP报文
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP报文相关的知识,希望对你有一定的参考价值。
参考技术AHTTP协议在规范文档里详细定义了报文的格式,规定了组成部分,解析规则,还有处理策略,所以可以在 TCP/IP层之上实现更灵活丰富的功能,例如连接控制,缓存管理、数据编码、内容协商等等。
拿TCP报文来举例,它在实际要传输的数据之前附加了一个20字节 的头部数据,存储TCP协议必须的额外信息,例如发送方的端口号、接收方的端口号、包序号、标志位等等。有了这个附加的TCP头,数据包才能够正确传输,到了目的地后把头部去掉,就可以拿到真正的数据。
HTTP协议也是与TCP/UDP类似,同样也需要在实际传输的数据前附加一些头数据,不过与TCP/UDP不同的 是,它是一个“ 纯文本 ”的协议,所以头数据都是ASCII码的文本.
HTTP协议的请求报文和响应报文的结构基本相同,由三大部分组成:
这其中前两部分起始行和头部字段经常又合称为“ 请求头 ”或“ 响应头 ”,消息正文又称为“实体”,但与“header”对应,很多时候就直接称为“ body ”。
HTTP协议规定报文 必须有header ,但可以 没有body ,而且在header之后必须要有一个“空行”,也就 是“ CRLF ”,十六机制的“0D0A”。
了解了HTTP报文的基本结构后,我们来看看请求报文里的起始行也就是请求行(request line),它简要地描述了客户端想要如何操作服务器端的资源。
请求行由三部分构成:
这三个部分通常使用空格(space)来分隔,最后要用CRLF换行表示结束。
看完了请求行,我们再看响应报文里的起始行,在这里它不叫“响应行”,而是叫“状态行”(status line),意思是服务器响应的状态。
比起请求行来说,状态行要简单一些,同样也是由三部分构成:
请求行或状态行再加上头部字段集合就构成了HTTP报文里完整的请求头或响应头
头部字段是key-value的形式,key和value之间用“:”分隔,最后用CRLF换行表示字段结束。比如在“Host: 127.0.0.1”这一行里key就是“Host”,value就是“127.0.0.1”。HTTP头字段非常灵活,不仅可以使用标准里的Host、Connection等已有头, 也可以任意添加自定义头 ,这 就给HTTP协议带来了无限的扩展可能。
http协议之报文详解
用于HTTP协议交互的信息被称为HTTP报文。请求端(客户端)的http报文叫做请求报文,响应端的叫做响应报文。
HTTP报文本身是由多行(用CR+LF作为换行符)数据构成的字符串文本。
HTTP报文大致可以分为报文首部和报文主体两块。两者由最初出现的空行(CR+LF)来划分。通常,并不一定要有报文主体。
参考:
1. HTTP协议之报文详解
2. 图解http
以上是关于HTTP报文的主要内容,如果未能解决你的问题,请参考以下文章