有关http的那些事

时间:2021-04-20 01:39:59

http是构建于tcp/ip协议之上的,是无连接无状态的。

http1.1与http1.0的区别

缓存处理

http1.0主要借助Expires、if-modified-since来进行缓存的判断。
http1.1中新增了Etag与if-none-match字段。

带宽优化及网络连接

http1.1在请求头中引入了range字段,允许只请求资源的某一部分,返回码是206

长连接

http1.1支持长连接,即在一个tcp连接上传送多个http请求和响应,减少了建立和关闭连接的消耗和延迟。
在http1.1中默认开启connection:keep-alive。

SPDY

SPDY是google提出的协议,可以说是综合了HTTPS和HTTP两者有点于一体的传输协议:
有关http的那些事

降低延迟

SPDY采取了多路复用,通过多个请求stream共享一个tcp连接的方式来降低延迟并提高带宽利用率。

请求优先级

多路复用带来一个新的问题是,在连接共享的基础之上有可能会导致关键请求被阻塞。
SPDY允许给每个request设置优先级,这样重要的请求就会优先得到响应。

header压缩

基于ssl的加密传输

服务端推送

HTTP2.0

http2.0是基于SPDY设计的,有以下新特性:

二进制格式

http1系列是基于文本的,而HTTP/2 采用二进制格式传输数据

多路复用

一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面。

有关http的那些事

header压缩

HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用HPACK来对头部进行压缩。
HPACK使用一份索引表来定义常用的HTTP Header,把常用的HTTP Header存放在表里,请求的时候只需要发送表里的索引位置即可。

HPACK 不仅仅通过索引键值对来降低数据量,同时还会将字符串进行霍夫曼编码来压缩字符串大小。

服务端推送

同SPDY一样,HTTP2.0也具有server push功能。