メインコンテンツへスキップ
  1. ネットワーク 記事一覧/
  2. IPv4記事一覧/

IPv4パケットヘッダー構造

IPv4パケットヘッダー構造
#

IPv4(Internet Protocol version 4)のパケットは、先頭に付与されるヘッダーと、その後に続くデータ(ペイロード)から構成されています。ヘッダーは32ビット(4バイト)単位の行が積み重なる形で定義されており、基本部分は20バイト、オプションを含めると最大60バイトになります。ここでは各フィールドの役割について解説します。

各フィールドの説明
#

フィールド名サイズ説明
バージョン (Version)4 ビットIPのバージョンを示す。IPv4では固定値 4 が入る。
IHL (Internet Header Length)4 ビットヘッダー長を32ビット(4バイト)単位で表す。オプションがない場合の最小値は5(=20バイト)、最大値は15(=60バイト)。
サービスタイプ (Type of Service / DSCP + ECN)8 ビットパケットの優先度や輻輳通知を制御するフィールド。上位6ビットがDSCP(Differentiated Services Code Point)、下位2ビットがECN(Explicit Congestion Notification)として使用される。
全長 (Total Length)16 ビットIPヘッダーとデータを合わせたパケット全体のバイト数。最大65535バイトまで表現できる。
識別子 (Identification)16 ビットパケットを分割(フラグメント化)した際に、同一パケットから分割されたことを識別するための値。
フラグ (Flags)3 ビットフラグメント制御用のビット列。bit0は予約(0固定)、bit1はDF(Don’t Fragment、分割禁止)、bit2はMF(More Fragments、後続フラグメントの有無)を表す。
フラグメントオフセット (Fragment Offset)13 ビット分割されたデータが元のパケットの先頭から何バイト目(8バイト単位)に位置するかを示す。
生存時間 (TTL / Time To Live)8 ビットパケットが経由できるルータの最大ホップ数。ルータを1つ経由するごとに1減算され、0になった時点で破棄される。ループするパケットが永続することを防ぐための仕組み。
プロトコル (Protocol)8 ビットデータ部分に格納されている上位層プロトコルの種別を示す。
ヘッダーチェックサム (Header Checksum)16 ビットIPヘッダー部分のみを対象とした誤り検出用のチェックサム。ルータを通過するたびにTTLが変化するため、都度再計算される。
送信元アドレス (Source Address)32 ビットパケットの送信元IPアドレス。
宛先アドレス (Destination Address)32 ビットパケットの宛先IPアドレス。
オプション (Options)可変長(0〜40 バイト)セキュリティやタイムスタンプ記録など、追加機能を指定する際に使用される任意のフィールド。存在する場合は32ビット境界に揃うようパディングが付加される。IHLが5より大きい場合にのみ存在する。
データ (Data / Payload)可変長上位層(TCP、UDP、ICMPなど)から渡されるデータ本体。

プロトコル値の代表例
#

プロトコルフィールドの値は、データ部分に格納されている上位層プロトコルの種別を示します。代表的な値は以下の通りです。

プロトコル値プロトコル
1ICMP
2IGMP
6TCP
17UDP
41IPv6(IPv6カプセル化)
47GRE
50ESP(IPsec)
51AH(IPsec)
89OSPF
132SCTP

プロトコル番号はIANAが管理しており、割り当て済みの全一覧は以下で公開されています。

ヘッダー長とフラグメンテーション
#

IHLはあくまでヘッダー長のみを表す値であり、パケット全体の長さはTotal Lengthフィールドで別途表される。
項目サイズ備考
IPヘッダー(オプションなし)20 バイトIHL = 5 の場合。最も一般的な構成。
IPヘッダー(オプションあり)24〜60 バイトIHL = 6〜15 の場合。4バイト単位で増加する。
IPパケット全体最大65535 バイトTotal Lengthフィールドで表現できる上限値。

経路上のリンクのMTU(Maximum Transmission Unit)よりもパケットサイズが大きい場合、送信元またはルータによってパケットが分割(フラグメンテーション)されます。分割されたパケットは、識別子・フラグ・フラグメントオフセットの各フィールドを用いて受信側で再構成されます。ただしDFビットが立っている場合は分割が禁止され、MTUを超えるパケットは破棄されてICMP到達不能メッセージが送信元へ返されます。

関連RFC
#

RFCタイトル概要
RFC 791Internet ProtocolIPv4の原典。ヘッダー構造やフラグメンテーション、TTLなど基本フォーマットを定義。