【发布时间】:2016-09-14 00:05:27
【问题描述】:
我刚刚查找了关于 TIME_WAIT 暗杀的 RFC1337,这是其中的一部分。
图 1 显示了 TIME-WAIT 暗杀的示例。 1-5 段
完全复制自 RFC-793 的图 13,显示正常关闭
握手。数据包 5.1、5.2 和 5.3 是对此的扩展
序列,说明 TWA。这里的 5.1 是任何旧段
TCP A 不能接受的。它可能是不可接受的,因为它的
序列号或由于旧的 PAWS 时间戳。在任一情况下, TCP A 为其当前的 SND.NXT 和 RCV.NXT 发送一个 ACK 段 5.2。
由于它没有此连接的状态,因此 TCP B 将其反映为 RST 段 5.3,在 A! 处暗杀 TIME-WAIT 状态**
RFC 1337 TCP TIME-WAIT Hazards May 1992 TCP A TCP B 1. ESTABLISHED ESTABLISHED (Close) 2. FIN-WAIT-1 --> <SEQ=100><ACK=300><CTL=FIN,ACK> --> CLOSE-WAIT 3. FIN-WAIT-2 <-- <SEQ=300><ACK=101><CTL=ACK> <-- CLOSE-WAIT (Close) 4. TIME-WAIT <-- <SEQ=300><ACK=101><CTL=FIN,ACK> <-- LAST-ACK 5. TIME-WAIT --> <SEQ=101><ACK=301><CTL=ACK> --> CLOSED - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1. TIME-WAIT <-- <SEQ=255><ACK=33> ... old duplicate 5.2 TIME-WAIT --> <SEQ=101><ACK=301><CTL=ACK> --> ???? 5.3 CLOSED <-- <SEQ=301><CTL=RST> <-- ???? (prematurely) **
现在,让我感到困惑的是,在 TCP/IP 插图卷 1 中,它说的是:
当连接在 2MSL 等待被丢弃。
那么,为什么 RFC 1337 的图 1 中的 TCP A ACK 旧的重复段?
【问题讨论】:
-
延迟段是否暗示应用程序有效负载数据,而不是 tcp 控制数据?不是“确认” TIME-WAIT 状态告诉您该连接的状态是什么?
-
@SqlSurfer RFC:“这里 5.1 是 TCP A 不可接受的任何旧段”,似乎他没有指定段类型。
-
而且我无法弄清楚“难道不是“确认”TIME-WAIT 状态告诉您该连接的状态是什么吗?”意思是因为我的英语水平很差......
标签: tcp