2011-04-27 121 views
0

我有一个应用程序正在发送Web请求,经过一段时间后我们开始发生连接超时错误。在TCP/IP数据包的分析,可以发现以下为每个连接尝试发生:为什么此连接保持关闭 - SYN-> SYN,ACK-> ACK-> RST,ACK

号时间源目标协议信息

98635 2011-04-21 10:13:47.192237 172.22.3.250 172.22.3.100 TCP [ TCP端口号重用] httpx> http-alt [SYN] Seq = 0 Win = 65535 Len = 0 MSS = 1460

98639 2011-04-21 10:13:47.192397 172.22.3.100 172.22.3.250 TCP http-alt > httpx [SYN,ACK] SEQ = 0 ACK = 1运= 5840长度= 0 MSS = 1460

98641 2011-04-21 10:13:47.192425 172.22.3.250 172.22.3.100 TCP httpx> HTTP-ALT [ACK] Seq = 1 Ack = 1 Win = 65535 Len = 0

98646 2011-04-21 10:13:47.192502 172.22.3.250 172.22.3.100 TCP httpx> http-alt [RST,ACK] Seq = 1 Ack = 1 Win = 0 Len = 0

一旦发生这种情况,客户机必须重新启动才能解决问题。重新启动客户端或服务器应用程序或重新启动服务器不起作用。的工作和非工作消息之间​​的数据包详细比较揭示标志没有差异等

谢谢

尼尔

+0

忽略提及,我们正在使用MFC类:CInternetConnection,CHttpConnection,CHttpFile – Neil 2011-04-27 14:20:48

+1

这里没有证据显示超时,除非您使用病态低超时值。客户决定在完成77ms后重置连接。该客户端的硬件或操作系统有问题。 – EJP 2012-05-14 06:46:04

回答

0

TCP Port numbers reused是一个线索。这可能是您的客户正在重新使用应该关闭的旧连接的端口号。

您的客户端是否绑定到静态源端口?如果是,则可能是客户端操作系统拒绝来自服务器的数据包,因为它认为它们属于旧连接。操作系统拒绝数据包,这就是为什么只有客户端重新启动才能解决问题。 (或者尝试等待几分钟)。

在客户端打开连接时,请勿分配源端口。

+0

我们使用MFC HTTP类,所以我无法控制端口分配。我们还可以看到,即使对于重用端口,它也可以在一段时间内运行,在开始失败之前通过可用端口循环几次。 – Neil 2011-04-27 15:14:21

相关问题