MTU(最大伝送単位)とは?

最大伝送単位(MTU:Maximum Transmission Unit)は、インターネットに接続されたデバイスが受け入れることができる最大データパケットをバイトで示した単位です。

学習目的

この記事を読み終えると、以下のことができるようになります。

  • 「MTU」(最大伝送単位)を定義する
  • IPフラグメンテーション(断片化)の仕組みを理解する
  • IPv4とIPv6におけるパスMTU検出について学ぶ

関連コンテンツ


さらに詳しく知りたいとお考えですか?

是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!

当社がお客様の個人データをどのように収集し処理するかについては、Cloudflareのプライバシーポリシーをご確認ください。

記事のリンクをコピーする

MTU(最大伝送単位)とは?

ネットワーキングにおける最大送信単位(MTU)は、ネットワークに接続されているデバイスが受け取る最大のデータパケットを表す尺度です。MTUを高速道路の地下道やトンネルにある高さ制限のようなものだと考えてみてください。高さ制限を超える自動車やトラックが通過できないように、ネットワークのMTUを超えるパケットはそのネットワークを通過できません。

ただし、車やトラックとは違い、MTUを超えるデータパケットは通過できるように小さな断片に分割されます。このプロセスをフラグメンテーション(断片化)と呼びます。断片化されたパケットは、宛先に到着すると再構成されます。

MTUはバイト単位で測定されます。「1バイト」は8つの0と1の集まりで表される8ビットの情報に相当します。1,500バイトが最大MTUサイズです。

パケットとは?

インターネット経由で送信されるすべてのデータは、パケットと呼ばれる小さなまとまりに分割されます。たとえば、WebサーバーからユーザーのノートパソコンへWebページが送信されると、Webページの構成データは一連のパケットとしてインターネット上を移動します。その後、パケットはノートパソコンによって元のWebページ全体に再度組み立てられます。

データパケットは、主としてヘッダーペイロードの2つの部分でできています。ヘッダーにはパケットの送信元アドレスと宛先アドレスに関する情報が含まれ、ペイロードはパケットの実際の内容です。ヘッダーは小包に貼られた発送用ラベルで、ペイロードは小包の内容品と考えればよいでしょう。(小包とは異なり、インターネット上のパケットには、さまざまなネットワーキングプロトコルごとに複数のヘッダーが付いています。)

MTUは、ほとんどの場合、第3層*パケット、または インターネットプロトコル (IP) を使用するパケットを参照するために使用されます。MTUは、すべてのヘッダーとペイロードを含むパケット全体を測定します。これには、IPヘッダーと TCP (トランスポート制御プロトコル) ヘッダーが含まれます。通常、最大40バイトまで加算されます。

* OSIモデルは、インターネットを可能にする機能を7つの層に分割します。第3層はネットワーク層であり、ルーティングが行われます。

パケットは、いつ断片化するか

2台のコンピューティングデバイスが接続してパケットの交換を開始すると、それらのパケットは複数のネットワーク経由でルーティングされます。通信の両端にある2台のデバイスのMTUだけでなく、その間にあるすべてのルータースイッチ、サーバーのMTUも考慮する必要があります。ネットワークパスのどこかのポイントでMTUを超えるパケットは断片化されます。

たとえば、サーバーAとコンピュータAーは接続していますが、互いに送信するデータパケットが、途中でルーターBとルーターCを通過しなければならないとします。サーバーA、コンピューターA、およびルーターBのすべてのMTUは1,500 バイトです。ただし、ルーターCのMTUは1,400バイトとします。サーバーAとコンピューターAがルーターCのMTUを認識せず、1,500バイトのパケットを送信する場合、すべてのデータパケットはルーターBによって転送中に断片化されます。

最大送信単位 ー パケットは1,400 byte MTUに合わせて断片化

断片化によって、ネットワーク通信にわずかなレイテンシー と非効率性が生じるため、可能であれば、避けるべきです。(古いネットワーク機器は、フラグメーションを悪用するサービス拒否 攻撃や、Ping of Death 攻撃などに対する脆弱かもしれません)。

断片化はどのように機能するか

すべてのネットワークルーターは、パケットを受信する次のルーターのMTUに対して、受信する各IPパケットのサイズをチェックします。パケットが次のルーターのMTUを超えると、最初のルーターはペイロードを2つ以上のパケットに分割し、それぞれが独自のヘッダーを持ちます。

