什么是协议
我们生活的世界上有各种各样的协议, 例如租房有租房协议,工作也会签一份劳动合同也是一种协议。
租房有租房协议,规定好了租户与房东之间的权利与义务, 劳动合同也规定了公司与打工者各自的权利也义务。
所以什么是协议呢? 我认为, 协议就是对发生社会行为双方的一种约束和规范。
http协议
http协议是一个应用层网络协议, 他是对网络上通信双方应用层程序约束和规范。
使用http协议的双方在网络中的通信方式为请求应答的方式,即客户端发起请求,服务端响应请求。 我们把发起请求一端的报文称为请求报文,响应请求一端的报文称为应答报文。
应用层除了http协议还有如:dns协议、用于连接数据库的mysql协议、用于进行双工通信的websocket协议、用于远程登录的telnet协议等等。
http协议的组成
在网络中, http报文分为请求报文和应答报文。
其中请求报文由:请求行、请求头、空行、请求正文组成
应答报文:状态行、应答头、空行、应答正文组成
http的历史
http/0.9
1989年工作与欧洲核子研究所的蒂姆伯纳斯李博士提出了一份关于建立一个通过网络传输超文本系统的报告。到1990年正式更名为万维网(World wide web), 他由四部分组成:
- 超文本标记语言HTML
- 文本交换协议http;
- 超文本显示器,即浏览器;
- 一个服务器
http/1.0
由于http0.9的局限性,http/1.0由1994年被发布。
http/1.0在http/0.9解决了如下的问题:
- 在请求行新增了协议版本;
- 增加了响应状态码, 让客户端可以根据状态码;
- 引入和http头的概念, 更加方便了协议的扩展;
- 增加了传输其他内容的能力。
http/1.1
HTTP/1.1 消除了大量歧义内容并引入了多项改进:
1.连接可以复用,节省了多次打开 TCP 连接加载网页文档资源的时间。
2.增加管线化技术,允许在第一个应答被完全发送之前就发送第二个请求,以降低通信延迟。
- 支持响应分块。
4.引入额外的缓存控制机制。
5.引入内容协商机制,包括语言、编码、类型等。并允许客户端和服务器之间约定以最合适的内容进行交换。
6.凭借 Host 标头,能够使不同域名配置在同一个 IP 地址的服务器上。
http/2.0
2015 年 5 月正式标准化.
在http/1.1的基础上有几处的不同:
- HTTP/2 是二进制协议而不是文本协议。不再可读,也不可无障碍的手动创建,改善的优化技术现在可被实施。
- 这是一个多路复用协议。并行的请求能在同一个链接中处理,移除了 HTTP/1.x 中顺序和阻塞的约束
- 压缩了标头。因为标头在一系列请求中常常是相似的,其移除了重复和传输重复数据的成本
- 其允许服务器在客户端缓存中填充数据,通过一个叫服务器推送的机制来提前请求