我在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 当我们从本地网络连接时,连接没有丢失。
答案 0 :(得分:0)
我认为这与您的代码无关,但我确实有几个问题: 1.客户端和服务器之间的网络速度是多少?是否有其他应用程序丢失的数据包?客户端发送的邮件大小是多少? 2.收到的RST与握手完成(服务器)或发送的消息(客户端)之间有多长时间? 3.您知道客户端和服务器之间是否有防火墙?你还说它在局域网上运行良好。中国GFW经常这样做。
答案 1 :(得分:0)
我找到了解决方案。问题是,供应商在没有任何通知的情况下改变了关税计划。新的资费计划限制了最大连接数。