TCP 套接字连接是否具有“保持活动状态”?
与 HTTP 保持活动状态不同,TCP 套接字连接不会无限期地保持打开状态。相反,它们受到 TCP Keep-Alive 强制执行的超时限制。
简介
TCP 连接涉及两个套接字,每个套接字驻留在连接的一端。通常,这些套接字保持打开状态,直到一端终止连接(由 FIN 数据包指示)。但是,如果发生意外的套接字终止,TCP Keep-Alive 会检测并关闭过时的连接。
Keep-Alive Process
在 Linux 系统上,TCP Keep-Alive使用以下默认设置运行:
如果连接空闲时间超过 tcp_keepalive_time,则会向另一端发送 ACK 数据包。如果在指定次数的探测后没有响应,则通过 RST 终止连接。
问题
2 小时默认值: 默认,Keep-Alive 过程仅在 2 小时不活动后启动,这可能会导致过时的连接持续存在。
Keep-Alive 是可选的: 响应 Keep-Alive 数据包是可选的,并且某些实现可能会丢弃它们。
更改 TCP 超时
要修改 TCP 超时,请参阅以下特定于操作系统的说明:
Linux:
Mac OS X:
Windows:
以上是TCP 保持活动状态如何工作以及套接字连接保持打开状态多长时间?的详细内容。更多信息请关注PHP中文网其他相关文章!