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
必要に応じて付け足されるオプションです。可変長です。