HTTP 2.0 详细介绍
什么是HTTP/2
HTTP/2是用于安全传输万维网内容的应用层协议。与其前身HTTP/1.1有很多相似之处,但它们有很多重要的不同之处。HTTP/2旨在使Web页面加载更快,同时提供更好的安全性和代码复杂性,而且还带来了一些新功能。
HTTP/2的优点
-
多路复用
HTTP/2采用二进制分帧,一个TCP连接可以传输多个二进制消息(请求/响应)。这使得连接利用率更高,在同一条连接上的多个请求可以并行进行(异步传输),不需要等待其它请求处理完成。此外,HTTP/2中还有一个优化机制:服务器可以对已经发出的响应与客户端未来请求的优先级进行关联,从而保证一些关键资源能够优先处理。 -
头部压缩
HTTP/2使用一种称为HPACK的新的头部压缩算法。 在HTTP/1.x中,头部信息是纯文本,需要消耗大量的带宽,而且重复出现的信息不必每次都重复发送。 HTTP/2利用HPACK算法在客户端和服务器之间减少网络流量,缩短加载时间。 -
服务器推送
HTTP/2引入了服务器推送的概念,服务器可以在响应客户端之前“预加载”资源,进一步加快页面渲染速度,而且不需要客户端明确要求。例如,如果客户端请求了一个HTML文档,服务器可以发送所请求的文档及其所链接到的资源,以便在客户端接收响应按钮之前加载这些资源。 -
更好的安全性
HTTP/2 对隐私和安全保护更加重视,引入了服务器证书证明机制,标准化了WhatsApp等应用程序使用的TLS吊销警告格式。
HTTP/2的示例
HTTP/1.1
GET / HTTP/1.1\r\n
Host: www.example.com\r\n
Connection: keep-alive\r\n
Cache-Control: max-age=0\r\n
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n
Referer: https://www.example.com/\r\n
Accept-Encoding: gzip, deflate, sdch\r\n
Accept-Language: en-US,en;q=0.8\r\n
\r\n
HTTP/2
PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n
GET / HTTP/2.0\r\n
Host: www.example.com\r\n
Connection: keep-alive\r\n
Cache-Control: max-age=0\r\n
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n
Referer: https://www.example.com/\r\n
Accept-Encoding: gzip, deflate, sdch\r\n
Accept-Language: en-US,en;q=0.8\r\n
\r\n
从上面两个示例可以看出,如果对于同一个请求,在HTTP/1.1中需要发送8行纯文本头部信息,而在HTTP/2中,只需发送一行头部信息即可。这是由于HTTP/2采用了头部压缩算法。此外,在HTTP/2中,服务器可以在响应客户端之前“预加载”资源,进一步加快页面渲染速度,在HTTP/1.1中则需要客户端明确要求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:HTTP 2.0 详细介绍 - Python技术站