当前位置: 首页 > article >正文

TCP Keepalive 和 HTTP Keep-Aliv

HTTP的Keep-Alive

在http1.0的版本中,它是基于请求-应答模型和TCP协议的,也就是在建立TCP连接后,客户端发送一次请求并且接收到响应后,就会立马断开TCP连接,称为HTTP短连接,这种方式比较耗费时间以及浪费资源。

keep-alive就是用来解决短连接,实现长连接的,也就是在一个TCP连接中,可以发送多个HTTP请求、接收多个响应。要开启keep-alive,就是往请求头和响应头中都添加Connection:keep-alive字段

  • 1.0默认是关闭,如果要开启,游览器就需要往请求头中添加Connection:keep-alive字段,服务端收到后也要往响应头中添加Connection:keep-alive字段

  • 1.1默认是开启的,如果要关闭,游览器中的请求头添加Connection:close字段

同时,为了避免长时间占用TCP连接而不进行请求的发送,造成的资源浪费,服务端会有一个keepalive-timeout参数来控制HTTP长连接的超时时间,如果在超时时间内都没有请求发送,服务端就会主动断开连接

TCP的keepalive

TCP的keepalive实际上是TCP的保活机制,由内核实现发送探测报文,用来确定tcp连接是否还有效。

当TCP连接的两端长时间没有进行数据交互,达到了触发TCP保活机制的条件,内核就会发送探测报文

  • 如果能收到响应,说明连接是正常的,tcp的保活时间就会重置

  • 如果收不到响应,说明连接是不正常的,有可能是对方的主机宕机了,或者是其他原因导致的报文不可达,再决定是否关闭该TCP连接。

    (注意这里是对方主机宕机,而不是对方进程崩溃。如果是进程崩溃,操作系统在回收资源的时候会发送FIN报文,来告知对方关闭TCP连接。而主机宕机,对方是感知不到的)

总结

  • HTTP的keep-alive是HTTP的长连接,由应用程序实现,能够在一个TCP连接发送和接收多个请求和响应,减少HTTP短连接带来的多次TCP连接建立和释放的开销

  • TCP的keep-alive是TCP的保活机制,由内核实现,当客户端和服务端长时间没有通信时,内核为了确定连接是否还有效,就会发送探测报文来检测连接是否正常


http://www.kler.cn/news/163180.html

相关文章:

  • ros2/ros安装ros-dep||rosdep init错误
  • 贝锐花生壳3大安全能力,保障网络服务安全远程连接
  • 通信协议 远程调用RPC
  • eve-ng山石网科HillStone镜像部署
  • HarmonyOS开发(九):数据管理
  • 【已解决】SpringBoot Maven 打包失败:class lombok.javac.apt.LombokProcessor 错误
  • 【ARMv8 SIMD和浮点指令编程】浮点数据转换指令——数据类型互转必备
  • 【精选】设计模式——工厂设计模式
  • 反向传播算法
  • 分析阿里巴巴的微服务依赖图和性能
  • 生产上线需要注意的安全漏洞
  • 【优选算法系列】【专题二滑动窗口】第四节.30. 串联所有单词的子串和76. 最小覆盖子串
  • 详解Keras3.0 Models API: Model class
  • Linux gtest单元测试
  • 基于Java医院挂号管理系统
  • sql2005日志文件过大如何清理
  • C/C++,优化算法——双离子推销员问题(Bitonic Travelling Salesman Problem)的计算方法与源代码
  • 二分查找|前缀和|滑动窗口|2302:统计得分小于 K 的子数组数目
  • linux常用命令-pip命令详解(超详细)
  • 判断css文字发生了截断,增加悬浮提示
  • 一. 初识数据结构和算法
  • StoneDB-8.0-V2.2.0 企业版正式发布!性能优化,稳定性提升,持续公测中!
  • 十七、FreeRTOS之FreeRTOS事件标志组
  • 麒麟系统进入救援模式或者是crtl D界面排查方法
  • Linux下通过find找文件---通过修改时间查找(-mtime)
  • 网络工程师【目录】
  • Python 潮流周刊#29:Rust 会比 Python 慢?!
  • 初识人工智能,一文读懂人工智能概论(1)
  • win10 笔记本卡顿优化
  • 二叉树的遍历之迭代遍历