A と B の間の通信中、 A が B にデータを送信しているとき、セグメント サイズは B のウィンドウ サイズに依存します。最初に、B がデータを正常に受信した後、ウィンドウ サイズを 2 倍にし、これが続きます。これで、B はその MSS を認識しました。そのため、セグメント サイズを A に送信する際に、MSS 値を超えないようにすることができます。では、なぜ B は最初に MSS を A に通知しなければならないのでしょうか。
2 に答える
セグメント サイズは、送信側と受信側がそれぞれ接続されているネットワークのデータ リンク層の MTU サイズによって異なります。
Path MTU Discovery を使用して、送信者と受信者の間の最小 MTU サイズを検出し、送信者と受信者の間の最適な最大セグメント サイズ (IP フラグメンテーションを回避する) を動的に決定できます (送信者と受信者の間のすべてのルーターが do_not_fragment ビットを尊重すると仮定)。 )。
フロー制御とスライディング ウィンドウを最大セグメント サイズと混同しているようです。
コメントに基づいて更新します。
Window size が MSS を超えることはできないということですか? 私はそれらの間の関係を見つけることができません。
いいえ、そうではありません。
ウィンドウ サイズは純粋に送信側と受信側のバッファ サイズに依存し、MSS は MTU に依存するということですか?
MSS と MTU サイズは、文脈によって意味が異なるため、文脈を必要とする用語です。
転送の方向は 1 つだけですが、次の 2 つの「ウィンドウ」を考慮する必要があります。
- 受信ウィンドウ。Flow Controlを実装するために使用され、受信者によって維持および指定されます。これは、ある瞬間から次の瞬間へとバッファーするレシーバーの能力によって制約されます。受信ウィンドウは、送信者によって確認される前に送信できるデータの量を定義します。BDPも参照してください。MSS は、受信ウィンドウには影響しません。
- 輻輳ウィンドウ。Congestion Controlの実装に使用されます。送信者によって維持および使用されます。輻輳ウィンドウ サイズは、事実上、MSS の倍数です。
A と B の両方のウィンドウ サイズは異なる場合がありますが、共通のリンクがあるため、MSS は同じままですか?
MSS が対称である必要はありません。A から B へのパスが、B から A へのパスと同じであるという保証や要件はありません。
理解を助ける図があるので、 http: //en.wikipedia.org/wiki/Transmission_Control_Protocolで記事全体を読むことをお勧めします。
セグメントサイズはBのウィンドウサイズに依存します
そしてパスMTU。これら2つの数値の低い方が適用されます。パスMTUは、特定のパスに対して一定です。アドバタイズされたウィンドウサイズは、レシーバーのソケット受信バッファー、スロースタートなどの状態に応じて動的になります。