HTTP 通信过程包括从客户端发往服务器端的请求及从服务器端返回客户端的响应。本节就让我们来了解一下请求和响应是怎样运作的。
1.HTTP协议用于客户端和服务器端之间的通信
HTTP报文:用于HTTP协议交互的信息被称为HTTP报文。
请求报文:客户端的HTTP报文叫做请求报文。
响应报文:服务器端的报文叫做响应报文。
HTTP报文本身是由多行(用CR+LF作换行符)数据构成的字符串文本。
HTTP报文的结构 | 详细描述 |
---|---|
报文首部 | 服务器端或客户端需处理的请求或响应的内容及属性 |
空行(CR+LF) | CR(Carriage Return,回车符:16进制0x0d)和LF(Line Feed,换行符:16进制0x0a) |
报文主体 | 应被发送的数据 |
2.请求报文及响应报文的结构
2.1请求报文
上边提到报文首部,请求报文首部包括:
- 请求行
- 请求首部字段
- 实体首部字段
- 其他
例如:
2.2响应报文
响应报文的首部字段:
- 状态行
- 响应首部字段
- 通用首部字段
- 实体首部字段
- 其他
例如:
2.3对上述内容进行描述
请求行:包含用于请求的方法,请求URI和HTTP版本。
状态行:包含表明响应结果的状态码,原因短语和HTTP版本。
首部字段:一般有4种首部,分别是:通用首部、请求首部、响应首部和实体首部。
其他:可能包含HTTP的RFC里未定义的首部(Cookie等)。
3.编码提升传输速率
HTTP在传输数据时可以按照数据原貌直接进行传输,也可以在传输的过程中通过编码提升传输速率。通过在传输时编码,能有效地处理大量的访问请求。但编码的操作需要计算机来完成,因此会消耗更多的CPU等资源。
3.1本文主体和实体主体的差异
报文(message):
报文是HTTP通信中的基本单位,由8位组字节流组成,通过HTTP通信传输。
实体(entity):
作为请求或响应的有效荷载数据被传输,是由实体首部和实体主体构成的。
HTTP 报文的主体用于传输请求或响应的实体主体。
通常,报文主体等于实体主体。只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异。
3.2 压缩传输的内容编码
我们知道讲文件压缩为ZIP文件,可以使得文件的容量变小,在HTTP协议中,有一种被称为内容编码的功能也能进行类似的操作。
内容编码指明应用在实体内容上的编码格式,并保持实体信息原样压缩。内容编码后的实体由客户端接受并负责解码。(翻译:服务器将内容压缩后,传输给客户端,客户端根据编码格式进行解压获得到复原的文件)
常用的内容编码有以下几种:
- gzip(GNU zip)
- compress(UNIX系统的标准压缩)
- deflate(zlib)
- identity(不进行编码)
下节我们继续针对HTTP报文内的HTTP信息进行讲解。
原创文章,作者:王得宇AIPM,如若转载,请注明出处:https://www.pmtemple.com/silence/11164/