У меня есть простой TCP-сервер, размещенный на 64-битном сервере Windows Server 2008 R2. TCP-сервер просто принимает соединение и отвечает на входящие данные полученным сообщением (эхо). Около 600-700 клиентов пытаются подключиться и отправить некоторую информацию. И проблема в том, что сервер теряет почти все соединения (около 90%) при отправке данных от клиента к серверу (первые 15-20 подключений выполнялись нормально). Я прослушал TCP-трафик с помощью Whireshark. Журнал на стороне сервера:
+--------------+--------------+--------------------------------+
| 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 Соединение не потеряно при подключении из локальной сети.