假设主机H1正在寻求与H2建立TCP连接并为第一步三次握手发送SYN。然后H1在超时时没有回复,并且正在向H2发送第二个SYN。
然后,H1会回复这两个SYN。 H1在这种情况下做了什么 - 这两个中的哪一个确认它是握手的第3步,第一个来自H2或第二步的SYN + ACK?两个SYN + ACK具有2个不同的H2初始序列号(ISN)。它们也有不同的ACK-- H1在其两个SYN中发送了2个不同的ISN。
从另一点来看 - 在这种情况下,H2会做什么?所以 - H2接收到SYN并发送SYN + ACK以响应它。过了一会儿,H2从H1收到另一个SYN + ACK。 H2在这种情况下做了什么:
或
如何在TCP中处理?
TIA
注意:我看过What if a TCP handshake segment is lost?,TCP: SYN request receives SYN response instead of SYN-ACK,tcpip 3-way handshake和TCP handshake reliability以及其他一些有用的讨论。
// --------------------------------------------- ---
编辑:
答案似乎在于RST
标志 - 无论何时对序列#s有疑问,都要重置。参见RFC793的图9。
然而,Q仍然依据以下评论:H1何时出现(图9中的“TCP A”) 用它的新ISN重试连接 - 多长时间和在什么情况下?
答案 0 :(得分:2)
你的问题毫无意义。从序列号的角度来看,两个SYN都是相同的,并且两者都以相同的方式得到确认。
答案 1 :(得分:2)
图9中的情况发生在发送方已经放弃该连接之后,先前连接尝试的SYN到达时。主机B发送此额外SYN的ACK,主机A看到ACK的序列号错误。然后,主机A通过发送RST来中止连接。