メインコンテンツまでスキップ

3.1 TCP MSS Option (TCP MSS オプション)

3.1 TCP MSS Option (TCP MSS オプション)

PMTU Discovery を実行するホストは, 受信者から許可を得ない限り 576 オクテットより大きい IP データグラムを送信しないという規則に従わなければなりません。TCP 接続の場合, これはホストがピアによって送信された Maximum Segment Size (最大セグメントサイズ, MSS) に 40 オクテットを加えたものより大きいデータグラムを送信してはならないことを意味します。

注意: TCP MSS は, 関連する IP データグラムサイズから 40 を引いたものとして定義されています [9]。最大 IP データグラムサイズのデフォルト値 576 オクテットは, TCP MSS のデフォルト値 536 オクテットを生成します。

"Requirements for Internet Hosts -- Communication Layers" (インターネットホストの要件 -- 通信層) [1] のセクション 4.2.2.6 は次のように述べています:

一部の TCP 実装は, 宛先ホストが非接続ネットワーク上にある場合にのみ MSS オプションを送信します。しかし, 一般的に TCP 層はこの決定を行うための適切な情報を持っていない可能性があるため, インターネットパスに適した MTU を決定するタスクは IP 層に任せる方が望ましいです。

実際, 多くの TCP 実装は常に MSS オプションを送信しますが, 宛先が非ローカルの場合は値を 536 に設定します。この動作は, 576 オクテットより大きいデータグラムを非ローカル宛先に送信すべきではないという規則に従わないホストでインターネットがいっぱいだった時代には正しいものでした。現在はほとんどのホストがこの規則に従っているため, 非ローカルピアに対して TCP MSS オプションの値を 536 に制限する必要はありません。

さらに, これを行うと PMTU Discovery が 576 より大きい PMTU を発見することを妨げるため, ホストは MSS オプションで送信する値を下げるべきではありません (SHOULD)。MSS オプションは, ホストが再構成できる最大のデータグラムのサイズから 40 オクテットを引いたもの (MMS_R, [1] で定義されているとおり) であるべきです。多くの場合, これは 65495 (65535 - 40) オクテットのアーキテクチャ制限となります。ホストは, 接続されたネットワークの MTU から派生した MSS 値を送信してもかまいません (MAY) (マルチホームホストの場合, 接続されたネットワーク上の最大 MTU)。これは PMTU Discovery に問題を引き起こすべきではなく, 壊れたピアが巨大なデータグラムを送信するのを思いとどまらせる可能性があります。

注意: 現時点では, 接続されたネットワークの最大 MTU より大きい MSS を送信する理由は見当たらず, ホストは 65495 を使用しないことをお勧めします。一部の IP 実装には符号ビットのバグがあり, このように大きな MSS を不必要に使用すると引き起こされる可能性が高いです。