新しい各パケットには、元のパケットからコピーされたヘッダーがあり(すべてのパケットに送信元および宛先 IPアドレス などが付与される)、重要な変更が加えられています。ルーターは IPヘッダーの特定のフィールドを編集して、パケットが断片化していること、再構成が必要であること、パケット数、および送信順序を示します。

たとえば、ある輸送会社が施設の一つで荷物を扱っていますが、その荷物は重量制限オーバーです。その会社は、荷物の配達を拒否するかわりに、荷物の中身を3つの小さな荷物に分割することにしました。また、各荷物の配送ラベルを複製し、各荷物が一緒に到着する必要がある3セットのどれかであることを示すメモを追加します。つまり、最初の荷物は1/3、2番目の荷物は2/3などのメモを付けます。(運送会社によるこのようなアプローチはプライバシーの侵害になるので、現実世界では起こりません。)

断片化ができないのはいつか

場合によっては、パケットが断片化されないため、ネットワークパス上のルーターまたはデバイスのMTUを超えると、パケットが配信されません:

  1. IPv6 では断片化は許可されません。IPv6はインターネットプロトコルの最新バージョンですが、IPv4もまだ広く使用されています。IPv6をサポートするルーターは、MTUを超えるIPv6 パケットをフラグメント化できないため、これをドロップします。
  2. パケットのIPヘッダーで「Don't Fragment(断片化しないでください)」フラグがアクティブになっている場合にも断片化はできません。

IPヘッダーの「Don't Fragment」フラグとは?

IPヘッダーは、消費者が小包を誰かに送るときに記入する配達伝票のようなものと考えてください。フォームには、送信元アドレス、宛先アドレス、荷物の配達日数、および配達業者に向けたその他の特別な指示が示されます。

「Don't Fragment」フラグは、ルーター用の特別な命令で、IPヘッダーの「伝票」で選択できるオプションです。フラグが設定されている場合、添付されたパケットは断片化できません。

パケットを受信したルーターはどれでも、ヘッダーを分析し、Don't Fragmentフラグを確認します。フラグがオンで、パケットがMTUを超えると、ルーターはパケットを断片化せずにドロップします。

ルーターは、パケットをドロップするだけでなく、パケットの発信元に ICMPメッセージを送信します。ICMPメッセージは、ステータスアップデートを送信する非常に小さなデータパケットです。この場合に表示される実際のメッセージは、「このルーターまたはデバイスは、パケットが大きすぎて、断片化できなかったため、配信できませんでした」というものです。

パスMTUディスカバリーとは?

パスMTUディスカバリー(PMTUD)とは、ネットワークパス上のすべてのデバイス、ルーター、およびスイッチのMTUを検出するプロセスです。前述の例のコンピューターAとサーバーAがPMTUDを使用する場合、ルーターBのMTU要件を特定し、それに応じてパケットサイズを調整して断片化を回避します。

PMTUの動作は、接続されたデバイスが IPv4またはIPv6 のいずれを使用しているかによって、若干異なります:

IPv4: IPv4は断片化を許可し、したがって、IPヘッダーにDon't Fragmentフラグを含めます。IPv4のPMTUDは、Don't Fragmentフラグをオンにして、ネットワークパスに沿ってテストパケットを送信することで機能します。パス上のルーターまたはデバイスのいずれかがパケットをドロップすると、MTUとともにICMPメッセージを返送します。送信元デバイスはMTUを下げ、別のテストパケットを送信します。このプロセスは、テストパケットがドロップされることなく、ネットワークパス全体を通過できるほど十分に小さくなるまで繰り返されます。

IPv6: 断片化を許可しないIPv6の場合、PMTUDはほぼ同じように動作します。主な違いは、IPv6ヘッダーにDon't Fragmentオプションがないため、フラグが設定されないことです。IPv6をサポートするルーターはIPv6パケットを断片化しないため、テストパケットがMTUを超えると、ルーターはパケットをドロップし、対応するICMPメッセージをDon't Fragmentフラグをチェックせずに返信します。IPv6 PMTUDは、IPv4の場合と同様に、パケットがネットワークパス全体を通過できるようになるまで、より小さなテストパケットを送信します。

MSSとは?

MSS は、最大セグメントサイズを表します。MSSは、インターネットの第3層ではなく第4層 (トランスポート層) でTCPによって使用されます。MSSは、各パケット内のペイロードのサイズだけに関係します。これは、MTUからTCPおよび IPヘッダーの長さを引いて計算されます。

ルーターのMTUを超えるパケットは断片化またはドロップされますが、MSSを超えるパケットは常にドロップされます。

MTUとMSSの詳細については、「MSSとは?」を参照してください。