主题
TCP 连接管理
三次握手与连接建立
两端各声明一个初始序列号,每个 SYN 消耗一个序列号。握手也可交换 MSS、窗口扩大等选项。连接建立与应用服务就绪是不同事件。
规范参考:TCP 规范 RFC 9293
连接关闭与四次挥手
FIN 和 ACK 可以合并,所以四次挥手是常见时序。RST 用于中止连接,语义不同于正常结束。
规范参考:TCP 规范 RFC 9293
TCP 半关闭、TIME_WAIT 与 CLOSE_WAIT
收到 FIN 并确认后,本地在关闭发送方向前处于 CLOSE_WAIT,应用读完数据后可观察到 EOF。常见主动关闭方在确认对端 FIN 后进入 TIME_WAIT。
TIME_WAIT 允许重发最后的 ACK,并隔离旧报文。长期 CLOSE_WAIT 应检查应用是否完成关闭。
长连接、短连接与 TCP Keepalive
长连接在多次业务交互之间复用连接,短连接用完即关闭。TCP Keepalive 是可选的空闲探测,达到失败阈值后可识别失效连接。
TCP 探测、HTTP 持久连接和应用心跳分别解决不同问题。探测成功不代表应用能正常响应。
