ネットワーク層のプロトコルと技術|IP・サブネット・CIDR・IPv6・ICMPを理解しよう
はじめに
OSI基本参照モデルの第3層が、
ネットワーク層(Network Layer)
です。
ネットワーク層では、
異なるネットワークを越えて、目的のコンピュータまでデータを届ける
ことを担当します。
中心となるのが**IP(Internet Protocol)**です。
今回は、
IP
↓
IPヘッダ
↓
IPアドレス
↓
サブネット
↓
CIDR・スーパーネット
↓
IPv6
↓
NAT・NAPT
↓
ICMP
という順番で見ていきます。
1. IPとは
**IP(Internet Protocol)**は、
IPアドレスを利用して、ネットワークを越えてデータを届けるためのプロトコル
です。
例えば、
PC
↓
ルーター
↓
ネットワーク
↓
ルーター
↓
サーバー
という通信では、ルーターが宛先IPアドレスを確認しながらパケットを転送していきます。
2. IPはベストエフォート型
IPは、
ベストエフォート型
のプロトコルです。
つまり、
できる限り届けようとするが、確実に届くことまでは保証しない
という仕組みです。
IPだけでは、
データが届いたか
データが欠けていないか
正しい順番で届いたか
などを保証しません。
信頼性が必要な場合は、上位層のTCPなどが担当します。
TCP
→ 信頼性を確保
IP
→ 宛先まで届ける
という役割分担です。
3. IPヘッダ
IPでデータを送るときには、
IPヘッダ
が付加されます。
┌───────────────┐
│ IPヘッダ │
├───────────────┤
│ データ │
└───────────────┘
IPv4ヘッダの代表的な情報には、
| 項目 | 役割 |
|---|---|
| バージョン | IPv4などのバージョン |
| 全長 | IPパケット全体の長さ |
| 識別子 | 分割されたパケットの識別 |
| フラグ | フラグメントを制御 |
| フラグメントオフセット | 分割されたデータの位置 |
| TTL | パケットが通過できる範囲を制限 |
| プロトコル | 上位プロトコルを識別 |
| ヘッダチェックサム | ヘッダの誤りを検出 |
| 送信元IPアドレス | 送信元 |
| 宛先IPアドレス | 宛先 |
などがあります。
特に、
TTL
プロトコル
送信元IPアドレス
宛先IPアドレス
は押さえておきましょう。
4. TTL
**TTL(Time To Live)**は、
パケットがネットワーク内を無限に回り続けることを防ぐための値
です。
ルーターを通過するたびに減少します。
TTL = 3
↓
ルーター
↓
TTL = 2
↓
ルーター
↓
TTL = 1
↓
ルーター
↓
TTL = 0
↓
破棄
これによって、ルーティングループが発生してもパケットが永遠に残り続けることを防ぎます。
5. IPアドレス
IPアドレスは、
IPネットワーク上で通信相手を識別するためのアドレス
です。
IPv4では32ビットを使用します。
例えば、
192.168.1.10
です。
実際には、
11000000.10101000.00000001.00001010
という32ビットの値を、人間が読みやすいように10進数で表しています。
8bit + 8bit + 8bit + 8bit
= 32bit
8ビットずつのまとまりをオクテットと呼びます。
6. ネットワーク部とホスト部
IPアドレスは、
┌─────────────┬───────────┐
│ ネットワーク部 │ ホスト部 │
└─────────────┴───────────┘
に分けて考えます。
ネットワーク部
どのネットワークなのか
を表します。
ホスト部
そのネットワーク内のどの機器なのか
を表します。
例えば住所なら、
ネットワーク部
→ ○○県○○市○○町
ホスト部
→ ○番○号
のようなイメージです。
7. IPアドレスクラス
IPv4では以前、
クラスフルアドレッシング
という方式が利用されていました。
IPアドレスを、
クラスA
クラスB
クラスC
クラスD
クラスE
に分類します。
8. クラスA・B・C
代表的なA〜Cを整理します。
| クラス | 第1オクテット | ネットワーク部 | ホスト部 | デフォルトマスク |
|---|---|---|---|---|
| A | 1〜126 | 8bit | 24bit | 255.0.0.0 |
| B | 128〜191 | 16bit | 16bit | 255.255.0.0 |
| C | 192〜223 | 24bit | 8bit | 255.255.255.0 |
イメージとしては、
クラスA
→ 大規模ネットワーク
クラスB
→ 中規模ネットワーク
クラスC
→ 小規模ネットワーク
です。
9. クラスD・E
クラスD
224 ~ 239
で、マルチキャストに利用されます。
クラスE
240 ~ 255
で、予約されたアドレス空間です。
A〜Cのような通常のホストアドレスとして利用するものではありません。
10. 特殊なIPアドレス
IPv4には、特別な用途を持つアドレスがあります。
代表的なのは、
ネットワークアドレス
ブロードキャストアドレス
ループバックアドレス
プライベートIPアドレス
リンクローカルアドレス
です。
11. ネットワークアドレスとブロードキャストアドレス
例えば、
192.168.1.0/24
というネットワークの場合、
192.168.1.0
→ ネットワークアドレス
192.168.1.1
~
192.168.1.254
→ ホストに割り当て可能
192.168.1.255
→ ブロードキャストアドレス
となります。
ネットワークアドレスはネットワークそのものを表します。
ブロードキャストアドレスは同一サブネット内の全端末宛てに利用されます。
12. ループバックアドレス
IPv4では、
127.0.0.0/8
がループバック用に予約されています。
特によく見るのが、
127.0.0.1
です。
これは、
自分自身を表すアドレス
として利用されます。
13. プライベートIPアドレス
内部ネットワークで利用するために予約されているのが、
プライベートIPアドレス
です。
| 範囲 | CIDR |
|---|---|
| 10.0.0.0 ~ 10.255.255.255 | 10.0.0.0/8 |
| 172.16.0.0 ~ 172.31.255.255 | 172.16.0.0/12 |
| 192.168.0.0 ~ 192.168.255.255 | 192.168.0.0/16 |
家庭や企業のLANでは、
192.168.1.10
10.0.0.10
などのアドレスがよく利用されます。
14. リンクローカルアドレス
IPv4では、
169.254.0.0/16
がリンクローカルアドレスとして予約されています。
例えばDHCPからアドレスを取得できなかった場合などに、OSがこの範囲のアドレスを自動設定することがあります。
169.254.x.x
が設定されていた場合は、
DHCPから正常にIPアドレスを取得できていないのでは?
と考えるきっかけになります。
15. サブネットマスク
では、
192.168.1.10
というIPアドレスを見ただけで、どこまでがネットワーク部なのか分かるでしょうか。
現在のネットワークでは、IPアドレスだけでは判断できません。
そこで利用するのが、
サブネットマスク(Subnet Mask)
です。
例えば、
IPアドレス
192.168.1.10
サブネットマスク
255.255.255.0
なら、
192.168.1 | 10
───────── ──
ネットワーク ホスト
というように判断できます。
16. サブネットマスクを2進数で見る
255.255.255.0
を2進数にすると、
11111111.11111111.11111111.00000000
です。
サブネットマスクでは、
1
→ ネットワーク部
0
→ ホスト部
を表します。
つまり、
11111111.11111111.11111111 | 00000000
ネットワーク部 | ホスト部
となります。
17. ネットワークアドレスの求め方
ネットワークアドレスは、
IPアドレスとサブネットマスクのAND演算
によって求められます。
例えば、
IP
192.168.1.130
Mask
255.255.255.0
なら、
192.168.1.130
AND
255.255.255.0
↓
192.168.1.0
となります。
したがってネットワークアドレスは、
192.168.1.0
です。
サブネット計算では、このAND演算が非常に重要です。
18. サブネット化
**サブネット化(Subnetting)**とは、
1つのネットワークをさらに小さなネットワークへ分割すること
です。
例えば、
192.168.1.0/24
というネットワークを、
192.168.1.0/25
192.168.1.128/25
の2つに分割できます。
イメージすると、
192.168.1.0/24
↓ 分割
┌──────────────┐
│192.168.1.0/25 │
└──────────────┘
┌────────────────┐
│192.168.1.128/25 │
└────────────────┘
となります。
19. CIDR
現在ではIPアドレスクラスに固定されず、
CIDR(Classless Inter-Domain Routing)
が利用されています。
CIDRでは、
192.168.1.0/24
のように表します。
この、
/24
は、
先頭24ビットがネットワーク部
という意味です。
20. CIDRとサブネットマスク
CIDR表記とサブネットマスクには対応関係があります。
| CIDR | サブネットマスク |
|---|---|
| /8 | 255.0.0.0 |
| /16 | 255.255.0.0 |
| /24 | 255.255.255.0 |
| /25 | 255.255.255.128 |
| /26 | 255.255.255.192 |
| /27 | 255.255.255.224 |
| /28 | 255.255.255.240 |
| /29 | 255.255.255.248 |
| /30 | 255.255.255.252 |
例えば、
/26
なら、
11111111.11111111.11111111.11000000
なので、
255.255.255.192
になります。
21. ホスト数を求める
IPv4では32ビットあります。
例えば、
/24
なら、
32 - 24
= 8bit
がホスト部です。
組み合わせは、
2^8
= 256
個あります。
一般的なIPv4サブネットでは、
ネットワークアドレス
ブロードキャストアドレス
をホストへ割り当てないため、
2^8 - 2
= 254
台が利用可能です。
基本式は、
利用可能ホスト数
=
2^(ホスト部のビット数) - 2
です。
※ /31や/32などには、この「-2」をそのまま適用しない特殊なケースがあります。
22. スーパーネット化
サブネット化が、
大きなネットワークを小さく分割する
技術なのに対して、
**スーパーネット化(Supernetting)**は、
複数の連続したネットワークを、より大きな1つのネットワークとしてまとめる
考え方です。
例えば、
192.168.0.0/24
192.168.1.0/24
という連続した2つのネットワークは、
192.168.0.0/23
としてまとめられます。
192.168.0.0/24 ┐
├→ 192.168.0.0/23
192.168.1.0/24 ┘
これによって、複数の経路情報をまとめて扱える場合があります。
23. サブネット化とスーパーネット化
整理すると、
サブネット化
大きいネットワーク
↓
小さく分割
一方、
スーパーネット化
複数のネットワーク
↓
大きくまとめる
です。
つまり、
サブネット化は分ける、スーパーネット化はまとめる
と覚えると分かりやすいです。
24. IPv6
IPv4は32ビットなので、利用できるアドレス数には限界があります。
そこで登場したのが、
IPv6(Internet Protocol Version 6)
です。
IPv6では、
128ビット
のアドレスを利用します。
IPv4
→ 32bit
IPv6
→ 128bit
IPv4より非常に大きなアドレス空間を利用できます。
25. IPv6アドレス
IPv6では、
2001:db8:1234:5678:abcd:ef01:2345:6789
のように、16進数で表記します。
IPv4では、
192.168.1.10
のように.で区切りましたが、IPv6では、
:
で区切ります。
また、連続する0を省略できるなど、IPv6にはアドレスを短縮して表記するルールがあります。
26. IPv4とIPv6の違い
| IPv4 | IPv6 | |
|---|---|---|
| アドレス長 | 32bit | 128bit |
| 表記 | 10進数 | 16進数 |
| 区切り | . |
: |
| ブロードキャスト | あり | なし |
| アドレス空間 | 約43億 | 非常に大きい |
IPv6ではブロードキャストを使用せず、マルチキャストなどを利用します。
27. IPv6の主なアドレス
IPv6にも用途の異なるアドレスがあります。
代表的なのが、
グローバルユニキャストアドレス
インターネット上で利用できるアドレスです。
リンクローカルアドレス
同一リンク内で利用するアドレスです。
代表的な範囲は、
fe80::/10
です。
ループバックアドレス
IPv6では、
::1
が自分自身を表します。
IPv4
127.0.0.1
IPv6
::1
と対応させると覚えやすいです。
28. IPv4とIPv6の移行
IPv4からIPv6へ一気に切り替えることは難しいため、両者を共存させるための技術があります。
代表的なのが、
デュアルスタック
トンネリング
アドレス変換
です。
29. デュアルスタック
デュアルスタックでは、
IPv4とIPv6の両方を利用できるようにする
方式です。
端末
├─ IPv4
└─ IPv6
通信相手やネットワーク環境に応じてIPv4とIPv6を使い分けます。
30. トンネリング
トンネリングでは、
あるプロトコルのパケットを、別のプロトコルの中へ入れて運ぶ
方法を利用します。
例えば概念的には、
IPv6
↓
IPv4ネットワークを通過
↓
IPv6
のような通信を実現するために利用できます。
31. NAT
ここからはアドレス変換について見ていきます。
**NAT(Network Address Translation)**は、
IPアドレスを別のIPアドレスへ変換する技術
です。
例えば、
PC
192.168.1.10
↓
NAT
↓
203.0.113.10
↓
インターネット
のように、
プライベートIPアドレス
↓
グローバルIPアドレス
へ変換できます。
32. NAPT
**NAPT(Network Address Port Translation)**は、
IPアドレスだけでなくポート番号も利用して変換する技術
です。
これによって、
複数の端末で1つのグローバルIPv4アドレスを共有
できます。
例えば、
192.168.1.10:50001 ┐
│
192.168.1.20:50002 ├→ 203.0.113.10
│
192.168.1.30:50003 ┘
というように、ポート番号によって通信を区別します。
家庭用ルーターなどでも広く利用されています。
33. NATとNAPT
違いを簡単に整理すると、
NAT
→ IPアドレスを変換
NAPT
→ IPアドレス + ポート番号を変換
です。
NAPTは、
IPマスカレード
と呼ばれることもあります。
34. IPv6とアドレス変換
IPv6とIPv4は、そのままでは互いに直接通信できません。
そのため、環境によってはIPv4とIPv6の間を変換する技術も利用されます。
代表例として、
NAT64
があります。
NAT64では、
IPv6
↓
NAT64
↓
IPv4
というように、IPv6ネットワークからIPv4ネットワークへの通信を可能にします。
IPv4とIPv6の共存・移行では、
デュアルスタック
→ 両方使う
トンネリング
→ 別プロトコルの中に入れて運ぶ
NAT64など
→ IPv4とIPv6の間を変換
という違いを押さえておきましょう。
35. ICMP
ネットワーク層に関連する重要なプロトコルとして、
ICMP(Internet Control Message Protocol)
があります。
ICMPは、
IP通信におけるエラー通知や通信状態の確認などに利用されるプロトコル
です。
例えば、
宛先へ到達できない
TTLが0になった
通信相手が応答するか確認したい
といった場面で利用されます。
36. ping
ICMPを利用する代表的なコマンドが、
ping
です。
ping 192.168.1.1
などを実行すると、ICMPのメッセージを利用して通信相手から応答があるか確認できます。
概念的には、
PC-A
ICMP Echo Request
↓
PC-B
ICMP Echo Reply
↓
PC-A
という通信です。
そのためpingは、
通信相手までIP通信できるか確認する
ときによく利用されます。
37. traceroute / tracert
経路を確認するときには、
traceroute
やWindowsの
tracert
が利用されます。
これはTTLとICMPなどの仕組みを利用して、
PC
↓
Router-A
↓
Router-B
↓
Router-C
↓
Server
というように、宛先までに経由するルーターを調べます。
先ほど学んだTTLとICMPがここでつながります。
38. ネットワーク層を全体で整理する
今回の内容をつなげると、
ネットワーク層
│
├─ IP
│ ├─ IPヘッダ
│ └─ IPアドレス
│
├─ IPv4
│ ├─ アドレスクラス
│ ├─ 特殊アドレス
│ ├─ サブネットマスク
│ ├─ CIDR
│ └─ スーパーネット
│
├─ IPv6
│ ├─ 128bit
│ ├─ デュアルスタック
│ ├─ トンネリング
│ └─ NAT64など
│
├─ アドレス変換
│ ├─ NAT
│ └─ NAPT
│
└─ ICMP
├─ エラー通知
├─ ping
└─ traceroute / tracert
となります。
39. まとめ
この記事で覚えること
- IPはネットワーク層の代表的なプロトコル
- IPはベストエフォート型
- IPヘッダには送信元・宛先IPアドレスやTTLなどがある
- IPv4アドレスは32ビット
- IPアドレスはネットワーク部とホスト部に分けて考える
- クラスA〜Cはネットワーク規模による分類
- クラスDはマルチキャスト用
- ネットワークアドレスとブロードキャストアドレスはホストへ割り当てない
- 127.0.0.1は代表的なループバックアドレス
- プライベートIPv4アドレスには3つの範囲がある
- サブネットマスクはネットワーク部とホスト部を区別する
- CIDRでは
/24などでネットワーク部の長さを表す - サブネット化はネットワークを小さく分割する
- スーパーネット化は複数のネットワークをまとめる
- IPv6は128ビット
- IPv6ではブロードキャストを使用しない
- デュアルスタックではIPv4とIPv6の両方を利用する
- NATはIPアドレスを変換する
- NAPTはIPアドレスとポート番号を利用して変換する
- NAT64はIPv6とIPv4の通信を仲介する技術
- ICMPはIP通信のエラー通知や状態確認に利用される
- pingではICMP Echo Request / Replyが利用される
- traceroute / tracertではTTLとICMPなどの仕組みが利用される
🍯 はちみつメモ
ネットワーク層は「どのネットワークの、どの端末へ届ける?」を考える層。IPアドレスで宛先を決め、サブネットマスクやCIDRでネットワークの範囲を決める。IPv4不足にはIPv6やNAT/NAPT、通信確認にはICMP。このつながりで覚えるとネットワーク層全体が整理しやすい。