【入門編】 ネットワーク層(Layer 3)のIPヘッダー構造 – ネットワーク基礎とWebセキュリティ実践ガイド

ネットワークの「封筒」を解剖する:IPヘッダーは旅する荷物の履歴書だ

ネットワークエンジニアの世界へようこそ!インフラの現場に立つと、私たちは日々、目に見えない「パケット」という小さな荷物を世界中に送り届けています。

「IPヘッダー」と聞くと、なんだか無機質なビットの羅列に思えて、頭が痛くなりませんか? でも大丈夫。このヘッダーは、あなたが海外の友人に送る「国際郵便の封筒」そのものなんです。

今日は、その封筒に書かれた「宛先」や「送り主」、そして「旅のルール」がどう記されているのか、現場の視点を交えながら紐解いていきましょう。

—

1. パケットの顔、「IPヘッダー」の役割

私たちがPCからWebサイトにアクセスするとき、データは小さく刻まれて「パケット」になります。そのパケットの先頭には、必ず「IPヘッダー」という名札がついています。これがないと、ルーターという名の郵便局員たちは、その荷物をどこへ運べばいいのか分からなくなってしまいます。

まずは、ヘッダーに書かれている主要なフィールドを、郵便の仕組みに例えて見ていきましょう。

Version (バージョン)

これは「郵便の規格」です。今はほぼ IPv4 ですが、未来の規格である IPv6 も存在します。「この手紙は古いルールで書いているのか、新しいルールなのか」を最初に伝えます。

IHL (Internet Header Length)

「ヘッダーの長さ」です。手紙の封筒の形がいつも同じとは限りませんよね。オプションが付いていると封筒が分厚くなるように、ヘッダーのサイズをルーターに教えます。

TOS (Type of Service)

「優先度」です。VIPの荷物なのか、普通の郵便なのか。ネットワークの世界では、VoIP(電話)のような遅延が許されない通信に「優先してくれ!」と伝えるために使われます。

Total Length

「荷物全体のサイズ」です。中身を含めてどれくらいの重さがあるのか。これを読み取らないと、ルーターは「このトラックに乗るかな?」と迷ってしまいます。

—

2. 旅の途中で荷物がバラバラに?(フラグメンテーション)

ネットワークの世界には、「MTU(Maximum Transmission Unit)」という、一度に送れる荷物の最大サイズ制限があります。もし荷物が大きすぎたらどうなるでしょうか?

そう、パケットは「分割(フラグメンテーション)」されます。ここで登場するのが以下の3つです。

  • Identification: 「これは同じ荷物のバラバラになったパーツだよ」と示すID番号です。
  • Flags: 「まだ続きがあるのか?」「それともこれで最後か?」を伝える信号灯です。
  • Fragment Offset: 「バラバラになったパーツの、どの順番のピースか」を示します。

これらがあるおかげで、受け取り側のPCは、パケットが順番通りに届かなくても、パズルを組み立てるように元のデータを復元できるのです。

—

3. 寿命と身元確認:TTLとProtocol

TTL (Time To Live)

これは「生存時間」ですが、現場では「経由できるルーターの最大数」と覚えるのが正解です。ルーターを通過するたびに 1 減らされ、0 になると「宛先に届かないから廃棄!」と捨てられます。これは、迷子になったパケットが永遠にネットワークを徘徊して渋滞を引き起こすのを防ぐ、非常に重要な「寿命」なのです。

Protocol

「中身は何?」という情報です。届いた荷物を開けたとき、それが TCP なのか、UDP なのか、あるいは別のプロトコルなのかをOSに伝えます。これにより、OSは適切なアプリケーションにデータを渡すことができます。

Header Checksum

「書き換えチェック」です。旅の途中でデータが壊れていないか、計算式で検証します。もし計算が合わなければ、そのパケットは即座に破棄されます。「届かないよりは、壊れたものを捨てて再送を待つ」という、ネットワークの潔い設計思想ですね。

—

実践:パケットを覗き見してみよう

座学だけではつまらないので、実際にLinux環境でパケットをキャプチャしてみましょう。tcpdump を使えば、あなたのPCを駆け巡るIPパケットの様子が手に取るように分かります。

# eth0インターフェースを流れるパケットを詳細に表示するコマンド
# パケットのヘッダー情報を覗き見るためのエンジニアの定番ツールです
sudo tcpdump -i eth0 -v

出力結果には、以下のような情報が現れます。

# 出力例のイメージ
IP (tos 0x0, ttl 64, id 12345, offset 0, flags [DF], proto TCP (6), length 60)
    192.168.1.10 > 8.8.8.8: ...
  • ttl 64: まだまだ元気なパケットですね。
  • flags [DF]: “Don’t Fragment”(分割禁止)というフラグが立っています。現代の通信では、分割による遅延を避けるためにこれがよく使われます。

—

まとめ:エンジニアとしての視点

IPヘッダーは、単なるデータの羅列ではありません。「通信の信頼性を守るための知恵」が詰まった、ネットワークの歴史そのものです。

トラブルシューティングの際、パケットが届かない理由を追うとき、私たちは真っ先にこのヘッダーを確認します。「TTLが尽きていないか?」「MTUサイズで弾かれていないか?」――こうした泥臭い確認作業こそが、ゼロトラスト時代の境界防御を支える第一歩になります。

次は、このIPヘッダーのさらに上層にある「TCP/UDPヘッダー」の世界へ一歩踏み込んでみましょう。ネットワークの景色が、また違った色に見えてくるはずですよ!

コメント

タイトルとURLをコピーしました