TCP接続を終了するには、FIN、FIN ACK、および3つのハンドシェイクが必要であることを読んでいます。 ACK。ただし、接続を閉じると、WiresharkはFIN ACK、FIN ACK、ACKを表示します。FINを単独で表示することはありません。

ただし、接続を確立すると、WiresharkはSYN、SINACKの3つのハンドシェイクを明確に表示します。 、ACK。

接続を閉じるときに3つのハンドシェイクがそのように表示されないのはなぜか、ちょっと混乱しています。

回答

TCP実装は、最初の終了セグメントでスタンドアロンFINを送信する場合があります。ただし、代わりにFINACKを送信することもできます。

後者厳密に優れています。実装では、「無料」のACKをFINセグメントに長くすることなくバンドルできます。これは、ACKを実行しない場合でも、セグメントにACK番号用の余地があるためです。これは無視されます。帯域幅を浪費します。したがって、最後に送信されたACKは、受信者がそれを見逃した場合に備えて、単に再送信されます。

これはすべてのTCPセグメントに当てはまります。したがって、送信者がACK番号に関する情報を持っていない最初のSYNセグメントを除いて、他のすべてのセグメントは通常ACKフラグをオンにします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です