作ってみた!ラズパイガジェット達はこちら

IPアドレスとサブネットマスクを理解しよう!

Raspberry Pi 何ができる

IPアドレスとサブネットマスクを理解しよう!

IPアドレスはドットで区切られた4つの番号で管理します。
3つ目のドットまでがネットワーク・アドレス、最後がホスト・アドレスです。

(また、初めの2つをネットワーク・アドレスとし、3つ目をサブネットとし、最後がホスト・アドレスとした場合はサブネットマスクと言います)

10進数という慣れている番号に変換していますが、実際にコンピュータは2進数が基本です。
2進数とは0と1だけで構成されています。

192.168.0.1を2進数で表すと・・・、
11000000.10101000.00000000.00000001

ネットマスクの役割は、最後のホスト・アドレスを抜き出すために存在します。
AND演算させています。

 

ネットマスクを255.255.255.0とした場合、2進数で表すと・・・、
11111111.11111111.11111111.00000000

この2つを並べてみます。
11000000.10101000.00000000.00000001
11111111.11111111.11111111.00000000

これをAND演算しているのです。

AND演算

AND演算は、(ネット)マスク値が1の場合は0を返します。この論理演算はコンピュータの世界では基本となります。
1は「真」、0は「偽」です。「真」と「真」の場合だけ「真」となります。すなわち1です。それ以外は「偽」の0です。

マスク値 出力される答え
0 0 0
0 1 0
1 0 0
1 1 1

これは2つをANDする。つまり2つの条件を満たした場合(1かつ1)だけ1の「真」になるという意味です。

では、先程の2進数を「かつ」という条件でもう一度見てみましょう。

11000000.10101000.00000000.00000001
かつ
11111111.11111111.11111111.00000000

 

上下の2つを条件として答えを出してみましょう!

1.先ずネットマスクの1だけを取り出すとします。

左から1と1ですから1ですね。次もそう。次は?
0と1なので0です。
すると、こうなります。
11000000.10101000.00000000.00000000

最後だけ0であとは同じです。
これは10進数に直すと、
192.168.0.0です。つまり、これがネットワーク・アドレスになります。

更に初めの3つが8bit×3つあるので、24bitとなりますから、次のように表します。

192.168.0.0/24

見たことあると思います。これはそういう意味なんです。

 

ネットマスクの1を取り出すので、初めの3つまでは実はそのままなんですね!

2.ネットマスクの0だけ取り出してみます。

この時、厳密にはネットマスクの1を0に反転させています。しかし、0だけという意味なら最後の4つ目の0だけで見れば話は早いです。
すると、こうなります。

00000000.00000000.00000000.0000001
これを10進数に直すと、
0.0.0.1です。これがホスト・アドレスということになります。

まとめ

家庭内の小規模ネットワークならば、192.168.0.1(ルーターによる)とサブネットマスクは255.255.255.0で充分にホスト数は足りるため、一般的にこれがよく使われています。

2進数、10進数、16進数で表すコンピュータの世界の理論は、非常に分かりづらいと思います。この2進数は1bitなので、こういった処理をさせるのに非常に速いんですよ。CPUを余り使わない上に一瞬で計算できるため、このようになっていると考えてください。

上手く説明出来ているのか分かりませんけど、大規模なネットワークを組む訳では無いので、定型的に覚えていてもOKだと思います。

番外編 そもそも2進数や16進数って何?

これは我々が日常使っている10進数で考えると簡単です。
10進数は10で1桁上がり2桁になります。
・・・8、9、10

2進数は2で1桁上がります!!
1の次は2ですけど、2で桁が上がるので、「11」となります。これは「じゅういち」ではありません。だって「じゅう」は10進数の話で、2進数には「じゅう」はありません! 従って読み方は「いちいち」です。

では、11にまた1を足すと・・・?
下1桁がまた2になってしまうので、繰り上がります。そして次の桁も2になってしまうので、また桁が上がります。つまり答えは「100」です。

2進数と10進数を比べて数字を並べるとこうなります。

10進数 2進数
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
そして・・・192 11000000

結構面白いですよ!

16進数の詳しい説明は割愛しますけど、同じように16で桁が上がります。ちょっと変わっていて、桁が上がらないように間にA〜Fが入ります。

10進数 16進数
・・・9までは一緒 9
10 A
11 B
12 C
13 D
14 E
15 F
16 10
17 11

よく16進数で見かけるのは、色コードではないでしょうか。

例:ラズパイの赤は#c7053dです。これを2桁ずつ3つに分けます。それぞれRGBにあたります。
Rはレッド、Gはグリーン、Bはブルーです。

つまり、#c7053dはRGBではRGB(199,5,61)と表せます。3色の配合なんですね。
番外編でした。

 

こちらの記事もオススメです♪
ノウハウ(know-how)
この記事をシェアしたり自分用に保存してみる。
この記事を書いた人
ラズパイダ

学べる楽しむ便利になる。小さいくせにヤケにパワフル。そんなRaspberry Pi をまだ知らない人に伝えたい。様々な場所で利用されているRaspberry Pi を知って「あっ、これもラズパイだっ!」だからラズパイダ!

ラズパイダ——利用しているWEBサービス
ラズパイダ

コメント