4.15 TCP Keepalive 和 HTTP Keep-Alive 是一个东西吗?

目录

[HTTP 的 Keep-Alive](#HTTP 的 Keep-Alive)

[TCP 的 Keepalive](#TCP 的 Keepalive)

总结:


HTTP的Keep-Alive,是应用层(用户态)实现的,称为HTTP长连接;

TCP的Keepalive,是由TCP层(内核态)实现的,称为TCP保活机制。

HTTP 的 Keep-Alive

HTTP协议采用的是 请求-应答 模式,客户端发起请求,服务端返回响应,一来一回。

Keep-Alive 就是实现了可以使用同一个 TCP 连接来发送和接收多个 HTTP 请求/应答,避免了连接建立和释放的开销,这个方法称为 HTTP 长连接

请求的包头中添加:(从 HTTP 1.1 开始, 就默认是开启了 Keep-Alive

复制代码
Connection: Keep-Alive

为了避免资源浪费的情况,web 服务软件一般都会提供 keepalive_timeout 参数,用来指定 HTTP 长连接的超时时间。 定时器的时间一到,就会触发回调函数来释放该连接。

TCP 的 Keepalive

TCP 的 Keepalive 这东西其实就是 TCP 的保活机制, 需要通过 socket 接口设置 SO_KEEPALIVE 选项才能够生效。该功能是由「内核」实现的,当客户端和服务端长达一定时间没有进行数据交互时,内核为了确保该连接是否还有效,就会发送探测报文,来检测对方是否还在线,然后来决定是否要关闭该连接。

总结:

HTTP 的 Keep-Alive 也叫 HTTP 长连接,该功能是由「应用程序」实现的,可以使得用同一个 TCP 连接来发送和接收多个 HTTP 请求/应答,减少了 HTTP 短连接带来的多次 TCP 连接建立和释放的开销。

TCP 的 Keepalive 也叫 TCP 保活机制,该功能是由「内核」实现的,当客户端和服务端长达一定时间没有进行数据交互时,内核为了确保该连接是否还有效,就会发送探测报文,来检测对方是否还在线,然后来决定是否要关闭该连接。

相关推荐
木昆子15 分钟前
大模型流式输出:七大底层传输技术对比探究
人工智能·http·ai编程
2501_938791831 小时前
Rust Axum 框架开发后端服务:实现高性能 TCP 连接的处理逻辑
网络·tcp/ip·rust
北极光SD-WAN组网3 小时前
5G智慧网络如何实现异地组网?基于智能组网模块的解决方案解析
网络·5g
刘孬孬沉迷学习3 小时前
5G网络gNB与核心网(5GC)连接架构及传输协议
网络·网络协议·tcp/ip·5g·架构·udp·信息与通信
Xiaok10183 小时前
libpcap 抓包:从打开网卡到解析数据包
服务器·网络·php
不像程序员的程序媛3 小时前
Linux本机ping虚机ip Network unreachable
linux·运维·tcp/ip
爱奥尼欧3 小时前
【Linux笔记】网络部分——传输层协议TCP(1)
linux·运维·网络·笔记·tcp/ip·1024程序员节
lang201509283 小时前
WebSocket子协议STOMP
网络·websocket·网络协议
饺子大魔王的男人4 小时前
3秒传输GB级文件:FastSend让P2P共享告别云存储依赖
网络·网络协议·p2p
在坚持一下我可没意见4 小时前
Java 网络编程:TCP 与 UDP 的「通信江湖」(基于TCP回显服务器)
java·服务器·开发语言·笔记·tcp/ip·udp·java-ee