HTTP/1.x 的 keep-alive与 HTTP/2 多路复用的区别是什么?

发布时间:2021-06-22 14:03:36 作者:chen
来源:亿速云 阅读:422

本篇内容介绍了“HTTP/1.x 的 keep-alive与 HTTP/2 多路复用的区别是什么?”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

引言

本文分为以下三部分循序渐进走进 HTTP/1.x 的 keep-alive 与 HTTP/2 多路复用:

下面正式开始吧

HTTP/1.x keep-alive 是什么

在一文走进 TCP 与 HTTP 中,我们介绍过,HTTP 协议是建立在 TCP 协议上的应用层协议, HTTP  协议最初是一个非常简单的协议,通信方式也是采取简答的请求-应答的模式,即:客户端与服务器端的的每次请求都需要创建 TCP 连接,服务器响应后断开 TCP  连接,再请求再创建断开。

HTTP/1.x 的 keep-alive与 HTTP/2 多路复用的区别是什么?

在 HTTP/0.9 与 早期 HTTP/1.0 中,默认的就是这种,但这种频繁的创建、断开连接无疑是极大的消耗性能

TCP连接的新建成本很高,因为客户端和服务器建立连接时需要“三次握手”,发送 3 个数据包,需要 1 个 RTT;关闭连接是“四次挥手”,4 个数据包需要  2 个 RTT,并且开始时发送速率较慢(slow start),随着网页加载的外部资源越来越多,这个问题就愈发突出了

所以 HTTP/1.0 引入了 keep-alive 长连接,HTTP/1.0 中是默认关闭的,可以通过 Connection: keep-alive;  开启 ,HTTP/1.1 默认是开启的,无论加没加 Connection: keep-alive;

所谓长连接,即在 HTTP 请求建立 TCP 连接时,请求结束,TCP  连接不断开,继续保持一段时间(timeout),在这段时间内,同一客户端向服务器发送请求都会复用该 TCP 连接,并重置 timeout 时间计数器,在接下来  timeout 时间内还可以继续复用 TCP 。这样无疑省略了反复创建和销毁 TCP 连接的损耗。

HTTP/1.x 的 keep-alive与 HTTP/2 多路复用的区别是什么?

timeout 时间到了之后,TCP会立即断开连接吗?

若两小时(timeout)没有收到客户的数据,服务器就发送一个探测报文段,以后则每隔 75 秒发送一次。若一连发送 10  个探测报文段后仍无客户的响应,服务器就认为客户端出了故障,接着就关闭这个连接。

——摘自谢希仁《计算机网络》

HTTP/2 多路复用

为什么 HTTP/2 引入多路复用?

这是因为:

HTTP/2 是怎么做的喃?

HTTP/1.x 的 keep-alive与 HTTP/2 多路复用的区别是什么?

HTTP/1.x keep-alive 与 HTTP/2 多路复用区别

总结一下,HTTP/1.x keep-alive 与 HTTP/2 多路复用区别:

“HTTP/1.x 的 keep-alive与 HTTP/2 多路复用的区别是什么?”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. keep-alive遇见vue-router
  2. Vue中keep-alive组件的深入理解

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

keep-alive

上一篇:怎么从链表中取出元素中某个字段,并拼接成字符串

下一篇:Kube-Eventer的操作介绍

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》