要約
- RFC 791 の Total Length は、IPv4 ヘッダーとデータを合わせたデータグラム全体の長さを八ビット単位で示します。
- RFC 894 によれば、Ethernet の最小データ長を満たすためのパディングは IP パケットに含まれません。
短い IPv4 データグラムは、層ごとの境界の違いを明らかにします。Ethernet のデータフィールドは少なくとも 46 オクテット必要なので、短いデータグラムにはゼロのパディングが続きます。受信側が見るフレームは、IPv4 が所有するデータより長くなり得ます。
その境界を外側のフレームに任せないため、IPv4 ヘッダーには 16 ビットの Total Length があります。これはヘッダーを含むデータグラム全体を数えます。フレームは運搬を担当し、データグラムは自分の終端を示します。
IHL と Total Length
IHL は 32 ビット語でヘッダー長を表し、最小値は 5、つまり 20 オクテットです。Total Length は全体をオクテットで表します。したがってデータ長は、Total Length から IHL に基づくヘッダー長を引いて求められます。オプションがヘッダーを拡張しても、IHL がデータの開始位置を動かし、Total Length が終端を示す役割は変わりません。
この値は Ethernet のアドレス、制御情報、プリアンブル、チェック情報、パディングを数えません。IPv4 に渡されたデータのうち、どこまでが現在のデータグラムかを示す値です。
表現可能な大きさと配送可能性
16 ビットで表せる上限は 65,535 オクテットです。しかし RFC 791 は、この大きさを多くのホストやネットワークには実用的でないと説明しています。ホストは完全なものでも断片化されたものでも 576 オクテットまで受け入れられる必要があり、より大きい送信には宛先の能力への確信が求められます。Ethernet の IP データグラム上限は 1,500 オクテットです。したがって上限値はパス MTU でも受信保証でもありません。
断片化された場合
各断片は自身のヘッダーを持ち、その Total Length は自身のヘッダーと断片データを含みます。Identification、Fragment Offset、More Fragments は別の役割を持ちます。Total Length が示すのは現在転送される IPv4 オブジェクトの境界であり、アプリケーションメッセージの長さではありません。
宣言された長さが不正な場合や、キャプチャが途中で切れている場合もあります。IHL、利用可能なバイト、パディング、キャプチャの出所を併せて確認する必要があります。長さは解釈の基準であって、完全性や配送を証明するものではありません。
出典
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
Strategic Circle 限定
Strategic Circle
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
Strategic Circle に参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加
