网络编程——HTTP2解决的问题

HTTP/1.1由于线头阻塞、Header冗余和TCP连接数限制等问题,已无法满足现代网络需求。HTTP/2通过二进制分帧、Header压缩和多路复用等特性,大幅提升了网页性能,减少了网络延迟,解决了HTTP/1.1的痛点。同时,服务推送功能允许服务器预发送资源,进一步优化加载速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTTP的现状

HTTP/1.1自从1999年发布以来已经很长时间了,随着互联网的爆炸式发展,从当初网页内容以文本为主,到现在以富媒体(如图片、声音、视频)为主。聊天、视频直播 等实时性应用越来越多, HTTP/1.1协议的特性,已经无法满足现代网络的需求了。

HTTP2.0是自1999年http1.1发布后的首个更新。
HTTP/2 相比于 HTTP/1.1,大幅度提高了网页的性能,只需要服务端升级到HTTP/2 协议就可以减少很多之前需要做的性能优化工作。

保持与HTTP 1.1语义的向后兼容性也是HTTP/2 的一个关键目标。

兼容问题以及如何优雅降级是国内还不普遍使用的原因。
现在,几乎所有互联网上的内容都采用了HTTP 1.1作为通信协议。

HTTP/1.1的缺陷

HTTP 1.1包含了太多细节和可选的部分,这让它变得过于庞大。
HTTP 1.1对网络延迟非常敏感。部分原因是HTTP pipelining还存有很多问题,大部分桌面浏览器选择默认关闭HTTP pipelining这一功能。

线头阻塞(Head-of-line blocking)

HTTP pipelining是这样一种技术:多个HTTP请求放到一个TCP连接中一一发送,而且不需要等待服务器对前一个请求的响应;客户端还是要按照发送请求的顺序来接收响应。这就像在超市收银台排队时一样,你并不知道前面的顾客会用时多久,如果前一个请求非常耗时(顾客磨蹭),那么后续请求都会受到影响,这就是所谓的线头阻塞(head-of-line blocking)。

近几年来网络带宽增长非常快,然而我们并没有看到网络延迟有对应程度的降低。网络延迟问题主要由于线头阻塞又叫队头阻塞(Head-Of-Line Blocking),导致带宽无法被充分利用。
队头阻塞是指当顺序发送的请求序列中的一个请求因为某种原因被阻塞时,在后面排队的所有请求也一并被阻塞,会导致客户端迟迟收不到数据。针对队头阻塞,人们尝试过以下办法来解决:

Header冗余信息多

Header 内容多,而且每次请求 Head

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值