NET // communication networks
LESSON 20 / 標準編

ネットワーク層 ─ IP・サブネット計算・NAT・ICMP

ネットワーク層の主役 IP(Internet Protocol) を実用レベルまで掘り下げます。IPv4 ヘッダの全フィールド、サブネットマスクと CIDR の二進計算、ネットワーク/ブロードキャスト/ホスト範囲の求め方、家庭ルータが1つの IP を共有する仕組み NAT/NAPT、そして ping や traceroute の裏側で働く ICMP まで。図とミニ計算で「自分の手で」確かめながら学びます。

学習目標

本講を終えると、以下の問いに学術的な言葉で答えられるようになります。

本講は基礎の 第4回 IPアドレスとドメイン名(基礎) で扱った「ネット上の住所」「グローバルとプライベート」の概念を前提に、ヘッダの中身サブネットの数学 を導入します。次回の標準編では本講で出てこなかった DHCP による動的アドレス配布と、本講で学ぶ NAT を組み合わせた家庭ネットワークの全景を扱います。

このレッスンの目次

01 ネットワーク層の役割 ネットワーク層(TCP/IP モデルではインターネット層と同義)の使命は、世界中の任… 02 IPv4 ヘッダ ネットワーク層のパケットは データグラム(datagram) と呼ばれます。IPv4… 03 断片化とTTL リンク層プロトコルが1フレームで運べるバイト数の上限を MTU(Maximum Tr… 04 クラス→CIDR 32 ビットの IPv4 アドレスをどう「ネットワーク部」と「ホスト部」に区切るか。… 05 サブネット計算 与えられた IP アドレスとプレフィクス長から、 ネットワークアドレス ・ ブロード… 06 プライベートIP プライベート IP は組織内部だけで通用する「合言葉」のようなアドレスです。インター… 07 NAT / NAPT 家庭の Wi-Fi ルータには「PC・スマホ・テレビ・スマートスピーカ…」と多数の機… 08 ICMP ICMP(Internet Control Message Protocol、RFC… 09 IPv6 概要 IPv4 の 32 ビット(約 43 億個) では世界の機器を到底まかないきれない、… 10 まとめ 本講の重要語句を整理 11 確認問題 理解度を問題でチェック

ネットワーク層の役割 ─ 「届ける」と「経路を決める」

ネットワーク層(TCP/IP モデルではインターネット層と同義)の使命は、世界中の任意の送信ホストから任意の受信ホストへ パケットを届ける ことです。これを実現するために、ネットワーク層には2つの異なる仕事が同居しています。
POINT ネットワーク層の2大機能:
1. フォワーディング(forwarding) ─ ルータに届いた1つのパケットを、宛先 IP を見て適切な出力リンクへ転送する(高速・データプレーン)
2. ルーチング(routing) ─ 経路全体を 事前に計算 してフォワーディング表(ルーチングテーブル)を作る(コントロールプレーン)

本講では主に フォワーディング の前提となるアドレス体系と IP ヘッダを扱います。ルーチングプロトコル(RIP/OSPF/BGP) で経路をどう計算するかは 標準 ルーティング(準備中) で扱います。

IP の設計思想 ─ ベストエフォート

IP は ベストエフォート(best-effort) 型のサービスです。「届くように最善を尽くしますが、配送完了・順序・遅延の上限は保証しません」というスタンス。確実な配送が必要であれば、上層の TCP が再送と順序整列で責任を持つ、という分担です。これにより、ネットワーク層はシンプルで高速に保たれ、世界中の異なる物理網を横断して動作できます。

サブネット A 192.168.10.0/24 .2 .3 .4 サブネット B 192.168.20.0/24 サブネット C 203.0.113.0/24 ルータ R1 ルータ R2 同じサブネット内 = リンク層スイッチで届く / 別サブネットへ = ネットワーク層のルータが必要

図の見方:サブネット はルータで区切られた1つの IP ネットワーク。サブネット内通信はリンク層(MAC アドレス)で完結し、別サブネットへは必ず ルータ を経由します。インターネットとは「サブネットを相互接続したもの」と言えます。

フラグメンテーションと TTL

リンク層プロトコルが1フレームで運べるバイト数の上限を MTU(Maximum Transmission Unit) と呼びます。Ethernet なら標準 1,500 バイト。IP データグラムが MTU を超えると、ルータは 断片化(fragmentation) を行い、複数の小さな断片に分けてから次リンクへ送出します。
POINT 断片化は 送信時にルータが行い、受信ホストで組み立て直す。各断片は 同じ Identification を持ち、Fragment Offset で元データ内の位置を、MF フラグ で「まだ後続あり」を示す。

断片化の流れ(MTU 1,500 のリンクから MTU 620 のリンクへ)

元データグラム Total Length = 1500 ID = 7777, MF=0, Offset=0 ルータ 次リンク MTU=620 断片 1 (0-599) ID=7777, MF=1, Off=0 断片 2 (600-1199) ID=7777, MF=1, Off=75 断片 3 (1200-1479) ID=7777, MF=0, Off=150 受信ホスト 同じ ID で再構成

図の見方:1 つの 1,500 バイトデータグラムが、MTU 620 のリンク用に 3 つの断片に分割される。Offset は 8 バイト単位なので、600 バイト目を示す値は 600/8 = 75。受信側で組み立てが完了するまで、ルータは(IPv4 では)転送のみ。

TTL ─ ループでパケットを永遠にさまよわせない

TTL(Time to Live) は本来「秒数」として設計されましたが、実装上は ルータを通るたびに 1 減るホップカウンタ として運用されています。0 になったパケットはルータに 破棄 され、その時点でルータは送信元に ICMP Time Exceeded を返します(後述)。これにより、ルーチング異常で循環してしまったパケットが網内を永久にさまようのを防げます。

Linux の標準値は通常 64、Windows は 128、古い Solaris は 255。OS によって異なるため、ping の TTL 値を見れば相手 OS をある程度推測できます(ネットワーク機器のフィンガープリンティングでも利用される)。

近年は断片化を避ける ─ Path MTU Discovery

断片化はルータの負荷・パケットロス時の再送効率の悪さなどから、現代では避けられる傾向にあります。Path MTU Discovery(PMTUD) は、送信ホストが DF フラグを立てた パケットを送り、途中のルータで「これは通せない」と ICMP Fragmentation Needed が返れば、その情報からパス全体の最小 MTU を学習して、自身でサイズを抑える仕組みです。IPv6 ではルータが断片化できなくなり、PMTUD が必須化されました。

もっと詳しく:断片化が嫌われる理由

アドレスクラスから CIDR へ ─ 歴史と現代

32 ビットの IPv4 アドレスをどう「ネットワーク部」と「ホスト部」に区切るか。1980 年代の クラスフルアドレス から、現代の CIDR(Classless Inter-Domain Routing) へ進化した経緯を押さえます。

クラスフルアドレス(1981〜)

RFC 791 当時、ネットワーク部の境界は IP アドレスの先頭ビットパターンで 固定的に決まって いました。先頭が 0 ならクラス A、10 ならクラス B、110 ならクラス C、と判定する方式です。

クラス先頭ビット範囲NW部 / ホスト部NW数ホスト/NW
A00.0.0.0 〜 127.255.255.2558 / 24 bit128約 1,677 万
B10128.0.0.0 〜 191.255.255.25516 / 16 bit16,38465,536
C110192.0.0.0 〜 223.255.255.25524 / 8 bit2,097,152256
D1110224.0.0.0 〜 239.255.255.255マルチキャスト用
E1111240.0.0.0 〜 255.255.255.255実験/予約
クラスフルの問題:中規模組織(例:1,000 台規模)が必要なとき、クラス C(256 個)では足りずクラス B(65,536 個)を取らざるを得ず、大量のホスト部が無駄になる(アドレス枯渇の主因)。

CIDR(RFC 1518/1519、1993〜)

クラスの枠を取り払い、ネットワーク部の長さを 1 ビット単位で自由に 指定できるようにしたのが CIDR です。表記は IPアドレスの末尾に スラッシュ + プレフィクス長 を添えます(例:192.168.10.0/24)。プレフィクス長は「上位何ビットがネットワーク部か」を意味します。

CIDR は サブネッティング(細分割)スーパーネッティング(集約) の両方を可能にし、必要なサイズに合わせてアドレスを割り当てられます。さらに ルーチングテーブルの集約 によりルータの負荷も軽減されました。

BGP で配るインターネット経路の単位もすべて CIDR 表記です。たとえば「203.0.113.0/24 はうちが管理しています」と AS 同士でやり取りします。

プライベート IP アドレス(RFC 1918)

インターネットに直接出ない、組織内部だけで使えるアドレス帯が RFC 1918 で予約されています。このアドレス帯はインターネット上のルータが破棄するため、異なる組織で同じアドレスを自由に使える のが特徴です。

クラス相当CIDR 表記範囲個数
A10.0.0.0/810.0.0.0 〜 10.255.255.255約 1,677 万
B172.16.0.0/12172.16.0.0 〜 172.31.255.255約 104 万
C192.168.0.0/16192.168.0.0 〜 192.168.255.25565,536

家庭ルータの LAN 側はほぼ 192.168.0.0/24 または 192.168.1.0/24。多くの大学・企業の内部 LAN は 10.0.0.0/8。これらのアドレスは NAT によってグローバル IP に変換されてからインターネットに出ます(後述)。

その他の特殊アドレス

Q. 「サブネットマスクは何のためにあるのか?」を、同じサブネットかどうかをホストが判定する場面 を例に挙げて説明してみてください。

サブネット計算 ─ 二進数で「自分の手で」求める

与えられた IP アドレスとプレフィクス長から、ネットワークアドレスブロードキャストアドレスホスト範囲 を求める。これは大学の試験や基本情報技術者試験で頻出の計算です。コツは 二進数で考える こと。

サブネットマスクの読み方

プレフィクス長 /n は「上位 n ビットがネットワーク部」を意味します。同じことを 32 ビットの サブネットマスク(上位 n ビットが 1、残り 32-n ビットが 0)で表すこともできます。

プレフィクス10進サブネットマスク二進(下位 8 bit のみ抜粋)ホスト数使えるホスト数
/24255.255.255.0… 00000000256254
/25255.255.255.128… 10000000128126
/26255.255.255.192… 110000006462
/27255.255.255.224… 111000003230
/28255.255.255.240… 111100001614
/30255.255.255.252… 1111110042

「使えるホスト数」が −2 されている理由: ホスト部全 0 は ネットワークアドレス(サブネット自体を指す)、ホスト部全 1 は ブロードキャストアドレス(同サブネット全員宛て)として予約されているため、実際にホストに割り振れるのは 2 引いた数になります。

例題:192.168.10.0/24 を /26 で 4 分割する

もとのサブネット 192.168.10.0/24(256 個)を、/26(64 個)で 4 つに区切ってみます。第 4 オクテットの上位 2 ビットが「サブネット番号」になります。

サブネット 第4オクテット(2進) ネットワーク ホスト範囲 ブロードキャスト サブネット1 00000000 192.168.10.0/26 .1 〜 .62 192.168.10.63 サブネット2 01000000 192.168.10.64/26 .65 〜 .126 192.168.10.127 サブネット3 10000000 192.168.10.128/26 .129 〜 .190 192.168.10.191 サブネット4 11000000 192.168.10.192/26 .193 〜 .254 192.168.10.255 赤色の上位 2 ビットがサブネット識別子。これが 00/01/10/11 の 4 通りで 4 サブネットになる。

図の見方:第 4 オクテットの上位 2 ビット(赤)が「どのサブネットか」を表し、下位 6 ビットが「サブネット内のホスト番号」。各サブネットの最初(全 0)と最後(全 1)はネットワーク・ブロードキャスト用に予約。

計算手順:任意の IP/プレフィクスからネットワークアドレスを求める

例として、192.168.1.100/26 の所属サブネットを求めてみましょう。

手順 1. IP アドレスを 2 進数に変換
  192.168.1.100 = 11000000.10101000.00000001.01100100
2. プレフィクス /26 のサブネットマスク = 11111111.11111111.11111111.11000000
3. 桁ごとに 論理積 を取る → ホスト部(下位 6 bit)が 0 になる
  = 11000000.10101000.00000001.01000000
4. 10 進に戻す → 192.168.1.64/26 がネットワークアドレス
5. ホスト部を全 1 にしたものがブロードキャスト → 192.168.1.127
6. ホスト範囲は 192.168.1.65 〜 192.168.1.126(62 個)

速算のコツ: /26 は第 4 オクテットを 64 刻みで区切るので、100 が含まれるブロックは 64 〜 127。先頭 64 がネットワーク、末尾 127 がブロードキャスト、と即答できます。/27 なら 32 刻み、/28 なら 16 刻み。「ブロックサイズ = 256 - 該当オクテットのマスク値」 と覚えると速いです。

小問:192.168.1.100/26 のネットワークアドレスは次のうちどれ?
正解:B。/26 はブロックサイズ 64 なので、第 4 オクテットは 0/64/128/192 で区切られる。100 は 64 〜 127 のブロックに入るため、ネットワークアドレスは 192.168.1.64、ブロードキャストは 192.168.1.127、ホスト範囲は .65〜.126(62 個)。A は /24、C は /27 の境界、D は次のブロック。
もっと詳しく:CIDR 表記の便利さ

CIDR 表記はサブネット計算と 経路集約 の両方で威力を発揮します。たとえば 192.0.2.0/24192.0.3.0/24 は隣接する 2 つの /24 ですが、これらの上位 23 ビットは同一なので、ルータのテーブルでは 192.0.2.0/23 という 1 行に 集約(supernetting) できます。世界中の経路を運ぶ BGP ルータでは、この集約により内部テーブルを 数万 〜 数十万行のオーダに抑えています。さらに、最長一致(Longest Prefix Match)原則によって、より具体的な経路(より長いプレフィクス)を優先するため、集約しつつ細かい例外も同時に表現できます。

プライベート IP の使いどころ

プライベート IP は組織内部だけで通用する「合言葉」のようなアドレスです。インターネット側に出るときは必ず グローバル IP に変換 される必要があり、その役を担うのが次節の NAT です。
家庭(典型) 192.168.1.0/24 192.168.1.10 192.168.1.11 192.168.1.1 (GW) 大学・大企業 10.0.0.0/8 10.20.5.32 10.20.5.99 10.30.1.5 中規模オフィス 172.16.0.0/12 172.16.3.20 172.20.4.5 172.31.7.1 3 つの組織は同じ「10.x.x.x」「192.168.x.x」を自由に使っても、外には出ないので衝突しない。

図の見方:左から「家庭(192.168/16)」「大学・大企業(10/8)」「中規模(172.16/12)」が典型的な使い分け。これらの内部アドレスはインターネット上のルータに来ても そのまま破棄 されるため、世界中で重複していて構いません。

NAT / NAPT ─ 1 つのグローバル IP を共有する仕組み

家庭の Wi-Fi ルータには「PC・スマホ・テレビ・スマートスピーカ…」と多数の機器がぶら下がりますが、ISP から割り当てられたグローバル IP は通常 たった 1 つ。それでも全機器が同時にネットを使えるのは、NAT(Network Address Translation) ─ 厳密には NAPT(Network Address Port Translation、別名 IP マスカレード) ─ のおかげです。
POINT NAT = ルータが 送信元 IP を書き換える 仕組み
NAPT(PAT) = それに加え 送信元ポート番号も書き換える。これにより 1 つのグローバル IP で複数台 が同時にインターネットに出られる(現代の家庭ルータはほぼ全てこちら)

3 つの NAT 種別

種類変換規則用途
静的 NAT(1:1)内部 IP ↔ 外部 IP を 固定 で対応社内サーバを外部公開する DMZ など
動的 NAT(N:M)複数の外部 IP プールから その都度割り当て外部 IP をある程度確保している中規模組織
NAPT / PAT(過負荷)1 つの外部 IP に ポート番号で多重化家庭・小規模オフィスの 事実上の標準

NAPT の動作 ─ 4 ステップで追う

プライベートネットワーク 192.168.1.0/24 192.168.1.2 192.168.1.4 NAT ルータ 外: 133.71.102.193 インターネット 162.21.35.100 Web サーバ:80 送信元: 192.168.1.2:17463 宛先: 162.21.35.100:80 変換テーブルに登録 192.168.1.2:17463 ⇔ 133.71.102.193:38261 送信元: 133.71.102.193:38261 宛先: 162.21.35.100:80 宛先: 133.71.102.193:38261 → テーブル参照 → .1.2:17463 へ復元
ステップ 1:内部から発信。 192.168.1.2 のホストが、Web サーバ 162.21.35.100:80 に対して 送信元ポート 17463(OS が動的に選んだエフェメラルポート)でリクエストを送ります。この時点でパケットの送信元は プライベート IP なので、そのままインターネットには出せません。
ステップ 2:NAT ルータがエントリを作成。 ルータは「192.168.1.2:17463133.71.102.193:38261」という変換対を内部の NAT テーブル に登録します。外部側のポート 38261 は重複しないようルータが動的に選びます。これで「戻り便のラベル」が用意できました。
ステップ 3:書き換えて転送。 ルータは送信元 IP・送信元ポートを 133.71.102.193:38261 に書き換えてからインターネット側へ送出します。Web サーバから見ると、リクエストはルータから来たように見えます(内部 PC の存在は隠蔽されている)。
ステップ 4:戻り便を逆変換。 Web サーバは 133.71.102.193:38261 宛てに応答します。ルータはこの宛先ポート 38261 で NAT テーブルを引き、192.168.1.2:17463 に戻して内部へ届けます。同時に別の PC(192.168.1.4) が同じサーバへアクセスしていても、ポートが違えば別エントリになるため混ざりません。
1 / 4

図の見方:NAT ルータは 外向きパケットでテーブルを作り戻り便はテーブルを引いて逆変換 します。鍵は「送信元ポート番号」を多重化に使うこと。これが NAPT(=現代の NAT) の本質です。

NAT のアニメーション(IP/ポート書き換え)

パケットがどこで書き換わるかを、循環アニメーションで観察します。再生・一時停止・巻き戻しで、送信元の IP/ポートが変わる瞬間 に注目してください。

192.168.1.2 NAT ルータ 送信元書き換え .1.2:17463 → .102.193:38261 162.21.35.100:80 送:192.168.1.2:17463 宛:162.21.35.100:80 送:133.71.102.193:38261 宛:162.21.35.100:80

図の見方:左半分(青パケット)は内部 IP/ポートのまま、NAT ルータを通過すると右半分(ピンクパケット)に書き換わります。宛先 IP/ポートは変わらず、送信元側だけが書き換わるのがポイント。

NAT の問題点

NAT は IPv4 の延命策として偉大ですが、副作用も多くあります。 こうした問題こそが、根本的な解(=IPv6 でアドレス枯渇を本当の意味で解消する) を進める動機になっています。

ICMP ─ ネットワーク層の「お知らせ係」

ICMP(Internet Control Message Protocol、RFC 792) は、IP の補助として エラー通知や診断 を担うネットワーク層プロトコルです。「届かなかった」「TTL が切れた」「もっと良い経路がある」など、ホスト・ルータ間の連絡係を担当します。IPv4 ヘッダの Protocol = 1 で識別されます。
POINT ICMP は 独立したプロトコルでありながら IP の上で動く(IP データグラムのペイロードに ICMP メッセージを格納する)。アプリ層に位置するわけではなく、ネットワーク層の補助 と理解する。

主要な ICMP メッセージ種別

Type名称用途
0Echo Replyping の応答
3Destination Unreachable宛先到達不能(Code でさらに細分:Network/Host/Port Unreachable、Fragmentation Needed 等)
5Redirect「もっと良いゲートウェイがあるよ」とホストに通知
8Echo Requestping の問い合わせ
11Time ExceededTTL が 0 で破棄(traceroute の動作原理)
12Parameter Problemヘッダに不正なフィールドあり

ping の仕組み

ping は最も使われる ICMP 利用ツールです。指定ホストへ Echo Request(Type 8) を送り、相手が Echo Reply(Type 0) を返してくるかを確認することで、到達性と RTT(Round Trip Time)を測定します。

クライアント サーバ ICMP Echo Request(Type 8) ICMP Echo Reply(Type 0) RTT = Echo Reply の到着時刻 − Echo Request の送信時刻

図の見方:ping は ICMP Type 8 を投げて Type 0 の応答を待つだけ、というシンプルなプロトコル。RTT が分かるので、ネットワーク遅延の概算も測れます。

traceroute の仕組み ─ TTL の絶妙な利用

traceroute(Windows では tracert)は、宛先までの経路上の各ルータを 1 つずつ「炙り出す」ツールです。仕組みは TTL を巧みに使ったハックそのものです。

  1. TTL=1 でパケットを送る → 1 台目のルータで TTL が 0 になり破棄。そのルータが ICMP Time Exceeded(Type 11) を返す → 1 ホップ目のルータ IP が判明
  2. 次に TTL=2 で送る → 2 台目のルータで破棄 → そこから ICMP が返る → 2 ホップ目が判明
  3. これを TTL=3, 4, 5… と増やしながら繰り返し、最終的に 宛先ホスト到達(Echo Reply または Port Unreachable) まで進める
  4. 結果として 送信元から宛先までの経路上のすべてのルータ がリストアップできる
実装によって、UNIX 系の tracerouteUDP の高ポート番号 を使い、宛先到達時は ICMP Port Unreachable を引き出します。Windows の tracertICMP Echo Request を使うので動作が少し異なります。いずれも TTL 操作 + ICMP Time Exceeded が核となる発想です。

ICMP がブロックされると?

もっと詳しく:ICMP がブロックされると何が困る

セキュリティ上の理由で ICMP をすべてフィルタリングする組織がありますが、過度なブロックは副作用が大きいです。

実務上は 「全ブロック」ではなく Type ごとに選別」(例えば Type 3 と Type 11 は通す、Type 8/0 は内→外のみ許可、など)が推奨されます。

IPv6 の基本ヘッダとできること

IPv4 の 32 ビット(約 43 億個) では世界の機器を到底まかないきれない、というのは 1990 年代から自明でした。NAT は時間稼ぎの応急処置で、本質的な解決は IPv6 へのアップグレードです。ここでは、IPv6 の 基本ヘッダ を読み、どんな通信サービスを作りやすくなるのかを考えます。

IPv6 基本ヘッダフォーマット

IPv6 基本ヘッダ = 固定 40 バイト 32 bit 幅の行を 10 行並べる。オプションは基本ヘッダの外に「拡張ヘッダ」としてつなぐ 0 4 12 31 bit Version 4 bit Traffic Class DSCP / ECN Flow Label 同じ通信の流れを識別するヒント Payload Length Next Header TCP / UDP / 拡張 Hop Limit IPv4 の TTL 相当 Source Address 送信元 IPv6 アドレス(128 bit) 例: 2001:db8:1234::10 Destination Address 宛先 IPv6 アドレス(128 bit) 例: 2001:db8:abcd::80 拡張ヘッダへつなげる ヘッダチェックサムなし ルータは断片化しない 基本ヘッダは固定長

図の見方:IPv6 は基本ヘッダを 固定 40 バイト にし、ルータが毎回処理する部分を単純化している。IPv4 の Header Checksum はなく、TTL は Hop Limit に変わる。TCP/UDP なのか、IPv6 の拡張ヘッダが続くのかは Next Header で示す。

IPv4 と IPv6 の違い

項目IPv4IPv6
アドレス長32 bit(約 43 億)128 bit(約 3.4×1038)
ヘッダ長20 バイト(可変・チェックサムあり)40 バイト(固定・チェックサム廃止)
表記10 進・ドット区切り(192.0.2.10)16 進・コロン区切り(2001:db8::1、連続する 0 は :: に省略)
断片化ルータが行えるルータは行わない(送信元のみ)→ PMTUD 必須
NAT の必要性事実上必須本来不要(全機器がグローバル IP を持てる)
近隣探索ARP(リンク層)NDP(ICMPv6 で実装)
次のプロトコルProtocol フィールドNext Header フィールド。TCP/UDP/ICMPv6 や拡張ヘッダを順につなぐ
IPv6 アドレスは 16 ビットずつ 8 つのフィールド をコロンで区切って表記します。例:2001:0db8:85a3:0000:0000:8a2e:0370:7334。各フィールド先頭の 0 は省略でき、連続する 0 のフィールドは :: 1 回だけ使ってまとめて省略できます(2001:db8:85a3::8a2e:370:7334)。

どんなサービス設計につながるか

IPv6 の価値は「アドレスが長い」だけではありません。ヘッダを見ると、IPv6 がどんなサービスを作りやすくしようとしているかが見えてきます。

IPv6 で作りやすくなるサービスの例 一意なグローバルアドレス:家庭内の機器、センサ、カメラ、サーバに直接到達する設計がしやすい。NAT 越えやポート転送に頼りすぎない遠隔監視・P2P・オンラインゲームなどにつながる
Traffic Class / Flow Label:同じ映像通話、ゲーム通信、音声通信などを「1 つの流れ」として識別するヒントを持てる。QoS や混雑制御と組み合わせると、リアルタイム通信を扱いやすくなる
Next Header / 拡張ヘッダ:基本ヘッダを固定長のまま保ち、追加機能は後ろにつなぐ。ルータの通常転送は軽くしつつ、必要な機能を拡張できる
NDP / ICMPv6:ルータ広告(RA)や SLAAC により、端末が自分で IPv6 アドレスを構成できる。多数の端末が出入りするネットワークで扱いやすい

注意: IPv6 にすると自動的に安全・高速になるわけではありません。外から到達しやすくなるぶん、実際のサービスでは ファイアウォール、認証、暗号化、DNS、運用監視 が必要です。IPv6 は「直接つなぎやすい土台」を提供し、どこまで公開するかはネットワーク設計で決めます。

まとめと用語チェック

SUMMARY 1. ネットワーク層は フォワーディング(高速転送)ルーチング(経路計算) の 2 機能を担う
2. IPv4 ヘッダは基本 20 バイト。Version/IHL/ToS/Total Length/Identification/Flags/Fragment Offset/TTL/Protocol/Header Checksum/送信元・宛先 IP の 11 フィールド
3. 断片化 は MTU 超過時のルータでの分割。TTL は無限ループ防止の残ホップカウンタ
4. アドレス割り当ては クラスフル(歴史) から CIDR(現代) へ。プレフィクス長 /n で柔軟に区切れる
5. サブネット計算 = IP と マスク の論理積 でネットワークアドレス、ホスト部全 1 でブロードキャスト
6. RFC 1918 プライベート IP:10/8172.16/12192.168/16
7. 家庭ルータの NAT は実は NAPT。送信元 IP+ポート を書き換えて 1 つのグローバル IP で多重化
8. ICMP は IP の補助。Echo(ping)Destination UnreachableTime Exceeded(traceroute)Redirect が代表
9. IPv6 は 128 bit アドレスと固定 40 バイトの基本ヘッダを持つ。Traffic Class / Flow Label / Next Header により、流れの識別・拡張・上位プロトコルの受け渡しを表せる

用語チェック

用語1行説明
データグラムネットワーク層のパケット。IP では IP データグラム
サブネットルータで区切られた1つの IP ネットワーク。同じネットワーク部を共有
IHL(Internet Header Length)IP ヘッダ長を 4 バイト単位で表すフィールド
TTL(Time to Live)ホップごとに減るカウンタ。0 で破棄、ループ防止
MTUリンク層で運べる最大バイト数(Ethernet 標準 1500)
断片化(フラグメンテーション)MTU 超過時にデータグラムを分割する処理
Path MTU Discoveryパス全体の最小 MTU を学習し断片化を回避する仕組み
クラスフルアドレス1981〜のアドレス分類(A/B/C/D/E)。現在は廃止
CIDRクラスを廃止し、プレフィクス長を可変にした現代のアドレス方式
サブネットマスクネットワーク部を 1、ホスト部を 0 で表す 32 ビットマスク
ネットワークアドレスサブネットの先頭(ホスト部全 0)。サブネット自体の識別
ブロードキャストアドレスサブネットの末尾(ホスト部全 1)。同サブネット全員宛
最長一致(Longest Prefix Match)ルータが複数経路から最もプレフィクスが長いものを選ぶ規則
RFC 1918プライベート IP アドレス範囲の規定文書
NAT / NAPT(IP マスカレード)内部 IP を外部 IP に変換する仕組み。NAPT はポートも多重化
ICMPIP の補助で動くエラー通知・診断プロトコル(Protocol=1)
Echo Request / Replyping で使う ICMP メッセージ(Type 8 / 0)
Time ExceededTTL 切れで返る ICMP(Type 11)。traceroute の核
Destination Unreachable宛先到達不能を通知する ICMP(Type 3)
ループバック(127.0.0.1)自ホスト宛て。ネットワークに出ない
IPv6 基本ヘッダ固定 40 バイト。Version、Traffic Class、Flow Label、Payload Length、Next Header、Hop Limit、送信元/宛先アドレスを持つ
Flow LabelIPv6 で同じ通信の流れを識別するためのフィールド。リアルタイム通信や QoS 設計のヒントになる
Next HeaderIPv6 で次に続く TCP/UDP/ICMPv6 や拡張ヘッダの種類を示すフィールド
NDP(Neighbor Discovery Protocol)IPv6 で ARP 相当やルータ広告、アドレス自動設定に関わる ICMPv6 ベースの仕組み
NEXT: 次回の標準編では、本講で軽く触れた NAT の動的補助となる DHCP(IP アドレスの自動配布) を扱い、家庭・組織ネットワークの実運用を完成させます。さらに 標準編のルーティング ではルーチングテーブルが RIP/OSPF/BGP によってどう作られるかに進みます。

確認問題

問1. IPv4 ヘッダの TTL フィールドの主目的として、最も適切なものを1つ選べ。

次の選択肢から最も適切なものを選択してください。
A. パケットの優先度を示し、QoS 制御に用いる
B. パケットを暗号化する鍵を識別する
C. ルータを通るたびに減算され、0 になったら破棄することでループを防ぐ
D. パケットの本文の長さをバイト単位で示す
正解:C
TTL(Time to Live)は本来「秒数」として設計されたが、実際にはホップカウンタとして運用されている。各ルータで 1 ずつ減算され、0 になったルータがパケットを破棄して送信元に ICMP Time Exceeded を返す。これによりルーチング異常で循環するパケットが網内を永遠にさまようのを防ぐ。A は ToS(DSCP) の役割、B は IP には存在しない、D は Total Length の役割。

問2. 192.168.10.130/26 のホストが所属するサブネットのネットワークアドレスとして正しいものを1つ選べ。

次の選択肢から最も適切なものを選択してください。
A. 192.168.10.64
B. 192.168.10.128
C. 192.168.10.192
D. 192.168.10.0
正解:B
/26 はホスト部 6 ビット、ブロックサイズ 64。第 4 オクテットは 0 / 64 / 128 / 192 で区切られる。130 は 128 〜 191 のブロックに入るため、ネットワークアドレスは 192.168.10.128、ブロードキャストは 192.168.10.191、ホスト範囲は .129〜.190。A は前のブロック、C は次のブロック、D は /24 の場合の答え。

問3. 家庭用ルータが行う NAPT(IP マスカレード) に関する記述として、最も適切なものを1つ選べ。

次の選択肢から最も適切なものを選択してください。
A. パケットの本文を暗号化することで、外部から内部の通信を保護する仕組み
B. 内部 IP と外部 IP を 1:1 で固定的に対応付ける仕組み
C. ドメイン名から IP アドレスを引く名前解決の仕組み
D. 送信元 IP に加えて送信元ポート番号も書き換えることで、1 つのグローバル IP に複数台が同時に出られるようにする仕組み
正解:D
NAPT(Network Address Port Translation、別名 IP マスカレード)は、内部 PC ごとに送信元ポートを書き換えて多重化することで、1 つのグローバル IP で複数台のインターネット接続を実現する。A は VPN/IPsec の話、B は静的 NAT(1:1)で NAPT とは別、C は DNS の話で全く別。

問4. traceroute が経路上の各ルータを特定するために利用する ICMP メッセージは、主にどれか。

次の選択肢から最も適切なものを選択してください。
A. Time Exceeded(Type 11)
B. Echo Reply(Type 0)
C. Redirect(Type 5)
D. Source Quench(Type 4)
正解:A
traceroute は TTL を 1 から順に増やしながら送信し、各ホップのルータが「TTL が 0 になりました」と返す ICMP Time Exceeded(Type 11) の送信元 IP を集めることで経路を特定する。B は ping の応答、C は経路変更案内、D は古い輻輳通知(現在は廃止) であり、いずれも traceroute の主役ではない。

問5. RFC 1918 で プライベート IP アドレス として定義されている範囲の組み合わせとして、正しいものを1つ選べ。

次の選択肢から最も適切なものを選択してください。
A. 10.0.0.0/8 / 169.254.0.0/16 / 192.168.0.0/16
B. 10.0.0.0/8 / 127.0.0.0/8 / 192.168.0.0/16
C. 10.0.0.0/8 / 172.16.0.0/12 / 192.168.0.0/16
D. 10.0.0.0/8 / 172.16.0.0/16 / 192.168.0.0/24
正解:C
RFC 1918 のプライベート IP は 10.0.0.0/8(クラス A 相当・1 個)172.16.0.0/12(クラス B 相当・16 個)192.168.0.0/16(クラス C 相当・256 個) の 3 つ。A の 169.254/16 はリンクローカル(APIPA)で別物、B の 127/8 はループバック、D は 172.16/12 を /16 と誤記している。「テン・ヒトナナサンジュウニ・ヒトキュウニ」のように覚えると忘れにくい。
← PREV
第19回 UDP
NEXT →
第21回 DHCP と IP 自動設定