HTTP/1.x keep-alive 是什么

  • 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

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

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

HTTP/2 多路复用

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

  • HTTP/1.x 虽然引入了 keep-alive 长连接,但它每次请求必须等待上一次响应之后才能发起

HTTP/2 是怎么做的?

  • 引入了 帧(frame)和流(stream),因为 HTTP/1.x 是基于文本的,因为是文本,就导致了它必须是个整体,在传输是不可切割的,只能整体去传
  • HTTP/2 是基于二进制流的,它就可以把 HTTP 消息分解为独立的帧,交错发送,然后在另一端通过帧中的标识重新组装,这就是多路复用

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

  • HTTP/1.x 是基于文本的,只能整体去传;HTTP/2 是基于二进制流的,可以分解为独立的帧,交错发送
  • HTTP/1.x keep-alive 必须按照请求发送的顺序返回响应;HTTP/2 多路复用不按序响应
  • HTTP/1.x keep-alive 为了解决队头阻塞,将同一个页面的资源分散到不同域名下,开启了多个 TCP 连接;HTTP/2 同域名下所有通信都在单个连接上完成
  • HTTP/1.x keep-alive 单个 TCP 连接在同一时刻只能处理一个请求(两个请求的生命周期不能重叠);HTTP/2 单个 TCP 同一时刻可以发送多个请求和响应

keep-alive和多路复用相关推荐

  1. 长文慎入!经验分享-专科毕业5年,成功入职腾讯!

    原文:https://zhuanlan.zhihu.com/p/265147335 从我开始做前端的时候,我就发誓我必须要进BAT,作为一个只是普通大专毕业的我,也没有大厂的工作背景,其实对于30岁甚 ...

  2. 专科毕业五年,我进腾讯了!

    点击上方"程序员黑叔",选择"置顶或者星标" 你的关注意义重大! 作者:Lam 链接:https://zhuanlan.zhihu.com/p/26514733 ...

  3. QUIC浅析,android开发者模式

    下图是HTTP Over TLS1.2首次连接的握手,其中TCP的第三次握手和TLS的第一次握手结合: 这个过程由于太长,在复杂的网络情况下的连接建立容易产生较大时延,所以优化的方向比较统一:在保证安 ...

  4. 毕业五年,专科学历的小哥逆袭进腾讯,演绎什么叫努力就有收获!

    点击"开发者技术前线",选择"星标????" 让一部分开发者看到未来 作者:Lam 链接:https://zhuanlan.zhihu.com/p/265147 ...

  5. Redis 笔记(12)— 单线程架构(非阻塞 IO、多路复用)和多个异步线程

    Redis 使用了单线程架构.非阻塞 I/O .多路复用模型来实现高性能的内存数据库服务.Redis 是单线程的.那么为什么说是单线程呢? Redis 在 Reactor 模型内开发了事件处理器,这个 ...

  6. 漫谈五种IO模型(主讲IO多路复用)

    首先引用levin的回答让我们理清楚五种IO模型 1.阻塞I/O模型 老李去火车站买票,排队三天买到一张退票. 耗费:在车站吃喝拉撒睡 3天,其他事一件没干. 2.非阻塞I/O模型 老李去火车站买票, ...

  7. Python:通过一个小案例深入理解IO多路复用

    通过一个小案例深入理解IO多路复用 假如我们现在有这样一个普通的需求,写一个简单的爬虫来爬取校花网的主页 import requests import timestart = time.time()u ...

  8. java nio原理 epoll_多路复用 Select Poll Epoll 的实现原理(BIO与NIO)

    BIO blocking阻塞的意思,当我们在后端开发使用的时候,accetp 事件会阻塞主线程. 当accept事件执行的时候,客户的会和服务建立一个socket 连接.一般后端就会开启一个线程执行后 ...

  9. 【面试必问】支撑百万并发的IO多路复用技术你了解吗?

    多路复用其实并不是什么新技术,它的作用是在一个通讯连接的基础上可以同时进行多个请求响应处理.对于网络通讯来其实不存在这一说法,因为网络层面只负责数据传输:由于上层应用协议的制订问题,导致了很多传统服务 ...

  10. 硬件断点反跳似乎_高性能应用程序:多路复用,反跳,系统字体和其他技巧

    硬件断点反跳似乎 by Atila Fassina 通过阿蒂拉·法西纳(Atila Fassina) 高性能应用程序:多路复用,反跳,系统字体和其他技巧 (High Performance Apps: ...

最新文章

  1. 机器学习(十七)——决策树, 推荐系统进阶
  2. 如何确定oracle进程,Oracle DBWR进程的工作流程以及和其他进程的协调工作!
  3. vaadin ---用maven创建vaadin 的工程
  4. 纹理特征描述之自相关函数法 纹理粗糙性与自相关函数的扩展成正比 matlab代码实现
  5. MEncoder的基础用法—6.1. 选择编解码器及容器格式
  6. HDU1317 —— 最长路+判断正环
  7. 架构图、流程图、结构图、功能图、逻辑图
  8. 地图投影(一)高斯克吕格投影
  9. Java代码利用aspose-words将word文档转换成pdf和图片格式(PNG,JPG,JPEG破解 无水印)
  10. 如何传输本地文件到服务器,本地传输文件到服务器
  11. STM32开发环境搭建——Keil5
  12. 《上帝给我一个任务,叫我牵一只蜗牛去散步》
  13. Laravel sms短信验证码
  14. 微软edge浏览器安装包下载地址-Microsoft edge download
  15. Java后端利用腾讯云短信服务发短信
  16. 综合评价的基本理论和数据预处理
  17. SQL实战(2)——国庆期间每类视频点赞量和转发量
  18. [编程题]蓄水池大作战 Golang 面相对象 无需算法 有手就行
  19. 杰理之二代手表原理图【篇】
  20. 【C语言】求两个整数的最大公约数和最小公倍数,用一个函数求最大公约数。用另一个函数根据求出的最大公约数求最小公倍数。

热门文章

  1. Linux常用命令(第二版) --文件搜索命令
  2. 招兵买马,韩国现代将前GM研究员招致麾下
  3. 《数学与泛型编程:高效编程的奥秘》一1.4 各章概述
  4. openstack kvm 虚拟机磁盘差异衍生
  5. 组策略对应于注册表位置汇总
  6. 鼠标指向变成英文导航(CSS)_网页代码站(www.webdm.cn)
  7. 你用好了没?K8 CPU使用指南
  8. 关于读入带空格的字符串与输入输出重定向
  9. 信息学奥赛一本通(1252:走迷宫)
  10. 信息学奥赛一本通(1232:Crossing River)