Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

IPフラグメンテーション(アイピーフラグメンテーション)とは | 意味や読み方など丁寧でわかりやすい用語解説

IPフラグメンテーション(アイピーフラグメンテーション)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

IPフラグメンテーション (アイピーフラグメンテーション)

英語表記

IP fragmentation (アイピーフラグメンテーション)

用語解説

IPフラグメンテーションとは、インターネットプロトコル(IP)において、大きなデータパケットをネットワーク上で伝送可能な小さな単位に分割する処理のことである。ネットワーク通信では、一度に送信できるデータの最大サイズが物理的な媒体やプロトコルによって定められており、この上限値をMTU(Maximum Transmission Unit)と呼ぶ。例えば、広く普及しているイーサネットの標準的なMTUは1500バイトである。送信しようとするIPパケットのサイズが、経由するネットワーク経路のMTUを超える場合、そのままではパケットを送信できない。この問題を解決するために、IPパケットをMTU以下のサイズの複数の小さなパケット、すなわちフラグメントに分割する。この一連の仕組みがIPフラグメンテーションである。分割された各フラグメントは、それぞれが独立したIPパケットとしてネットワークを伝送され、最終的な宛先となるホストで再び元の大きなパケットに再構成される。この仕組みにより、送信元と送信先の間にあるネットワークのMTU値を意識することなく、大きなデータを透過的にやり取りすることが可能となる。

IPフラグメンテーションの具体的な動作は、IPヘッダ内の特定のフィールドによって制御される。パケットを分割する必要が生じた場合、ルータまたは送信元ホストは、元のパケットを複数のフラグメントに分割し、それぞれのフラグメントに元のIPヘッダの情報をコピーした上で、以下のフィールドを適切に設定する。第一に「識別子(Identification)」フィールドがある。これは、分割される前の元のパケットを一意に識別するための値であり、分割されたすべてのフラグメントには同じ識別子の値が設定される。これにより、受信側ホストは、どのフラグメントが同じパケットから派生したものかを判断できる。第二に「フラグ(Flags)」フィールドである。これは3ビットのフィールドで、分割に関する制御情報を示す。そのうちの1ビットは「DF(Don't Fragment)ビット」と呼ばれ、このビットが1に設定されている場合、そのパケットの分割を禁止することを示す。もしDFビットが1のパケットがMTUを超える経路を通過しようとした場合、ルータはパケットを破棄し、送信元に対して「ICMP Destination Unreachable, Fragmentation Needed」というエラーメッセージを送信する。この仕組みは、通信経路上の最小MTUを探索するPath MTU Discovery(PMTUD)で活用される。もう1つのビットは「MF(More Fragments)ビット」と呼ばれ、後続にさらにフラグメントが存在するかどうかを示す。最後のフラグメントを除くすべてのフラグメントでMFビットは1に設定され、最後のフラグメントのみが0となる。これにより、受信側はすべてのフラグメントを受信したことを判断できる。第三に「フラグメントオフセット(Fragment Offset)」フィールドがある。これは、各フラグメントが元のパケットのどの位置のデータを含んでいるかを示す値である。オフセットは8バイト単位で表され、受信側ホストは、このオフセット値を参照して各フラグメントを正しい順序に並べ替え、元のパケットを復元する。分割処理は送信元ホストまたは経路上の中継ルータで行われるが、再構成(リアセンブリ)は必ず最終的な宛先ホストで行われる。途中のルータはフラグメントを再構成することなく、個別のパケットとして次のルータへ転送するだけである。

IPフラグメンテーションは大きなデータを送信するための不可欠な仕組みであるが、いくつかの深刻な問題点を抱えている。第一に、パフォーマンスの低下である。ルータがパケットを分割する処理や、宛先ホストがフラグメントを再構成する処理は、CPUに負荷をかける。また、分割された各フラグメントにはそれぞれIPヘッダが付与されるため、ヘッダのオーバーヘッドが増加し、ネットワーク帯域の利用効率が低下する。第二に、信頼性の低下が挙げられる。TCPなどの信頼性の高いプロトコルを使用していても、IP層で分割されたフラグメントのうち一つでもネットワーク上で損失すると、宛先ホストは元のパケット全体を再構成できなくなる。その結果、タイムアウトするまで待機した後に、受信できなかったパケット全体を破棄せざるを得ない。これにより、上位層のプロトコルでパケット全体の再送が必要となり、通信遅延やスループットの悪化を引き起こす。第三に、セキュリティ上のリスクが存在する。ファイアウォールや侵入検知システム(IDS)などのセキュリティ機器は、パケットの内容を検査して通信を制御するが、パケットがフラグメント化されていると、その検査が困難または不完全になることがある。例えば、TCPのポート番号などの情報は最初のフラグメントにしか含まれないため、2番目以降のフラグメントに対してポート番号ベースのフィルタリングを適用できない場合がある。これを悪用し、セキュリティ機器の検査を回避する攻撃手法も存在する。これらの問題点から、現代のネットワーク通信では、IPフラグメンテーションの発生を極力回避することが推奨されている。前述のPath MTU Discovery(PMTUD)は、送信元ホストが通信経路全体のMTUを事前に把握し、送信するパケットのサイズをそのMTUを超えないように調整するための仕組みであり、これにより経路上での意図しないフラグメンテーションを防ぐことができる。また、IPv6では、通信経路上の中継ルータによるフラグメンテーションが原則として禁止され、フラグメンテーションが必要な場合は送信元ホストが実行する仕様となっている。これは、ルータの処理負荷を軽減し、ネットワーク全体のパフォーマンスを向上させるための設計思想の表れである。

関連コンテンツ