【发布时间】:2010-06-23 13:11:14
【问题描述】:
我有一个使用套接字的 C# .NET 客户端服务器应用程序编写器。
我经常收到日志消息(比如说大约每小时 4 条)说这条消息,
An existing connection was forcibly closed by the remote host
在这种情况下,错误发生在“服务器”端。
我决定使用wireshark 来分析正在发生的事情,我明白了。没有延迟,这一切都在几秒钟内发生。
Server > Client [PSH, ACK] Seq=55653 Ack=4472 Win=63940 Len=148
Client > Server [ACK] Seq=4472 Ack=55801 Win=4038 Len=0
Server > Client [PSH, ACK] Seq=55801 Ack=4472 Win=63940 Len=148
Client > Server [ACK] Seq=4472 Ack=55949 Win=4001 Len=0
Server > Client [PSH, ACK] Seq=55949 Ack=4472 Win=63940 Len=142
Client > Server [PSH, ACK] Seq=4472 Ack=55949 Win=4001 Len=31
Client > Server [RST, ACK] Seq=4503 Ack=55949 Win=0 Len=0
因此客户端和服务器在它们之间发送信息 (PSH) 和确认信息 (ACK)。突然发生了 RST。根据维基百科,这是一个重置,这个重置对应于我上面得到的“现有连接被强制...”消息。
这到底是什么意思?这是否意味着重置会导致问题?我认为答案是否定的,更有意义的是重置是问题的结果? IE。服务器端的套接字由于某种原因死了,客户端将重置发送到服务器以尝试唤醒它。
想法?
【问题讨论】: