我有一个简单的 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 当我们从本地网络连接时,连接没有丢失。