109.1 レッスン 1
Certificate: |
LPIC-1 |
---|---|
Version: |
5.0 |
Topic: |
109 ネットワークの基礎 |
Objective: |
109.1 インターネットプロトコル(IP)の基礎 |
Lesson: |
1 of 2 |
はじめに
TCP/IP(Transmission Control Protocol/Internet Protocol)は、インターネットを含むコンピュータネットワークで標準的に利用されているプロトコルのスタック、すなわち インターネット プロトコル スイート(Internet protocol suite)です。プロトコルスタックは、IP、TCP、UDP、ICMP、DNS、SMTP、ARPなど、複数のプロトコルで構成されています。
IP(インターネットプロトコル)
IPは、ホストの論理的なアドレスを指定するプロトコルであり、あるホストから別のホストにパケットを送信する役割を担います。具体的には、ネットワーク上の1つのデバイスには少なくと1つのIPアドレスが割り当てられますが、複数のIPアドレスが割り当てられる事もあります(訳注:多くの場合は、1つの NIC(Network Interface Controller) ごとに1つのIPアドレスを割り当てます)。
IPプロトコルバージョン4(IPv4)では、32ビットで1つのIPアドレスを表現します。32ビットの数値を、8ビットごとに4つに区切った “dotted quad”(ドットで区切った4個組み)と呼ばれる10進数で表記します。例えば:
- 2進数形式(8ビット4つ)
-
11000000.10101000.00001010.00010100
- 10進数形式
-
192.168.10.20
それぞれのオクテット(8ビット)の値は、0〜255(バイナリ形式の11111111)の範囲になります。
アドレスクラス
IPアドレスの先頭数ビットのパターンに応じてアドレス範囲を クラス に分類することがあります。現在ではほとんど使われないのですが、特別な役割を持つアドレス範囲を理解する助けになりますので、ここに示しておきます。
クラス | 第1オクテット | 範囲 | 例 |
---|---|---|---|
A |
1-126(先頭1ビットが0) |
|
|
B |
128-191(先頭2ビットが10) |
|
|
C |
192-223(先頭3ビットが110) |
|
|
パブリックIPアドレスとプライベートIPアドレス
通信を行うためには、ネットワーク上の機器それぞれが少なくとも1つのユニークなIPアドレスを持つ必要があります。しかしながら、インターネットに接続する世界中の機器それぞれにユニークなIPアドレスを与えるには、IP(v4)のアドレス範囲では不十分です。そこでプライベートなIPアドレスが定義されました。
プライベートIPアドレスとは、企業や組織、家庭などの 閉じた内部(プライベート) ネットワークで使用するために予約されているIPアドレスの範囲です。プライベートネットワーク内ではプライベートアドレスを使用し、プライベートネットワークとインターネットの境界で、公式なパブリックIPアドレスに変換します。
つまり、インターネット上では(公式な、すなわちルーティングされる)パブリックIPアドレスを使用してやり取りを行いますが、プライベートネットワーク内では(予約された範囲内の)プライベートIPアドレスを使用します。境界ルーターでは NAT(Network Address Translation) ないし NAPT(Network Address and Port Translation) と呼ばれる機能を有効化し、プライベートネットワークとパブリックネットワークの間で(IPアドレスを含む)トラフィックの変換を行います。(NAPT のことを マスカレード(Masquerade) と呼ぶこともあります。)
プライベートIPアドレスの範囲は、次の表に示すように、クラスごとに決められています:
クラス | 第1オクテット | 範囲 | プライベートIP |
---|---|---|---|
A |
1-126 |
|
|
B |
128-191 |
|
|
C |
192-223 |
|
|
10進数から2進数への変換
ここで、IPアドレスを2進数形式と10進数形式の間で変換する方法を解説しておきましょう。
10進数から2進数への変換は、2による除算を繰り返すことで行います。例として、10進数の105を2進数に変換してみましょう:
-
105を2で割ると、次のようになります。
105/2 商 = 52 余り = 1
-
商が1になるまで、商を2で除算し続けます。
52/2 商 = 26 余り = 0
26/2 商 = 13 余り = 0
13/2 商 = 6 余り = 1
6/2 商 = 3 余り = 0
3/2 商 = 1 余り = 1
-
最後の商(1)の後に、すべての余りを並べていきます:
1101001
-
8ビットが揃うまで、左側に0を置きます。
01101001
-
以上で、10進数の105は、2進数では 01101001 になることがわかります。
2進数から10進数への変換
2進数 10110000
を例に取りましょう。
-
各ビットは、2を底とする累乗(冪:べき)に関連付けられています。累乗の指数(冪指数)は0から始まり、桁上がりの度に増加します。この例では、次のようになります。
1
0
1
1
0
0
0
0
27
26
25
24
23
22
21
20
-
ビットが1のときにはそれぞれの累乗の値を割り当て、ビットが0のときは0を割り当てます。
1
0
1
1
0
0
0
0
27
26
25
24
23
22
21
20
128
0
32
16
0
0
0
0
-
すべての値を合計します。
128 + 32 + 16 = 176
-
つまり、2進数の10110000は、10進数の176になります。
ネットマスク
IPアドレスには2つの意味が含まれていて、上位ビットがネットワークを、下位ビットが(そのネットワークにおける)各ホストを表します。ネットマスク(netmask) は、ネットワークを表すビットを、IPアドレスと同じ形式(8ビットが4つで32ビット)で示すものです。例を示します。
10進数 | 2進数 | CIDR |
---|---|---|
|
|
|
|
|
|
|
|
|
ネットマスク 255.255.0.0
を例にとると、前半の16ビット(2つの10進数)がネットワーク/サブネットを示し、後半の16ビットがそのネットワーク内のホストを示します。
表にあるCIDR(Classless Inter-Domain Routing/サイダーと読む)というのは、ネットワークを示すビット数がいくつかであるかを示す数値で、ネットマスクを簡単に示したものです。たとえば、255.255.255.0
を、/ 24
と示します。(訳注: 日本では プレフィックス長、CIDR表記 などと呼びます。)
歴史的には、アドレスクラスごとにネットマスクが決められていました。IPv4アドレスの利用効率を高めるためにCIDRの概念が登場して任意長のプリフィックス長が使えるようになってからは、アドレスクラスの概念はほぼ使われなくなっています。
クラス | 最初のオクテット | 範囲 | デフォルトマスク |
---|---|---|---|
A |
1-126 |
|
|
B |
128-191 |
|
|
C |
192-223 |
|
|
なおこれらのパターンは、あくまでも「デフォルトの」ネットマスクを示しているだけです。実際には次に示すように、どのIPアドレスでも任意のマスクを使用することができます。
IPアドレスとネットマスク、マスク長の使用例を示します:
192.168.8.12 / 255.255.255.128 / 24
- 範囲
-
192.168.8.0
-192.168.8.255
- ネットワークアドレス
-
192.168.8.0
- ブロードキャストアドレス
-
192.168.8.255
- ホスト
-
192.168.8.1
-192.168.8.254
この場合、IPアドレスの上位24ビット(3つの10進数)でネットワークを定義し、下位8ビット(最後の10進数)がホストを指定するアドレスになります。つまり、このネットワークの範囲は 192.168.8.0
から 192.168.8.255
になります。
重要なポイントが2つあります: ネットワーク/サブネットごとに2つの予約アドレスがあります。範囲内の最初のアドレス(この場合は 192.168.8.0
)を ネットワークアドレス と呼び、ネットワーク/サブネットそのものを示します。範囲内の最後のアドレス(この場合は 192.168.8.255
)を ブロードキャストアドレス と呼び、ネットワーク/サブネット内の全てのホストに同じメッセージ(パケット)を同報するために使われます。
ネットワークアドレスとブロードキャストアドレスは、ネットワーク上のホストマシンに割り当てることができません。したがって、実際に使用できるIPアドレスは、192.168.8.1
から 192.168.8.254
の範囲です。
同じIPアドレスですが、ネットマスクが異なる場合を見てみましょう。
192.168.8.12 / 255.255.252.0 / 22
- 範囲
-
192.168.8.0
-192.168.11.255
- ネットワークアドレス
-
192.168.8.0
- ブロードキャストアドレス
-
192.168.11.255
- ホスト
-
192.168.8.1
–192.168.11.254
ネットマスクの変更による、ネットワーク/サブネット内のIPアドレス範囲の変化に着目してください。
2番目の例に示したように、ネットマスクによるネットワークの分割は、デフォルト値(8、16、24)に限られません。必要に応じて、ネットワーク部分のビットを追加・削除して、サブネットの大きさ(収納できるホストの台数)を調整することができます。
例えば次のようになります。
11111111.11111111.11111100.00000000 = 255.255.252.0 = 22
このネットワークを2つに分割する場合は、次のように、ネットマスクのネットワーク部のビットを追加します。
11111111.11111111.11111110.00000000 = 255.255.254.0 = 23
これにより、次の2つのサブネットができます。
192.168.8.0 - 192.168.9.255 192.168.10.0 - 192.168.11.255
さらにサブネットに分割したければ、次のようにします:
11111111.11111111.11111111.00000000 = 255.255.255.0 = 24
以下の4つのサブネットに分かれます:
192.168.8.0 - 192.168.8.255 192.168.9.0 - 192.168.9.255 192.168.10.0 - 192.168.10.255 192.168.11.0 - 192.168.11.255
それぞれのサブネットには、ネットワーク自体(範囲の最初)とブロードキャスト(範囲の最後)の予約アドレスが取られるので、ネットワークを細分化するほどに、ホストに使用できるIPアドレスが少なくなります。
ネットワークアドレスとブロードキャストアドレスを見つける
IPアドレスとネットマスクから、ネットワークアドレスとブロードキャストアドレスを見つけて、ネットワーク/サブネットにおけるホストのIPアドレス範囲を知ることができます。
ネットワークアドレスは、IPアドレスとネットマスクで、ビット単位の “論理積(AND)” を求めることで取得できますます。IPアドレス 192.168.8.12
と、ネットマスク 255.255.255.192
の例を見てみましょう。
前述の方法で、10進数から2進数に変換すると、次のようになります。
11000000.10101000.00001000.00001100 (192.168.8.12) 11111111.11111111.11111111.11000000 (255.255.255.192)
“論理積(AND)” では、1&1=1、0&0=0、1&0=0なので、次のようになります。
11000000.10101000.00001000.00001100 (192.168.8.12) 11111111.11111111.11111111.11000000 (255.255.255.192) 11000000.10101000.00001000.00000000
したがって、このサブネットのネットワークアドレスは 192.168.8.0
です。
次にブロードキャストアドレスを求めてみましょう。IPアドレスのホスト部のビットをすべて1にします。
11000000.10101000.00001000.00000000 (192.168.8.0) 11111111.11111111.11111111.11000000 (255.255.255.192) 11000000.10101000.00001000.00111111
この場合のブロードキャストアドレスは 192.168.8.63
になります。
まとめると、次のようになります。
192.168.8.12 / 255.255.255.192(ネットマスク) / 26(プレフィックス長)
- 範囲
-
192.168.8.0
-192.168.8.63
- ネットワークアドレス
-
192.168.8.0
- ブロードキャストアドレス
-
192.168.8.63
- ホスト
-
192.168.8.1
–192.168.8.62
デフォルトルート
IPパケットを直接やり取りできるのは、同じネットワーク/サブネット内にあるマシンに限られます。
次の例ではどうでしょう。
- ネットワーク1
-
192.168.10.0/24
- ネットワーク2
-
192.168.200.0/24
この場合、192.168.10.20
のマシンは、異なる論理ネットワーク上にある 192.168.200.100
のマシンにパケットを直接送信することができません。
この2台のホストが通信するためには、ルーター(またはルーター群)が必要です。ルーターは2つのネットワーク間を橋渡しするので、ゲートウェイとも呼ばれます。ルータは複数のネットワークインターフェイスを持ち、それぞれのネットワークにアクセスできるようにIPアドレスが構成されます。例えば、192.168.10.1
と 192.168.200.1
です。これで、ルーターがネットワークをまたぐ通信を中継できます。
ネットワーク上のそれぞれのホストでは、デフォルトルート を構成します。デフォルトルートとは、それぞれのホストが、「自分とは異なるネットワークに宛てたパケット」を送出するIPアドレスです。
上の例では、192.168.10.0/24
ネットワーク上のマシンのデフォルトルートがルーター/ゲートウェイのアドレスである 192.168.10.1
に、192.168.200.0/24
上のマシンのデフォルトルートが 192.168.200.1
になります。
デフォルトルートは、プライベートネットワーク(LAN)上のマシンが、ルーターを介してインターネット(WAN)にアクセスするためにも使用されます。
演習
-
IPアドレスが
172.16.30.230
、ネットマスクが255.255.255.224
の場合に、以下はどうなりますか?ネットマスクのCIDR表記
ネットワークアドレス
ブロードキャストアドレス
このサブネットでホストに使用できるIPの数
-
異なる論理ネットワークのホストとIPで通信する場合に、ホストで設定が必要となるのは何ですか?
発展演習
-
IPアドレスのクラス(クラスA〜C)に、
127
から始まるアドレス範囲と、224
以降のアドレス範囲が含まれないのはなぜですか? -
IPパケットに含まれる非常に重要なフィールドの1つにTTL(Time To Live)があります。このフィールドの役割と仕組みを述べてください。
-
NATの機能とそれを使用する場面について説明してください。
まとめ
このレッスンでは、ネットワークに接続されたホストの間の通信を司る、IPv4プロトコルの主な概念を説明しました。
IPアドレスをさまざまな形式で表現して、ネットワークとサブネットの論理構成を分析したり構築するために、エンジニアが知っておくべき知識も紹介しました。
このレッスンでは、以下の事柄を取り上げました。
-
IPアドレスのクラス
-
パブリックIPアドレスと、プライベートIPアドレス
-
IPアドレスを10進数表記と2進数表記の間で相互に変換する方法
-
ネットワークマスク(ネットマスク)
-
IPアドレスとネットマスクから、ネットワークアドレスとブロードキャストアドレスを知る方法
-
デフォルトルート
演習の解答
-
IPアドレスが
172.16.30.230
、ネットマスクが255.255.255.224
の場合に、以下はどうなりますか?ネットマスクのCIDR表記
27
ネットワークアドレス
172.16.30.224
ブロードキャストアドレス
172.16.30.255
このサブネットでホストに使用できるIPの数
30
-
異なる論理ネットワークのホストとIPで通信する場合に、ホストで設定が必要となるのは何ですか?
デフォルトルート
発展演習の解答
-
IPアドレスのクラス(クラスA〜C)に、
127
から始まるアドレス範囲と、224
以降のアドレス範囲が含まれないのはなぜですか?127
で始まる範囲(127.0.0.0/8)はループバックアドレス用に予約されていて、127.0.0.1
などアドレスは、ホスト内でのテストやプロセス間通信に使用されます。また、224
から始まる範囲(224.0.0.0/4)は、マルチキャストなどの用途に予約されていて、ホストアドレスとしては使用されません。 -
IPパケットに含まれる非常に重要なフィールドの1つにTTL(Time To Live)があります。このフィールドの役割と仕組みを述べてください。
TTLは、パケットの寿命を定義します。送信元で定義された初期値が、パケットがゲートウェイ/ルーターを通過する度(“ホップ” と呼びます)にデクリメントされます。このカウンタが0になると、パケットは破棄されます。
-
NATの機能とそれを使用する場面について説明してください。
NAT(Network Address Translation)機能は、プライベートアドレスを使用しているローカルネットワーク上の機器のアドレスを、ゲートウェイ(ルーター)でルーターに割り当てられているパブリックIPアドレスに変換することで、インターネットに直接アクセスしているかのようにするものです。