Skip to content

TCP 连接管理 ​

三次握手与连接建立 ​

TCP 的 SYN、SYN 加 ACK、ACK 三步时序

两端各声明一个初始序列号,每个 SYN 消耗一个序列号。握手也可交换 MSS、窗口扩大等选项。连接建立与应用服务就绪是不同事件。

规范参考:TCP 规范 RFC 9293

连接关闭与四次挥手 ​

TCP 两个方向分别用 FIN 和 ACK 关闭

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 持久连接和应用心跳分别解决不同问题。探测成功不代表应用能正常响应。

基于 MIT 许可发布