0

64ビットのWindowsサーバー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 ローカル ネットワークから接続しているときに、接続は失われませんでした。

4

2 に答える 2

0

あなたのコードとは関係ないと思いますが、いくつか質問があります: 1. クライアントとサーバー間のネットワーク速度は? 他のアプリケーションで失われたパケットはありますか? クライアントから送信されるメッセージのサイズは? 2. RST が受信されてから、ハンドシェイクが終了する (サーバー) またはメッセージが送信される (クライアント) までの時間はどれくらいですか? 3. クライアントとサーバーの間にファイアウォールがあるかどうか知っていますか? また、LANでうまく機能したとのことでした。中国の GFW はよくそうします。

于 2013-06-06T15:56:10.740 に答える