IPデータグラムとIPヘッダ

 通信相手のアドレス情報を取得した後は、実際にデータを含んだパケットを送り出して行くわけですが、IP層から送り出されるパケット(IPデータグラム)は、IPヘッダとデータからなっています。

ここでは、IPデータグラムとIPヘッダについて説明してゆきます。

IPデータグラム

 IPヘッダの基本ヘッダ部分は、20バイト(160bit)で構成されています。オプションは、必ず付けなければならないというものではありません。

IPヘッダ

IPヘッダ内の各フィールドの情報について説明していきます。

 IPヘッダは、基本ヘッダのサイズが20バイトなので、標準で20バイトです。これにオプションを付けると20バイトを超えることになりますが、全体のサイズは、必ず4の倍数のバイト数になるように調整されるようになっています。

各フィールドの説明は、以下の通りです。

1.バージョン(4bit)

「4」であれば、IPv4、「6」であれば、IPv6であることを示します。

プロトコル番号プロトコル
4IPv4
6IPv6
7TP/IX
8PIP
9TUBA

2.ヘッダ長(4bit)

IPヘッダーの長さを示します。

3.TOS:サービスタイプ(8bit)

TOS(Type of Service)ビットには、IPパケットの優先順位を決めるための数値が格納されます。

4.パケット長(16bit)

IPヘッダとデータを含めたパケット全体の長さ示します。

 次の3つの情報、「識別番号」、「フラグ」、「フラグメントオフセット」は、データの分割と組み立てに関わる情報です。

5.識別番号(16bit)

 大きなデータを運ぶ時、ネットワークの境界で、MTUのサイズを超えてしまう場合があります。このデータを送るには、複数のパケットにに分割して送る必要があります。その際、もとは同じで分割されたデータなのか、全く別のデータなのかを識別するために使用します。

 分割されたデータのIPヘッダ内の「識別番号」には、全て同じ値が入ります。「識別番号」が同じであれば、もとのデータは、もともとは、1つのデータであったことが分かります。

6.フラグ(3bit)

IPパケットの分割を制御する時に使用されます。

ビット番号意味
ビット0予約(未使用)
ビット1分割を許可するかしないかを表す値
0 ・・・ 分割可
1 ・・・ 分割不可
ビット2フラグメントが最後かどうかを表す値
0 ・・・ 最後のフラグメントであることを示す。
1 ・・・ 後続のパケットが存在することを示す。

7.フラグメントオフセット(13bit)

 分割されたパケットが、元のデータでは、どこの位置にあるのかを表します。単位は8オクテットで、最大8×8,192(213)=65,536オクテットになります。

8.TTL:生存時間(8bit)

 TTL(Time to Live)は、生存時間です。ルータを経由する度に基本的には、1づつ減ってゆき、0になった時点でパケットが破棄されるようになっています。

9.プロトコル(8bit)

IPの上位層プロトコルを表し、次のプロトコルが定義されています。

プロトコル番号プロトコル
0予約
1ICMP
4IP
5ST(データストリーム
6TCP
17UDP
46RSVP
88IGRP

10.ヘッダチェックサム(16bit)

 IPパケットに誤りがないかどうかをチェックするためにあります。TTL値は、ルータを経由する度にTTL値が変わるので、ルータを経由する度に、各ルータで再計算されます。
めにあります。

11.送信元IPアドレス(32bit)

送信元のIPアドレスが入ります。

12.宛先IPアドレス(32bit)

宛先のIPアドレスが入ります。

13.オプション(可変)

IPパケットに付加するオプションを指定します。

14.パディング:Padding(可変)

 オプションを指定した場合、長さが32ビット(4バイト)の倍数のバイト数になるように0で穴埋め(パディング)をして調整するために使用します。