フラグメントオフセット(フラグメントオフセット)とは | 意味や読み方など丁寧でわかりやすい用語解説
フラグメントオフセット(フラグメントオフセット)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
フラグメントオフセット (フラグメントオフセット)
英語表記
fragment offset (フラグメントオフセット)
用語解説
フラグメントオフセットは、インターネットプロトコル(IP)において、元のデータパケットが複数の小さな断片(フラグメント)に分割された際に、それぞれの断片が元のパケットのどの位置から始まるデータを含んでいるかを示す値である。この値はIPヘッダの一部として格納され、受信側が分割された複数のフラグメントを正しく順序付けて再構築するために不可欠な情報となる。
詳細な説明を始める前に、なぜパケットが分割される必要があるのかを理解する必要がある。インターネットを含む多くのネットワークでは、一度に転送できるデータの最大サイズが決められており、これをMTU(Maximum Transmission Unit、最大伝送単位)と呼ぶ。例えば、イーサネットのMTUは通常1500バイトである。もしアプリケーションがこのMTUを超えるサイズの大きなデータパケットを送信しようとした場合、ネットワーク機器(ルータなど)は、そのパケットをMTU以下のサイズの小さなフラグメントに分割する。この分割処理をフラグメンテーションと呼ぶ。フラグメンテーションは、異なるMTUを持つ複数のネットワークを経由してデータが転送される際に発生することがある。
分割された各フラグメントは、それぞれ独立したIPパケットとして扱われ、独自のIPヘッダを持つ。このIPヘッダの中に、フラグメントオフセットという13ビットのフィールドが存在する。このフィールドの値は、現在のフラグメントが、元のパケットのデータ部分のどこから始まるかを示す。ここで重要なのは、フラグメントオフセットが「オクテット」単位ではなく「8オクテット(8バイト)」単位で表現される点である。例えば、フラグメントオフセットの値が0であれば、そのフラグメントは元のパケットのデータ部分の先頭(0バイト目)から始まることを意味する。もしフラグメントオフセットの値が100であれば、そのフラグメントは元のパケットのデータ部分の800バイト目(100 × 8オクテット)から始まるデータを含んでいることを示す。
受信側では、複数のフラグメントがバラバラの順序で届く可能性があるため、これらを正しく元のパケットに再構築する必要がある。この再構築プロセスをリアセンブリと呼ぶ。リアセンブリを行う際には、IPヘッダ内のいくつかの情報が利用される。 まず、同じ元のパケットから分割されたフラグメントであることを識別するために「識別子(Identification)」フィールドが使われる。これは、同じ識別子を持つフラグメントが同じ元のパケットに属していることを示す。 次に、「フラグ(Flags)」フィールド内の「More Fragments (MF)」フラグが利用される。このMFフラグがセット(1)されている場合、そのフラグメントの後にもさらにフラグメントが続くことを意味し、MFフラグがクリア(0)されている場合、それが元のパケットの最後のフラグメントであることを示す。 そして、最終的にフラグメントオフセットが、個々のフラグメントのデータの正確な位置を特定するために使用される。受信側は、識別子が同じで、MFフラグがセットされているフラグメントと、MFフラグがクリアされているがオフセット値が最も大きい(すなわち元のパケットの最後尾に位置する)フラグメントをすべて集め、それぞれのフラグメントオフセットの値に基づいて正しい順序でデータを結合し、元の完全なパケットを復元する。
フラグメントオフセットは13ビットで表現されるため、最大値は2^13 - 1 = 8191である。これは、8191 × 8バイト = 65528バイトのオフセットまで表現できることを意味する。IPパケットのデータ部分の最大長は65535バイトであるため、この範囲で十分に対応できる。
フラグメンテーションは、データ転送を可能にする便利なメカニズムである一方で、ネットワークにいくつかの課題をもたらす。ルータなどのネットワーク機器は、フラグメントされたパケットを処理するために追加のリソースを必要とし、パフォーマンスの低下や遅延の原因となることがある。また、ファイアウォールやセキュリティデバイスにとっては、パケットの内部を検査してフィルタリングする際に、フラグメントが全て揃うまで判断を保留する必要が生じるため、処理が複雑になる。さらに、フラグメンテーションはDoS攻撃(サービス拒否攻撃)やセキュリティ脆弱性として利用される可能性もある。そのため、現代のネットワークでは、Path MTU Discovery (PMTUD) といった技術を用いて、フラグメンテーションをできるだけ回避し、送信側が経路上の最小MTUに合わせてパケットサイズを調整することが推奨されている。しかし、PMTUDがうまく機能しない環境や、一部の特殊なシナリオでは、フラグメンテーション、そしてそれに伴うフラグメントオフセットの役割が依然として重要となる。