◆IPデータグラムとIPヘッダ |
IPデータグラムとIPヘッダ
通信相手のアドレス情報を取得した後は、実際にデータを含んだパケットを送り出して行くわけですが、IP層から送り出されるパケット(IPデータグラム)は、IPヘッダとデータからなっています。
ここでは、IPデータグラムとIPヘッダについて説明してゆきます。
◆IPデータグラム
IPヘッダの基本ヘッダ部分は、20バイト(160bit)で構成されています。オプションは、必ず付けなければならないというものではありません。
◆IPヘッダ
IPヘッダ内の各フィールドの情報について説明してゆきます。
IPヘッダは、基本ヘッダのサイズが20バイトなので、標準で20バイトです。これにオプションを付けると20バイトを超えることになりますが、全体のサイズは、必ず4の倍数のバイト数になるように調整されるようになっています。
0 |
15 |
16 |
31 |
バージョン
(4ビット) |
ヘッダ長 (4ビット) |
TOS
(8ビット) |
パケット長
(16ビット) |
識別番号
(16ビット) |
フラグ
(3ビット) |
フラグメントオフセット
(13ビット) |
TTL
(8ビット) |
プロトコル番号
(8ビット) |
ヘッダチェックサム
(16ビット) |
送信元IPアドレス
(32ビット) |
宛先IPアドレス
(32ビット) |
オプション |
パディング |
|
←―― |
32ビット |
――→ |
各フィールドの説明は、以下の通りです。
1.バージョン(4bit)
「4」であれば、IPv4、「6」であれば、IPv6であることを示します。
プロトコル番号 |
プロトコル |
4 |
IPv4 |
6 |
IPv6 |
7 |
TP/IX |
8 |
PIP |
9 |
TUBA |
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 |
予約 |
1 |
ICMP |
4 |
IP |
5 |
ST(データストリーム |
6 |
TCP |
17 |
UDP |
46 |
RSVP |
88 |
IGRP |
10.ヘッダチェックサム(16bit)
IPパケットに誤りがないかどうかをチェックするためにあります。TTL値は、ルータを経由する度にTTL値が変わるので、ルータを経由する度に、各ルータで再計算されます。
めにあります。
11.送信元IPアドレス(32bit)
送信元のIPアドレスが入ります。
12.宛先IPアドレス(32bit)
宛先のIPアドレスが入ります。
13.オプション(可変)
IPパケットに付加するオプションを指定します。
14.パディング:Padding(可変)
オプションを指定した場合、長さが32ビット(4バイト)の倍数のバイト数になるように0で穴埋め(パディング)をして調整するために使用します。
|
|
|