Huney

応用情報(AP) / ネットワーク

ネットワーク層のプロトコルと技術|IP・サブネット・CIDR・IPv6・ICMPを理解しよう

ネットワーク層の中心となるIPについて、IPヘッダ、IPアドレス、アドレスクラス、サブネットマスク、CIDR、スーパーネット、IPv6、NAT・NAPT、ICMPまで初心者向けに解説します。

読了時間:約18分
  • #ネットワーク
  • #IP
  • #IPv4
  • #IPv6
  • #サブネットマスク
  • #CIDR
  • #NAT
  • #NAPT
  • #ICMP
  • #応用情報技術者試験

ネットワーク層のプロトコルと技術|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。このつながりで覚えるとネットワーク層全体が整理しやすい。