【问题标题】:Does a TCP peer reset the connection after exhaust the send retry counter?TCP 对等方是否在发送重试计数器耗尽后重置连接?
【发布时间】:2013-08-31 22:21:14
【问题描述】:

假设一个 Windows TCP 对等方发送一个 TCP 数据包,而远程对等方没有确认它,也没有重置连接(内核崩溃、电源/硬件故障等)

发送重试计数器耗尽后,Windows 对等方是否重置连接?

TCP RFC 是否对此有所说明?

阅读以下句子后,我产生了疑问(在本页http://support.microsoft.com/kb/169292/en-us的“重新传输行为”段落中):

计算机“X”的重试次数用尽后,您可能看不到“重置” 马上。如果计算机“Y”最终响应,那么计算机“X”可能会 重置连接。

提前感谢并原谅我的初级英语。

问候

【问题讨论】:

    标签: windows tcp network-protocols


    【解决方案1】:

    在整个发送窗口都没有 ACK 的情况下,发送方假定对等方已经离开,并在重试后静默清理连接(在此阶段没有发送 FIN 或 RST)。

    如果对等方实际上还活着并在旧连接上发送数据包,则发送方将发送 RST。

    【讨论】:

    • 非常感谢 jman。我有另一个问题!如果我尝试使用来自同一进程的另一个线程的相同套接字(在未收到 ACK 之后)会发生什么情况。谢谢!
    • 如果服务器上仍然存在旧连接,但客户端尝试使用相同的 4 元组建立新连接,则 SYN 被拒绝,服务器以预期序列的 ACK 响应数字。然后客户端将发送一个 RST。参见 RFC 中的图 10:faqs.org/rfcs/rfc793.html
    • 如果你尝试重用获取ACK失败的socket,你会得到自己这边的ECONNRESET。
    猜你喜欢
    • 1970-01-01
    • 2011-12-11
    • 2017-02-04
    • 1970-01-01
    • 2011-03-09
    • 2013-09-11
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多