IP v4ヘッダ
- version [4ビット]
-
IPのバージョンを表します。
現在使われているバージョンは4です。
そのため、全てのIPデータグラムで、このフィールドは4になります。
次世代IPとしてIPv6(IP version 6)の場合には、このフィールドは6になります。 しかし、IPv6ヘッダのフォーマットはIPv4と異います。 そのため、「このフィールドが6になる」というよりは、最初の4ビットが4ならばIPv4で、6ならばIPv6であるという表現の方が正しいかも知れません。 IPv6ヘッダのフォーマットはこちらをご覧ください。 - IHL (IP Header Length) [4ビット]
- IPヘッダ長を4で割った値(32ビットワードの数)が入ります。 通常はIPヘッダオプションが付加されないので、5(5は20バイトを表します)になります。
- TOS (Type Of Service) [8ビット]
- 昔はtelnetなど即時性を求める通信とそれ以外など、サービス特性を表すものでしたが、現状ではDSCP(Differentiated Services Code Point)として定義しなおされています。 ECN(Explicit Congestion Notification)で使われたりもします。 どちらにせよ、今も昔も一般的にはほとんど使われていないフィールドです。
- Total Length [16ビット]
- データグラム全体の大きさを表します。 この値はIPヘッダを含む値です。 そのため、この値は20以下になることはありません。 IHLフィールドとは異なり、このフィールドの値はバイト単位(8bit単位)です。
- Identification [16ビット]
- Source AddressとIdentificationフィールドを使ってデータグラムの識別を行います。 データグラムの識別が必要になるのは、主にフラグメントされたデータグラムを再構築する時です。
- Flags [3ビット]
-
00 Reserved 01 DF (Don't Fragment)。値が1の場合には、IPデータグラムをフラグメントしない事が求められます。 02 MF (More Fragments)。値が1の場合には、まだフラグメントされたデータグラムの一部が続く事を表します。 値が0の場合には、最後のフラグメントである事を示します。 - Fragment Offset [13ビット]
- フラグメントされたデータグラムを再構築するために利用されます。
- TTL (Time To Live) [8ビット]
- データグラムが転送される最大ホップ数を表します。ルータで転送される度に値が1引かれます。この値が0になるとデータグラムは破棄されます。このフィールドは、ネットワーク内でデータグラムが永遠に転送され続ける状態の発生を防ぎます。
- Protocol [8ビット]
- IPヘッダの次に続くフィールドのプロトコルを表します。1:ICMP、6:TCP、17:UDPなどが一般的です。詳細はこちらをご覧下さい。
- Header Checksum [16ビット]
- IPヘッダとIPヘッダオプションのチェックサムです。ルータでTTLが1引かれる毎に再計算されます。
- Source IP Address [32ビット]
- 送信元のIPアドレスです。
- Destination IP Address [32ビット]
- 宛先のIPアドレスです。
- Options and Padding
- 必要に応じて付け足されるオプションです。可変長です。