IPヘッダー
IPパケットの先頭に付く制御情報である。宛先と送信元のIPアドレスなどを含み、転送や受信後の処理に使う。IPv4ではオプションがない場合に20バイトとなる。
イマシルちゃんの解説
パケットは、ネットワークで運ぶデータのまとまりだよ。
IPヘッダーはその先頭に付く制御情報で、封筒に書く宛先や差出人の情報に似ているんだ。
ルータは宛先を見て、パケットを次にどこへ送るか判断するよ。
IPv4では、通過するルータで値を減らすTTLも入っているんだ。
値が尽きたパケットは捨てるので、経路に輪があっても回り続けるのを防げるよ。
さらに、中身をTCPやUDPなどのどの処理へ渡すかは、プロトコル番号で見分けるの。
単なる宛名ではなく、届け方や受け取った後の扱いにも必要な情報なんだよ。
この解説はわかりやすかったですか?
より深い解説
定義
IPヘッダーは、ネットワーク層のプロトコルであるIPが、パケット(データグラム)の先頭に付ける制御情報である。ルータは、IPヘッダーの情報だけを見て、パケットを転送する。
IPv4ヘッダーの主なフィールド
| フィールド | 長さ | 内容 |
|---|---|---|
| バージョン | 4ビット | IPv4なら4 |
| ヘッダー長 | 4ビット | ヘッダーの長さ(4バイト単位) |
| ToS(DSCP、ECN) | 8ビット | 優先制御(QoS)のための情報 |
| 全長 | 16ビット | ヘッダーを含めたパケット全体の長さ |
| 識別子、フラグ、フラグメントオフセット | 32ビット | 分割(フラグメント)されたパケットを組み立て直すための情報 |
| TTL(生存時間) | 8ビット | パケットが通過できるルータの数の上限 |
| プロトコル番号 | 8ビット | データ部に入っている上位のプロトコル(TCPは6、UDPは17) |
| ヘッダーチェックサム | 16ビット | ヘッダーの誤りの検出 |
| 送信元IPアドレス | 32ビット | |
| 宛先IPアドレス | 32ビット | |
| オプション | 可変 | 通常は使わない |
層ごとのヘッダーに入っているもの
どの情報がどの層のヘッダーに入っているかを整理すると、次のようになる。
TCPとUDPの両方のヘッダーにあるのは、送信元ポート番号、宛先ポート番号、チェックサムである。IPアドレスやTTLはIPヘッダーに、MACアドレスはイーサネットのヘッダーに入っており、TCPやUDPのヘッダーには入っていない。
TCPとUDPのヘッダーの比較
| TCPヘッダー | UDPヘッダー | |
|---|---|---|
| 長さ | 20バイト(オプションなし) | 8バイト |
| フィールド | 送信元ポート番号、宛先ポート番号、シーケンス番号、確認応答番号、データオフセット、コントロールフラグ、ウィンドウサイズ、チェックサム、緊急ポインタ | 送信元ポート番号、宛先ポート番号、データ長、チェックサム |
UDPのヘッダーは、ポート番号と、長さとチェックサムだけのとても単純な構造である。
チェックサムと疑似ヘッダー
TCPとUDPのチェックサムは、自分のヘッダーとデータだけでなく、IPヘッダーの一部(送信元・宛先IPアドレス、プロトコル番号など)から作る疑似ヘッダーも含めて計算する。宛先を間違えて届いたパケットを検出するためである。このため、NATでIPアドレスを書き換えたときは、TCPやUDPのチェックサムも計算し直す必要がある。
IPv6ヘッダーとの違い
IPv6の基本ヘッダーは40バイトの固定長で、ヘッダーチェックサムがなく、分割の情報やオプションは拡張ヘッダーに分けられた。TTLに当たるフィールドは、ホップリミットという名前になっている。
検査する範囲と省略の可否
IPv4、TCP、UDPでは、同じチェックサムという名前でも、検査する範囲と省略できる条件が異なる。
| フィールド | 計算の対象 | IPv4での省略 |
|---|---|---|
| IPv4ヘッダーのチェックサム | IPv4ヘッダーだけ | 不可 |
| TCPのチェックサム | 疑似ヘッダー、TCPヘッダー、データ | 不可 |
| UDPのチェックサム | 疑似ヘッダー、UDPヘッダー、データ | 可能 |
IPv4のUDPでは、フィールドを0にすると未計算を示す。実際に計算した結果が0になるときは、すべてのビットを1として送る。計算時に一時的にフィールドを0として扱うことと、省略を示す0を送ることは別である。
インターネットチェックサムは、16ビット単位の1の補数加算を用いる。独自の単純な例では、対象の語が0x1234と0x0102なら、和は0x1336、そのビット反転は0xECC9となる。受信側でチェックサムも含めて加算すると0xFFFFになる。
IPv4のルータではTTLなどのヘッダー値が変わるため、このチェックサムも更新する。IPv6の基本ヘッダーには同じフィールドがない。一方、誤り検出用の加算値は、攻撃者による改ざんを防ぐ認証の代わりにはならない。
実際の試験ではここに出る!全13問
ネットワークスペシャリスト
- 午前Ⅱ
- 午後Ⅰ
- 午後Ⅱ