2011-01-27 24 views
1

Heres the scenrio: Linuxで実行されているTCPクライアントがsolarisで動作しています。クライアントは接続し、データの送信を開始します。クライアントはデータの送信を停止し、非アクティブなN秒後にサーバーはFIN、ACK(おそらく送信パイプのシャットダウンコールから)を送信します。クライアントはデータの再送信を開始します。サーバはフリークアウトし、他のフラグが設定されていないRSTパケットの束を送信し始めます。最初のパケットは失われ、再びハンドシェイクします。送信はエラーを返さず、1つのパケットは黙って失われます。サーバからのFIN、ACKの後にRSTが送信されたときにソケットからクライアントが送信されません。

RSTがクライアントに伝播されていない理由はありますか?

+1

クライアント上の 'tcpdump '+クライアントの' strace'は診断に役立ちます。あなたの説明から、クライアントがエラーを無視し、タイムアウト後に再接続しているようです。 – ninjalj

+0

カーネルは、クライアントが 'connect()'をもう一度呼び出さない限り、別のハンドシェイクを行いません。 – caf

+0

送信エラーと再接続が表示されませんでした。しかし、今私は、私は間違いを認めて喜んで私がそうでないとわかるまでです。ありがとう。 – Jaime

答えて

0

送信エラーと再接続が宣言されています。私の悪い。あまりにも長いログを見ていると思います。ありがとう!

関連する問題