ネットワーク用語 > IPヘッダ
IPヘッダ = Internet Protocol header
IPパケット | |
IPヘッダ | IPペイロード |
※単位:1バイト(byte)=8ビット(bit)
IPヘッダの中身は以下のような形式で情報が入っています。
IPヘッダの基本ヘッダ部分は、20バイト(160bit)で構成されています。
オプションは、必ず付けなければならないというものではありません。
IPヘッダのフォーマットは以下の通りです。IPヘッダは20バイトのサイズですが、オプションが追加された
場合は最大で60バイトのサイズとなります。ただ、オプションやパディングは一般的には使用されることは
ないのであまり意識する必要はありません。「データ」はIPヘッダではなくIPペイロードと呼ばれる部分です。
※ IPペイロード部分には、TCPやUDPなど上位層プロトコルのヘッダとデータが含まれます。
@IT:連載 基礎から学ぶWindowsネットワーク 第10回 IPパケットの構造とIPフラグメンテーション 1.IPパケットの構造
IPパケットの詳細構造
IPパケットの構造は、IPヘッダ部分と、IPパケットによって運ばれるデータ部分(図中の赤の部分)の大きく2つに分けられる。
そしてIPヘッダはさらに固定長の部分(図中の青色と緑色の部分。先頭の20bytes)と、オプション部分(図中の黄色の部分。最小0byte)の2つで構成される。
図中の小さい1目盛りは1bit幅であり、ここでは32bitずつに区切って表現している。
IPv4ヘッダには、12のフィールドがあります。
バージョン(Version)フィールドは、IPのバージョンを表します。
IPv4は、4(2進数表現では0100)です。
IPv6は、6(2進数では0110)です。
同じネットワーク媒体上に、IPv4とIPv6のパケットが混在していても、バージョンフィールドによって区別することができます。
整数 | バージョン |
0-1 | (予約) |
2-3 | (未割当) |
4 | Internet Protocol |
5 | ST Datagram Mode |
6 | Internet Protocol version 6 |
7 | TP/IX(The Next Internet) |
8 | PIP(The P Internet Protocol) |
9 | TUBA |
10-14 | (未割当) |
15 | (予約) |
ヘッダ長(IHL:Internet Header Length インターネットヘッダ長)フィールドは、IPヘッダの長さを表しています。
ヘッダ長によって、IPヘッダとデータの境目が分かります。
4ビット幅しかないので、0から15までしか表現できないが、ヘッダの長さは32ビット(4バイト)単位(つまりヘッダ部分は常に4バイトの倍数)で数えるので、最大長は15×4=60バイトまで表せます。
IPヘッダの固定長部分(基本ヘッダ)が常に20バイトあるので、このフィールドの最小値は5(20÷4)であり、最大値は15となります。
サービス・タイプ・フィールドは、IPパケットの優先度などを表すTOS(Type Of Service)を指定するために使われます。
ある特定の値が指定された場合には、他のパケットよりも優先してルーティング処理などを行う、といった設定ができます。
例えば、音声トラフィックとデータトラフィックでは、音声トラフィックのデータを優先して送出することができる、などです(いわゆるQoS処理)。
現在使われている実際のTCP/IPネットワークでは、このフィールドによるTOS指定はほとんど使用されておらず、意味を持っていないことが多いようです。
パケット長(Total Length)フィールドは、IPヘッダとデータを含めたパケット全体の長さを表します。
ヘッダ長フィールドが「IPヘッダのサイズ」を4バイト単位で数えたのに対し、パケット長フィールドはIPパケット全体のサイズをバイト単位で数えたものです。
このフィールドの幅は16ビットなので、IPパケットのサイズの最大長、つまり1つのIPパケットで送信可能なデータ(+ヘッダ部)のサイズは64Kバイト(65,535バイト)までとなります。
IPパケットがフラグメント化(大きなIPパケットを小さなIPパケットに分割)されている場合は、このフィールドは、元のIPパケット全体のサイズではなく、このIPフラグメントだけのサイズを表します。
ID(Identification)フィールドは、IPパケットを識別するための数値です。
サイズの大きなIPパケットをフラグメント化(分割)する時に、分割後のIPパケット全てに同じ識別番号を与えることによって、分割されたIPパケットを結合して元のIPパケットに戻すことができます。
各コンピュータは、IPパケットを送信するたびにランダムな16ビットの数値を、このIDフィールドに設定します。
このIDの数値そのものには意味がなく、毎回異なるIDがセットされてからIPパケットが送信されるということだけが重要です。
同じIPパケットに属するフラグメント化されたパケットは、すべて同じIDを共有するので、後で1つのIPパケットに再構成する場合の目印となります。
フラグ・フィールドもフラグメンテーションにおいて利用される、特別なフラグ情報である。
3bit分あるが、使われているのは以下の2bit分だけである。
フラグメントされたパケットがもとのパケットのどの位置であったかを示す情報。
フラグメント・オフセット・フィールドは、フラグメント化されたIPパケットにおいて、フラグメントのどの部分がIPパケット中に含まれているかを示すためのオフセット数値フィールドである。
IPパケットのサイズは64Kbytesあるが、上位3bitがフラグ・フィールドのために利用されているので、全部で13bit分の幅しかない。
しかしフラグメントは常に8bytes単位で行われるので、この値を8倍してオフセットの数値とする。
これならば13bitでも64Kbytesの範囲を表すことができる。