4.9 TCP 接続が確立され、SYN が受信されるとどうなりますか?

1. クライアントの SYN メッセージ内のポート番号が過去の接続と異なる

このとき、サーバーは新しい接続を確立する必要があると判断し、3 ウェイ ハンドシェイクによって新しい接続を確立します。

古い接続で確立状態にあるサーバーはどうなりますか?

サーバーはクライアントにメッセージを送信します。クライアント接続は閉じられており、この時点でクライアント カーネルは RST メッセージを返し、サーバーは接続を解放します。

サーバーはクライアントにメッセージを送信しませんでした。一定時間が経過すると、tcp キープアライブ メカニズムが開始され、接続が解放されます。

2. クライアントの SYN メッセージ内のポート番号は、過去の接続と同じです。

 確立状態のサーバーは SYN メッセージを受信し ( SYN メッセージの初期化シーケンス番号は実際には乱数であるため、この時点の SYN メッセージは実際には順序が狂っています)、サーバーは正しいシーケンスを含む確認応答で応答します。 Number No. ACK メッセージを受け取ると、クライアントはこの ACK を受信し、それが望んでいることではないことを知り、RST をサーバーに返し、接続を解放します。

TCP接続を閉じるにはどうすればよいですか?

RST メッセージを偽造するには、4 倍が同じであることおよび相手が期待しているシーケンス番号であるという 2 つの条件が満たされなければなりません。

killcx ツールは、同じ 4 倍の SYN メッセージを偽造して、正当なシリアル番号を取得します。

tcpkill ツールは、双方が TCP 通信を行うときに、相手が次回受け取ることを期待しているシリアル番号を取得するツールです。次に、偽造された RST メッセージにシーケンス番号を埋めて相手に送信し、TCP 接続を閉じる効果を実現します。

  • tcpkill は受動的な取得であり、両者が TCP 通信を行った場合にのみ正しいシリアル番号を取得できますが、この方法ではアクティブでない TCP 接続を閉じることはできません。
  • killcx ツールはアクティブ取得に属し、SYN メッセージをアクティブに送信し、相手が応答するチャレンジ ACK を通じて正しいシリアル番号を取得するため、TCP 接続がアクティブであるかどうかに関係なく、このメソッドを閉じることができます

おすすめ

転載: blog.csdn.net/super8ayan/article/details/132503572