IPパケット
本項では、パケットヘッダー構造について説明します。また、送信可能な最大パケット長のMTUについても説明しています。
パケットヘッダー構造
フレームは、フレームとCSMA/CD方式で説明したとおり、以下の構造をしています。
このペイロード部分にIPアドレスなどの情報が入りますが、これをパケットと呼びます。IPv4のタイプ値(上図でタイプの値)は、0800です。このため、タイプ値が0800であれば、ペイロード部分にはIPv4のパケットが入っているということになります。
パケットの構造は、以下のようになっています(フレームのペイロード部分に、以下の情報が入っています)。
それぞれの意味は、以下のとおりです。
項目 | 英語 | ビット | 説明 |
---|---|---|---|
バージョン | Version | 4 | IPv4では4 |
ヘッダー長 | Internet Header Length | 4 | オプションまでの長さ |
ToS | Type of Service | 8 | パケットの優先度 |
パケットの長さ | Total Length | 16 | ペイロード含めた長さ |
ID | Identification | 16 | 通信が進むと増加する値 |
フラグ | Flags | 3 | パケット分割可否 |
フラグメントオフセット | Fragment Offset | 13 | パケットを分割した場所 |
TTL | Time to Live | 8 | 通信が長くなると破棄 |
プロトコル番号 | Protocol | 8 | ペイロードの内容 |
チェックサム | Header Checksum | 16 | エラー検知用 |
送信元IPアドレス | Source Address | 32 | 送信元IPアドレス |
宛先IPアドレス | Destination Address | 32 | 宛先IPアドレス |
オプション | Options | 可変 | 必要に応じて利用 |
ペイロード | Payload | 可変 | 送信するデータ |
「Wiresharkを使った解析」のパケット詳細での解析では、Wiresharkで採取した実際のパケットを、画面表示して説明しています。
バージョンからオプションまでを、パケットヘッダー(IPヘッダー)と呼びます。ペイロード部分にポート番号などの情報が入ります。
なお、フレームを説明していてもパケットと呼ばれることがあるため、どちらを示しているか留意する必要があります。
IPパケットの補足説明
補足が必要と思われる項目の説明は、以下のとおりです。
- ヘッダー長(Internet Header Length)
- ヘッダー長は、パケットヘッダーの長さです。32ビットの倍数で表します。例えば、オプションがなければ160ビットなので、ヘッダー長は5(32ビット × 5 = 160ビットのため)になります。パケットヘッダーは32ビットの倍数の必要があるため、オプションがあって倍数にならない場合は、パディングとしてオプションの後に0で倍数になるように埋められます。
- ToS(Type of Service)
- ToSは、パケットの優先度を示します。優先度が高いパケットが、ルーターやLANスイッチから先に送信されたりします。詳細は、QoSをご参照ください。
- フラグ(Flags)とフラグメントオフセット(Fragment Offset)
- パケットは分割されることがあります。その際は、フラグを有効にしてフラグメントオフセットで分割した場所を示します。詳細は、フラグメントをご参照ください。
- TTL(Time to Live)
- TTLは、ルーターを超えるごとに1引かれます。ルーターは1引いて0になったパケットは、破棄します。これは、ルーティングがループして、永遠にパケットが回ってしまわないための処置です。
- プロトコル番号
- ペイロード部分の情報が何かを番号で示します。例えば、TCPであれば6番、UDPであれば17番になります。TCPとUDPの詳細は、TCPとUDPをご参照ください。
- チェックサム
- パケットからある計算をして、結果の数字が入ります。受信側は同じ計算をして、結果が同じでなければパケットが壊れていると判断できます。つまり、エラーパケットの検知のために使います。
MTU
機器から送信できる最大のパケットの長さを、MTU(Maximum Transmission Unit)と言います。
フレームが1518バイトの場合が多いため、MTUはフレームのヘッダー長の18バイトを除いた1500バイトの場合が多いですが、ネットワークによって大きさが異なります。
例えば、NTT東西で提供しているフレッツではフレームの中にPPPoEの情報を追加する必要があるため、MTUが1500バイトより小さく1454バイトになっています。また、ルーターやLANスイッチでジャンボフレームが使える場合は1500バイトより大きくなり、その分ペイロードで運べるデータ量が多くなります。
なお、受信可能な最大のパケット長を、MRU(Maximum Receive Unit)と言います。一般的に、MTUとMRUは同じサイズです。