2

したがって、クライアントは、SYNパケットをseqでサーバーに送信することによってTCP接続を開始します。#X。次に、サーバーはX+1のSYN+ACKで応答します。クローズ接続プロトコルが制定された場合のFINパケットについても同じことが言えます。

だから私の質問は、なぜサーバーはXだけでなくX + 1をACKするのですか?SYNパケットとFINパケットはデータを便乗させないと思いました。これには他に理由がありますか?サーバーがXではなくX+1をACKする理由について私は混乱しています。

4

1 に答える 1

3

送信されるシーケンス番号は、次に予想されるシーケンス番号です。増分されていない場合、応答はパケットが受け入れられなかったことを示します。再送信してください。これは無限ループで終了します。

SYN は、それ自体が情報を送信する特殊なケースです。(宛先での受信カウントを初期化します。) ACK は、次の予期されるバイト (SYN + 1) に対するものになります。

ACK カウントは常に増加するとは限らず、1 を超えて増加する場合もあります。パケット 2 が遅延し、順不同で到着するこの交換を考えてみましょう。

受信確認
  1 2
  3 2
  4 2
  2 5
于 2011-02-23T01:00:04.050 に答える