はじめに
最近、docker networkを使用して通信テストをしているタコ(🐙)です。
今回は、ネットワーク基礎知識についての記事になります。
インフラ関係に興味はあるけど、手が出せない、意味がわかりずらい人たち向けに書いていこうと思います。
注意 : IPアドレスは、IPv4(32bit)で説明しています。
目次
- IPアドレスについて
- クラスについて
- サブネットについて
1. IPアドレスについて
皆さんは、IPアドレスについて説明できますか?
恐らく、雰囲気でインフラを触っている人たちは、「住所
」と回答する人が多いといます。住所と説明されて理解できたことがある人は、天才だと思います。なぜなら、後に説明するIPアドレスはサブネットと切っても切れない関係を持っているにも関わらず、理解できていることになるからです。抽象的な、「住所
」と言う言葉の解像度を上げていこうと思います。
住所の正体
IPアドレスの構造は、所属するネットワークの番号
+ホストの番号
になっています。
つまり、IPアドレスが表して入いるものは、「何処の
」+「誰
」になります。
ネットワークの番号は、接続されている全てのネットワークでユニーク
でなければいけません。
一方、ホストの番号は所属するネットワーク内でユニーク
でなければいけません。
違うネットワークに同じホスト番号を持つものがいても、ネットワーク番号が違う場合は、必ずユニークになります。
-
同じホスト番号(100)
両方のネットワークで「ホスト番号100」が使われていますが、それぞれのネットワーク番号(192.168.1 と 192.168.2)が異なります。 -
ユニークな組み合わせ
ネットワーク番号とホスト番号を組み合わせたIPアドレスは以下のようになります。
- ネットワークA: 192.168.1.100
- ネットワークB: 192.168.2.100
- ネットワークC: 192.168.3.100
上記のように、ネットワーク番号が異なるため、それぞれのIPアドレスがユニークになります。
IPアドレス
IPアドレスは、10進数で表記されることがほとんどですが、元はビットであることをわすれてはいけません。
例:元のIPアドレス
10101100000001010010001000001011
見やすくすると、以下になります。
10101100 00000101 00100010 00001011
ただし、人間は2進数を咄嗟に判断できないのでバイトごとに10進数にして表記します
。
10101100 00000101 00100010 00001011
172 5 34 11
そして 各バイトの間にはドットを入れる
。例えば、上の例ならば、172.5.34.11
と表記することになります。
172 . 5 . 34 . 11
上記の1バイトごとの区切りをオクテットといいます。今回であれば、4オクテットになります。今までの情報をまとめてIPアドレスを表すと以下になります。
4オクテット(32ビット)
ネットワーク番号(何処の)
ホスト番号(誰)
ネットワーク番号(何処の) : ホスト番号(誰)
10101100 00000101 : 00100010 00001011
172 . 5 . 34 . 11
上記の内容から、先頭から16ビットがネットワーク番号で、残り16ビットがホスト番号になると予想するかもしれませんが、実は適当な例になります。実際は、ネットワーク番号とホスト番号のビットは、クラスによって決定されます
。
2. クラスについて
クラスフルアドレッシング
クラスとは、IPアドレスで使用する32ビットのうち何ビットがネットワーク番号なのかを決められる
ものになります。
理解すべきクラスは、3つになります。
クラス | 第1オクテット | 第2オクテット | 第3オクテット | 第4オクテット |
A | ネットワーク番号 | ホスト番号 |
B | ネットワーク番号 | ホスト番号 |
C | ネットワーク番号 | ホスト番号 |
クラスを判断するには、先頭が何ビットかで判断します
。
クラス | 第1オクテット | 10進数で表記した場合 |
A | 0 x x x | 0.x.x.x ~127.x.x.x |
B | 1 0 x x | 128.x.x.x ~191.x.x.x |
C | 1 1 0 x | 192.x.x.x ~223.x.x.x |
上記の内容から、ネットワーク番号の部分のビットが少ないと、ホスト番号の部分のビット数が多くなります。つまり、多くのホストを所有するネットワーク
になります。
クラス | 規模 | ネットワークの数 | 保有できるホストの数
A | 政府・国家機関・大企業 | 7ビット=128個 | 24ビット=16,777,216個
B | 中規模企業 | 14ビット=16,384個 | 16ビット=65,536個
C | 小規模企業・プロバイダ | 21ビット=2,097,152個 | 8ビット=256個
上記の規模によって、クラスに分けてIPアドレスを割り振る方式をクラスフルアドレッシング
と言います。
クラスフルアドレッシングを取り入れて、各ホストにIPアドレスを割り振ると以下になります。
例:クラスC
補足ですが、IPアドレスには使ってはいけないアドレスが存在します。
予約済みアドレス
予約済みアドレスとは、特別な意味を持つため実際のホストに割り振ってはいけないアドレスになります。ホスト番号のビットがすべて0
になるアドレスと、ホスト番号のビットがすべて1
のアドレスになります。
クラスC192.168.10.xのネットワーク番号の場合、以下の2つになります。
それぞれネットワークアドレス
、ブロードキャストアドレス
と言います。
| ネットワーク番号 | ホスト番号
-------------------------------------------------------------------
ネットワークアドレス | 110000001010100000001010 | 00000000
|---------------------------|----------------
| 192.168.10.x | 0
--------------------------------------------------------------------
ブロードキャストアドレス | 110000001010100000001010 | 11111111
|---------------------------|----------------
| 192.168.10.x | 255
ネットワークアドレスは、 そのネットワーク自体
を示しています。そのネットワークへの経路選択の際に使用します。
例えば、192.168.10.1へ運ぶ時は、192.168.10.0への経路を考えるということになります。他のネットワークからのパケット転送の際、いちいち192.168.10番ネットワークの1番宛など考えるのは手間がかかります。まず、192.168.10番へ届けます。それから先はその192.168.10番ネットワーク内部で考えます。
もうひとつの、ブロードキャストアドレスは、 そのネットワークすべてのホストを表します
。
簡単にいえば、ネットワーク内全員が受け取るためのアドレスになります。
例えば宛先IPアドレス192.168.10.255とすれば、192.168.10番ネットワークに存在するすべてのホストがそのパケットを受け取ります。
3. サブネットについて
小さなネットワーク
ネットワークは幾つかの小さなネットワークに分割し、管理しやすくすることができます。
この小さなネットワークのことをサブネットワーク
と言います。
サブネットワーク
IPアドレスは、ネットワーク番号
とホスト番号
から成り立っています。
上記をサブネットワークに分割するため、以下のように変更する必要があります。
サブネット化前 : ネットワーク番号 | ホスト番号 |
サブネット化後 : ネットワーク番号 | サブネット番号 | ホスト番号 |
ホスト番号のビットを、サブネット番号とホスト番号にします
。
つまり、ホスト番号の部分を削って、サブネット番号の部分を作りだす
ことになります。
サブネットマスク
サブネットを使用する場合はサブネットマスクをIPアドレスと同時に表記する必要があります。サブネットマスクとは、どこまでがサブネット番号かを示すものになります。
なぜ、サブネットマスクがあるのか?
IPアドレスを10進数表記(例: 192.168.1.0)だけでは、直感的にどのビットがネットワーク部分で、どのビットがホスト部分なのか判別できません。一度、2進数に変換してネットワーク部のビット数を数える必要があります。
この煩雑な作業を簡略化してくれるのが サブネットマスク になります。特に、CIDR表記(例: /24)は、ネットワーク部分のビット数を直接示すため、非常に便利です。
CIDR表記とサブネットサイズの関係
サブネットの分割数(サブネットサイズ)は、サブネットマスクの ホスト部分のビット数 によって決まります。
CIDR表記 10進数マスク ネットワーク数 ホスト数(1サブネットあたり)
/24 255.255.255.0 1 256
/25 255.255.255.128 2 128
/26 255.255.255.192 4 64
/27 255.255.255.224 8 32
/24 はホスト部分が8ビット → 2^8 = 256ホスト
/25 はホスト部分が7ビット → 2^7 = 128ホスト
/26 はホスト部分が6ビット → 2^6 = 64ホスト
IPアドレスとは、ネットワーク部(何処の)+ホスト部(誰) or ネットワーク部(何処の)+サブネット部(サブネットの)+ホスト部(誰)と言う解釈になります。以上のことからIPアドレスの住所と言う言葉を理解するために、サブネットの知識が必要になります。とても、「住所」だけで片付けられるものではないと思います。
まとめ
今回はIPアドレスの基本から、クラスの違い、そしてサブネット化について学びました。
IPアドレスは「ネットワーク番号」と「ホスト番号」の組み合わせ。
クラスによってネットワークの規模が異なる。
サブネット化により管理が効率的になる
終わりに
いかがだったでしょうか?ネットワークのIPアドレスを理解するためには、付属する多くの知識が必要になります。今回の記事でも説明しきれてない部分があります。もっと詳しく学びたい方は、3分間ネットワークキングで検索してみてください。