【发布时间】:2017-08-02 11:33:13
【问题描述】:
我正在阅读“UNIX 网络编程:套接字 API”,其中提到 SCTP 不需要 TIME_WAIT 状态,因为 TCP 使用了验证标签。为什么会这样?我理解为什么验证标签解决了重复数据包的问题,因为接收方可以确定数据包是否是当前 SCTP 关联的一部分,但最终的 SCTP SHUTDOWN-COMPLETE 数据包肯定会丢失,就像 TCP 中的最终 ACK 一样丢失,因此执行主动关闭的对等方仍然必须保持某种状态来处理此事件,就像使用 TCP 一样。
【问题讨论】:
-
TIME_WAIT 防御未来的数据包,而不是 ACK 丢失。
-
TIME_WAIT 两者都有;如果客户端执行主动关闭并且其最终的 TCP ACK 出于某种原因没有发送到服务器,则服务器将重新发送其 FIN(因为 TCP 是可靠的协议),因此客户端需要维护状态信息以允许它重新发送其最终的 ACK
标签: sockets tcp sctp time-wait