文字+图解HTTP协议(二):HTTP简介

1.   HTTP 协议用于客户端和服务器端之间的通信

HTTP 协议规定:先从客户端开始建立通信,服务器端在没有接收到请 求之前不会发送响应HTTP 是不保存状态的协议,无状态(stateless的协议。HTTP 自身不对请求和响应之间的通信状态进行保存。目的:更快地处理大量事务,确保协议的可伸缩性

随着 Web 的不断发展,为实现期望的保持状态功能,引入了 Cookie 来管理状态。

2.    持久连接节省通信量

初始版本的 HTTP 协议每进行一次 HTTP 通信就要断开一次 TCP 。这种方式会造成无谓的TCP连接建立和断开,增加通信量的开销。为解决上述问题产生了持久连接(HTTP Persistent Connections)方法。 持久连接只要任意一端没有明确提出断开连接,则保持连接状态。持久连接使得多数请求可以以管线化(pipelining的方式发送:不用 等待响应,直接发送下一个请求。


3.    使用 Cookie 的状态管理

Cookie技术的引入使HTTP可以实现对客户端状态的控制。

Cookie 根据从服务器端发送的响应报文内的 Set-Cookie 首部字段信息,通知客户端保存 Cookie。当客户端再次往该服务器发送请求时,客户 端会自动在请求报文中加入 Cookie 值。服务器端发现客户端发送的 Cookie后检查是从哪一个客户端发来的连接请求,对比服务器上的记录,并得到之前的状态信息。

4.   HTTP 报文

用于HTTP协议交互的信息被称为 HTTP 报文。请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应报文。HTTP 报文本身是由多行数据构成的字符串文本,大致可分为报文首部和报文主体两块。

请求报文及响应报文的结构:

•  请求行:包含用于请求的方法和版本

•  状态行:包含表明响应结果的状态码,原因短语和版本

•  首部字段:包含表示请求和响应的条件和属性的首部,一般有通用首部、请求首部、响应首部和实体首部 4 种。


HTTP报文结构


在传输数据时,HTTP 可以按数据原貌直接传输,也可以在传输过程中通过编码提升传输速率,以消耗更多的 CPU 等资源为代价;

HTTP 协议中有一种类似于 ZIP 压缩的操作被称为内容编码。内容编 码指明应用在实体内容上的编码格式,对实体信息原样压缩。编码后的实体由客户端接收并解码。

传输大容量数据时可以通过把数据分割成多块,让浏览器逐步显示页 面,这种把实体主体分块的功能称为分块传输编码(Chunked Transfer Cod- ing)。分块传输编码的实体主体也由接收的客户端负责解码。

HTTP 协议可以采纳多部分对象集合,这时发送的一份报文主体内可含有多类型实体。通常是在图片或文本文件等上传时使用。注意: 1)多部分对象集合的每个部分类型中都可以含有首部字段;2)可以在某个部分中嵌套使用多部分对象集合。

HTTP可以实现获取部分内容的范围请求,用于恢复(从之前下载中断处恢复下载)范围请求使 用首部字段 Range 来指定资源的 byte 范围。

同一个 Web 网站可能存在着多份相同内容的页面(如英语版和中文版),访问相同 URI 的 Web 页面时,显示对应版本的 Web 页面。这样的机 制称为内容协商(Content Negotiation)。协商过程:客户端和服务器端就响应的资源内容进行交涉,然后以 应资源的语言、字符集、编码方式等作为判断基准,提供给客户端最为适合的资源。内容协商技术有 3 种类型:服务器驱动协商、客户端驱动协商和透明协商。


5.   HTTP首部

首部字段传递重要信息:为浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容。类型有三种:1)通用首部字段(General Header Fields),请求和响应报文都会使用;2)请求首部字段(Request Header Fields),请求报文使用,3)响应首部字段(Response Header Fields)响应报文时使用,4)实体首部字段(Entity Header Fields),请求和响应报文的实体部分使用。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容