3

プロセスがクラッシュすると、RSTパケット(セグメント)を他のピアに送信することで既存のTCPソケットが破棄され、他のピアの関連するソケットfdがRSTパケットを受信することを私は知っています。

RSTパケットが送信された他のケースはありますか?プロセスがソケットfdでclose()を呼び出したが、そのソケットに未読データが残っている場合など、そのソケットfdを介して他のピアにRSTパケット(セグメント)も送信しますか?

4

1 に答える 1

2

TCP/IPガイドの引用

一般的に、TCPソフトウェアによって「予期しない」何かが発生すると、リセットが生成されます。リセットが生成される最も一般的な特定のケースには、次のものがあります。

  • セグメントを受信するデバイスが現在接続していないデバイスからのTCPセグメントの受信(新しい接続を要求するSYNを除く)。

  • 無効または不正なシーケンス番号または確認応答番号フィールドを含むメッセージの受信。メッセージが以前の接続に属しているか、他の方法で偽物である可能性があることを示します。

  • 接続をリッスンするプロセスがないポートでのSYNメッセージの受信。

奇妙な動作を観察した場合、 TCPリセット攻撃RSTの犠牲者になる可能性があります

最後の質問については、未読データのあるソケットをソケットバッファーに閉じると、TCPルールに違反しないため、noRSTが送信されると思います(パケットは正しく配信されました。それを詳しく説明しなかったのはプロセスだけです)。代わりに、FINが送信されます。

于 2013-01-30T13:21:05.287 に答える