HTTP的发展历程说明

0.阅读引用

HTTP的发展及起源

HTTP的发展历程-总结自用

HTTP/2 In Action 中文版

1.发展历程

1.1 文字的大致叙述

(1)HTTP0.9
(2)HTTP1.0
(3)HTTP1.1
(4)HTTP2.0
(5)HTTP3.0

HTTP的发展
http是一种超文本的传输协议,规定了客户端和服务的交互规范.

(1)http/0.9
只是一个草案
只有GET方法
只能传输纯文本
没有HEADER等描述数据的信息
服务器发送完毕,就关闭TCP连接

(2)http/1.0
增加POST、HEAD等方法
增加响应状态码
引入协议版本号
增加HEADER
传输不再仅限于文本
多字符集支持、多部分发送、权限、缓存等


(3)http/1.1-在1.0上增加一些功能,优化网络连接的过程
增加PUT、DELETE方法
增加缓存管理和控制
明确了缓存管理、允许持久连接
允许数据分块、利于大文件传输
强制要求host头

(4)http/2.0
二进制协议,不再要求纯文本
可以发起多个请求,废除1.1里面的管道
使用头部压缩
允许服务器主动向客户端推送消息
增强了安全性
HTTP2里面所有的数据都是以帧方式进行传输,所有同一个连接里面发送的多个请求不再需要按照顺序来,让web应用有了质的提升
头信息压缩以及推送等提高效率的功能
HTTP2的出现是为了解决HTTP1.1中效率低下的问题


(5)http/3.0
使用quic协议

1.2 图说明

 

2.基于优化的推进

2.1 HTTP/1.1

2.1.1 HTTP/1.1相对于HTTP1.0的优点

(1)使用TCP长连接的方式改善了 HTTP/1.0 短连接造成的性能开销;
(2)支持管道(pipeline)网络传输,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间.

2.1.2 HTTP/1.1待优化的点

HTTP/1.1待优化的点主要表现在性能上:
(1)请求/响应头部(Header)未经压缩就发送,首部信息越多延迟越大,只能压缩Body的部分;
(2)发送冗长的首部,每次互相发送相同的首部造成的浪费较多;
(3)服务器是按请求的顺序响应的,如果服务器响应慢,会招致客户端一直请求不到数据,也就是队头阻塞;
(4)没有请求优先级控制;
(5)请求只能从客户端开始,服务器只能被动响应.

2.2 HTTP/2.0

2.2.1 安全性

HTTP/2.0 协议是基于HTTPS的,所以 HTTP/2.0的安全性是有保障的.

2.2.2 性能上的优化

HTTP/2.0相比HTTP/1.1性能上的改进.

1.头部压缩
HTTP/2.0会压缩头(Header),如果你同时发出多个请求,他们的头是一样的或是相似的,那么协议会帮你
消除重复的部分.这就是所谓的HPACK算法:在客户端和服务器同时维护一张头信息表,所有字段都会存
入这个表,生成一个索引号,以后就不发送同样字段了,只发送索引号,这样就提高速度了.

2.二进制格式
HTTP/2.0不再像HTTP/1.1里的纯文本形式的报文,而是全面采用了二进制格式,头信息和数据体都是二
进制,并且统称为帧(frame):头信息帧和数据帧.
这样虽然对人不友好,但是对计算机非常友好,因为计算机只懂二进制,那么收到报文后,无需再将
明文的报文转成二进制,而是直接解析二进制报文,这增加了数据传输的效率.


3.数据流
HTTP/2.0的数据包不是按顺序发送的,同一个连接里面连续的数据包,可能属于不同的回应.因此,必
须要对数据包做标记,指出它属于哪个回应.每个请求或回应的所有数据包,称为一个数据流
(Stream).每个数据流都标记着一个独一无二的编号,其中规定客户端发出的数据流编号为奇数,服务
器发出的数据流编号为偶数.客户端还可以指定数据流的优先级.优先级高的请求,服务器就先响应该
请求.


4.多路复用
HTTP/2.0是可以在一个连接中并发多个请求或回应,而不用按照顺序一一对应.
移除了HTTP/1.1中的串行请求,不需要排队等待,也就不会再出现【队头阻塞】问题,降低了延
迟,大幅度提高了连接的利用率.
举例来说,在一个TCP连接里,服务器收到了客户端A和B的两个请求,如果发现A处理过程非常耗时,于是
就回应A请求已经处理好的部分,接着回应B请求,完成后,再回应A请求剩下的部分.


5.服务器推送
HTTP/2.0还在一定程度上改善了传统的【请求-应答】工作模式,服务不再是被动地响应,也可以主动向
客户端发送消息.
举例来说,在浏览器刚请求HTML的时候,就提前把可能会用到的JS、CSS文件等静态资源主动发给客户
端,减少延时的等待,也就是服务器推送(Server Push,也叫 Cache Push).

2.2.3 HTTP/2.0存在的问题

HTTP/2.0主要的问题在于,多个HTTP请求在复用一个TCP连接,下层的TCP协议是不知道有多少个HTTP请求
的.所以一旦发生了丢包现象,就会触发 TCP 的重传机制,这样在一个TCP连接中的所有的HTTP请求都必须
等待这个丢了的包被重传回来.

小小的拓展与比较:
HTTP/1.1 中的管道(pipeline)传输中如果有一个请求阻塞了,那么队列后请求也统统被阻塞住了;
HTTP/2.0 多个请求复用一个TCP连接,一旦发生丢包,就会阻塞住所有的 HTTP 请求。

2.3 HTTP/3.0

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值