5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DevToxicClubAdvent Calendar 2024

Day 7

IPアドレスとか、サブネットについて

Last updated at Posted at 2024-12-06

はじめに

最近、docker networkを使用して通信テストをしているタコ(🐙)です。
今回は、ネットワーク基礎知識についての記事になります。
インフラ関係に興味はあるけど、手が出せない、意味がわかりずらい人たち向けに書いていこうと思います。
注意 : IPアドレスは、IPv4(32bit)で説明しています。

目次

  1. IPアドレスについて
  2. クラスについて
  3. サブネットについて

1. IPアドレスについて

皆さんは、IPアドレスについて説明できますか?

恐らく、雰囲気でインフラを触っている人たちは、「住所」と回答する人が多いといます。住所と説明されて理解できたことがある人は、天才だと思います。なぜなら、後に説明するIPアドレスはサブネットと切っても切れない関係を持っているにも関わらず、理解できていることになるからです。抽象的な、「住所」と言う言葉の解像度を上げていこうと思います。

住所の正体

IPアドレスの構造は、所属するネットワークの番号ホストの番号になっています。
つまり、IPアドレスが表して入いるものは、何処の」+「になります。
ネットワークの番号は、接続されている全てのネットワークでユニークでなければいけません。
一方、ホストの番号は所属するネットワーク内でユニークでなければいけません。

違うネットワークに同じホスト番号を持つものがいても、ネットワーク番号が違う場合は、必ずユニークになります。

例:
image.png

  1. 同じホスト番号(100)
    両方のネットワークで「ホスト番号100」が使われていますが、それぞれのネットワーク番号(192.168.1 と 192.168.2)が異なります。

  2. ユニークな組み合わせ
    ネットワーク番号とホスト番号を組み合わせたIPアドレスは以下のようになります。

ネットワーク番号とホスト番号を組み合わせた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ビット)
  • ネットワーク番号(何処の)
  • ホスト番号(誰)
IPアドレスを表す
 ネットワーク番号(何処の) : ホスト番号(誰) 
 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
image.png

補足ですが、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分間ネットワークキングで検索してみてください。

参考文献
https://www5e.biglobe.ne.jp/aji/3min/

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?