したがって、クライアントは、SYNパケットをseqでサーバーに送信することによってTCP接続を開始します。#X。次に、サーバーはX+1のSYN+ACKで応答します。クローズ接続プロトコルが制定された場合のFINパケットについても同じことが言えます。
だから私の質問は、なぜサーバーはXだけでなくX + 1をACKするのですか?SYNパケットとFINパケットはデータを便乗させないと思いました。これには他に理由がありますか?サーバーがXではなくX+1をACKする理由について私は混乱しています。
送信されるシーケンス番号は、次に予想されるシーケンス番号です。増分されていない場合、応答はパケットが受け入れられなかったことを示します。再送信してください。これは無限ループで終了します。
SYN は、それ自体が情報を送信する特殊なケースです。(宛先での受信カウントを初期化します。) ACK は、次の予期されるバイト (SYN + 1) に対するものになります。
ACK カウントは常に増加するとは限らず、1 を超えて増加する場合もあります。パケット 2 が遅延し、順不同で到着するこの交換を考えてみましょう。
受信確認 1 2 3 2 4 2 2 5