0

我有一个简单的 TCP 服务器托管在 64 位 windows server 2008 r2 上。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 当我们从本地网络连接时,连接没有丢失。

4

2 回答 2

0

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

于 2013-06-06T15:56:10.740 回答
0

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

于 2013-09-21T08:31:10.430 回答