连接丢失数据发送。服务器在握手后接收RST,ACK

时间:2013-06-06 04:29:06

标签: sockets networking tcp windows-server-2008 wireshark

我在64位Windows Server 2008 r2上托管了一个简单的TCP服务器。 TCP服务器只接收连接并使用收到的消息(回声)回复传入的数据。大约有600-700个客户尝试连接并发送一些信息。问题是:当从客户端向服务器发送数据时,服务器几乎失去了所有连接(大约90%)(前15-20个连接已经正常执行)。我用Whireshark嗅到了TCP流量。 从服务器端登录:

 +--------------+--------------+--------------------------------+
 | Source       | Destination  | Info                           |
 +--------------+--------------+--------------------------------+
 | 1. client ip | server ip    | [SYN] **Handshake step1**      |
 | 2. server ip | client ip    | [SYN, ACK] **Handshake step2** |
 | 3. client ip | server ip    | [ACK] **Handshake step3**      |
 | 4. client ip | server ip    | [RST, ACK] **Loses connection**|
 +--------------+--------------+--------------------------------+

从客户端日志是:

 +--------------+--------------+--------------------------------+
 | Source       | Destination  | Info                           |
 +--------------+--------------+--------------------------------+
 | 1. client ip | server ip    | [SYN] **Handshake step1**      |
 | 2. server ip | client ip    | [SYN, ACK] **Handshake step2** |
 | 3. client ip | server ip    | [ACK] **Handshake step3**      |
 | 4. client ip | server ip    | [PSH, ACK] Message             |
 | 5. client ip | server ip    | [PSH, ACK] CRLF message        |
 | 6. server ip | client ip    | [RST, ACK] **Loses connection**|
 +--------------+--------------+--------------------------------+

在这两种情况下,«重置原因»是:\ 000 \ 000 \ 000 ...... \ 000 当我们从本地网络连接时,连接没有丢失。

2 个答案:

答案 0 :(得分:0)

我认为这与您的代码无关,但我确实有几个问题: 1.客户端和服务器之间的网络速度是多少?是否有其他应用程序丢失的数据包?客户端发送的邮件大小是多少? 2.收到的RST与握手完成(服务器)或发送的消息(客户端)之间有多长时间? 3.您知道客户端和服务器之间是否有防火墙?你还说它在局域网上运行良好。中国GFW经常这样做。

答案 1 :(得分:0)

我找到了解决方案。问题是,供应商在没有任何通知的情况下改变了关税计划。新的资费计划限制了最大连接数。