HTTP 1.1和HTTP 2.0有什么区别?

233

HTTP / 1.1在过去的15年中为Web提供了良好的服务,但其年龄开始显现。

有人能解释一下HTTP 1.1和2.0之间的主要区别吗?

传输协议是否有任何变化?


3
这个视频看起来很适合讨论那些话题。https://www.youtube.com/watch?v=0L5Q_897fwk - Gujarat Santana
2
https://tools.ietf.org/html/rfc7540的“介绍”部分是区分HTTP 1.1和HTTP 2.0之间差异的最纯净和最好的来源。 - bayCoder
@bayCoder - 确实如此。我发现RFC介绍/摘要通常是最好的高层次概述主题之一。 - Alexey Shevelyov
2个回答

200

HTTP/2支持查询多路复用、头部压缩、优先级和更智能的分组流管理。这可以减少延迟,并加速现代Web页面上的内容下载。

更多详细信息请点击此处。


8
还有一个需要补充的是,HTTP/2 还规定了服务器推送。在这里阅读更多相关信息:https://en.wikipedia.org/wiki/HTTP/2_Server_Push - Nitin Bansal

94

HTTP 2.0是一种二进制协议,可以在单个(通常进行TLS加密的)TCP连接上复用多个流。

每个流的内容都是HTTP 1.1请求和响应,只是以不同的方式编码和打包。 HTTP2添加了许多功能来管理这些流,但保留了旧的语义。


43
TLS加密不是可选的。在协议中可能是可选的,但在现实世界中不可选。Chrome和其他浏览器将不接受没有https的http2连接。因此,在现实世界中,如果您启用了http2但未在服务器上安装证书,则浏览器将只能使用http1连接。 - Patrick Collins
@PatrickCollins 其实浏览器会连接HTTP2,但只是启动二进制数据流的下载。它们只是不知道如何在没有SSL的情况下显示HTTP2内容。 - Avamander
4
这个答案在声称http/2只是对http/1.1请求进行打包和编码方面存在误导。实际上两者有具体的区别,例如,头部和主体/负载分别发送。同时,头部格式稍作修改——在http/1.x中,方法、URI、响应代码和协议版本通过第一行传递,即请求行。Http/2引入了伪头(psuedoheaders)的概念,放置在所有其他头之前,并以“:”为前缀来处理这些方面,但协议版本没有相应的等价物。 - Erikest
3
HTTP头字段不区分大小写,但HTTP协议要求以小写形式传输。 - Erikest

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接