We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
问题:连接效率低下,传输速度低
问题:对带宽的利用率不理想 原因:
知识点: 慢启动和 TCP 连接之间相互竞争带宽是由于 TCP 本身的机制导致的,而队头阻塞是由于 HTTP/1.1 的机制导致的。
针对http1.1的缺点,HTTP2.0 的解决方案为:一个域名只使用一个TCP长连接和消除队头阻塞问题
问题:TCP的队头阻塞 例子:在 HTTP/2 中,多个请求是跑在一个 TCP 管道中的,如果其中任意一路数据流中出现了丢包的情况,那么就会阻塞该 TCP 连接中的所有请求,不同于 HTTP/1.1,使用 HTTP/1.1 时,浏览器为每个域名开启了 6 个 TCP 连接,如果其中的 1 个 TCP 连接发生了队头阻塞,那么其他的 5 个连接依然可以继续传输数据。所以随着丢包率的增加,HTTP/2 的传输效率也会越来越差。有测试数据表明,当系统达到了 2% 的丢包率时,HTTP/1.1 的传输效率反而比 HTTP/2 表现得更好。
思考: 既然TCP 协议存在队头阻塞和建立连接延迟等缺点,那我们是不是可以通过改进 TCP 协议来解决这些问题呢? 答案是:非常困难 原因:TCP 协议僵化
既然无法通过修改TCP协议来解决问题,那思路就是绕过 TCP 协议,因为中间设备的僵化,这些设备只认 TCP 和 UDP,所以选择在UDP协议的基础再实现一套功能
挑战
The text was updated successfully, but these errors were encountered:
No branches or pull requests
HTTP 1.0
问题:连接效率低下,传输速度低
HTTP1.1
问题:对带宽的利用率不理想
原因:
知识点: 慢启动和 TCP 连接之间相互竞争带宽是由于 TCP 本身的机制导致的,而队头阻塞是由于 HTTP/1.1 的机制导致的。
HTTP2.0
针对http1.1的缺点,HTTP2.0 的解决方案为:一个域名只使用一个TCP长连接和消除队头阻塞问题
问题:TCP的队头阻塞
例子:在 HTTP/2 中,多个请求是跑在一个 TCP 管道中的,如果其中任意一路数据流中出现了丢包的情况,那么就会阻塞该 TCP 连接中的所有请求,不同于 HTTP/1.1,使用 HTTP/1.1 时,浏览器为每个域名开启了 6 个 TCP 连接,如果其中的 1 个 TCP 连接发生了队头阻塞,那么其他的 5 个连接依然可以继续传输数据。所以随着丢包率的增加,HTTP/2 的传输效率也会越来越差。有测试数据表明,当系统达到了 2% 的丢包率时,HTTP/1.1 的传输效率反而比 HTTP/2 表现得更好。
思考: 既然TCP 协议存在队头阻塞和建立连接延迟等缺点,那我们是不是可以通过改进 TCP 协议来解决这些问题呢?
答案是:非常困难
原因:TCP 协议僵化
HTTP 3.0
既然无法通过修改TCP协议来解决问题,那思路就是绕过 TCP 协议,因为中间设备的僵化,这些设备只认 TCP 和 UDP,所以选择在UDP协议的基础再实现一套功能
挑战
The text was updated successfully, but these errors were encountered: