ネットワーク

INPUT · スライド

IP アドレスの数え方

01 / 11

住所は2つある

前のレッスンで、届け先を指すのが IP アドレス だと知った。じつは機械にはもう1つ、MAC アドレス という別の住所がついている。

違いは変わるかどうかだよ。MAC アドレスは機器に製造時から焼き付けられていて、どこへ持っていっても変わらない。IP アドレスはつないだ場所で決まるので、家と会社では違う値になる。

この2つは使う場面が分かれている。遠くへ運ぶときは IP アドレス、目の前の1区間を渡すときは MAC アドレス。ルータをまたいで運ばれる間、IP アドレスはずっと同じだけれど、MAC アドレスは1区間ごとに書きかわっているよ。

02 / 11

アドレスは前半と後半に分かれる

IP アドレスは 192.168.0.10 のように4つの数で書く。この32ビットは、前半がネットワークの住所、後半がその中の機械の番号に分かれている。町名と番地の関係だと思えばいい。

どこで区切るかを決めるのが サブネットマスク だよ。255.255.255.0 のように書き、1 が並んでいるところまでがネットワーク部という意味になる。

同じことを /24 とも書く。前から24ビットがネットワーク部という宣言で、こちらのほうが短い。試験ではどちらの書き方も出てくるので、行き来できるようにしておこう。

255.255.255.0   = /24255.255.254.0   = /23255.255.255.240 = /28240 → 11110000      1 が4つぶん長い

03 / 11

マスクを掛けるとネットワークアドレスが出る

あるアドレスがどのネットワークに属するかを知りたいときは、ホスト部を全部 0 にする。それが ネットワークアドレス だよ。

やり方は、区切りの位置より後ろを 0 で埋めるだけ。/28 なら下位4ビットを 0 にする。

例で見てみよう。10.170.70.19255.255.255.240(= /28)で区切る。最後の 19 は2進数で 00010011。下位4ビットを 0 にすると 00010000 = 16 になる。だからネットワークアドレスは 10.170.70.16 だよ。

  19 = 0001 0011 240 = 1111 0000  ↓ 下位4ビットを 0 に       0001 0000 = 16→ 10.170.70.16

04 / 11

両端の2つは機械に割り振れない

ホスト部が全部 0 のものと全部 1 のものは、特別な意味を持っているので機械には使えない。

  • ホスト部が全部 0 … ネットワークアドレス。そのネットワーク自体を指す名前
  • ホスト部が全部 1 … ブロードキャストアドレス。そのネットワーク全員への宛先

さっきの /28 の例なら、範囲は .16 から .31 までの16個。両端の .16.31 が予約されているので、機械に割り振れるのは .17 から .30 までだよ。

10.170.70.16 〜 .31 の16個.16  ← ネットワーク.17  ┐ :   │ 割り振れる 14 個.30  ┘.31  ← ブロードキャスト

05 / 11

使えるアドレスの個数

ここまで分かれば個数は計算できる。ホスト部のビット数を数えて、2 のべき乗を出し、そこから 2 を引く。それだけだよ。

/28 ならホスト部は 32 − 28 = 4ビット。2 の4乗 = 16、そこから 2 を引いて 14 個

/23 ならホスト部は 9ビット。2 の9乗 = 512、引いて 510 個

引き算を忘れると、選択肢にちゃんと「引かなかった答え」が用意されている。そこが狙われているところだよ。

/28 → 32-28 = 4 ビット      2^4 = 16 → 14 個/24 → 32-24 = 8 ビット      2^8 = 256 → 254 個/23 → 32-23 = 9 ビット      2^9 = 512 → 510 個

06 / 11

同じネットワークにいるかを見分ける

2つのアドレスが同じネットワークにいるかどうかは、両方のネットワークアドレスを出して、一致するかを見るだけで分かる。

255.255.255.240/28)で区切るなら、最後の数を16で割った商が同じかどうかを見ればいい。.17.29 はどちらも 16〜31 の範囲なので同じ。.29.33 は 16〜31 と 32〜47 に分かれるので違う。

区切りが16ごとに来ると分かってしまえば、頭の中で線を引くだけで答えが出るよ。

/28 の区切り  0-15 / 16-31 / 32-47 ….17 と .29 → どちらも 16-31           → 同じ.29 と .33 → 16-31 と 32-47           → 違う

07 / 11

外に出せるアドレスと、社内だけのアドレス

IPv4 のアドレスは全部で約43億個しかなく、世界中の機械に配るには足りない。そこで、外向けに使う グローバル IP アドレス と、組織の中だけで使う プライベート IP アドレス を分けている。

プライベートに使ってよい範囲は決まっていて、次の3つだよ。

  • 10.0.0.010.255.255.255(クラス A)
  • 172.16.0.0172.31.255.255(クラス B)
  • 192.168.0.0192.168.255.255(クラス C)

家のルータが配るのがだいたい 192.168. で始まるのは、この3つ目にあたるからだよ。

08 / 11

NAT と NAPT ― 1つの出口を分け合う

社内のプライベートアドレスのままではインターネットに出られない。出口でグローバルアドレスに書きかえる仕組みが NAT だよ。

ただし NAT はアドレスを1対1で置きかえるだけなので、同時に外に出られる台数は、持っているグローバルアドレスの数までになる。家庭に配られるグローバルアドレスはふつう1個なので、これでは1台しか出られない。

そこで NAPT(IP マスカレード)が使われる。アドレスに加えてポート番号も一緒に書きかえるので、1個のグローバルアドレスを何台でも分け合える。戻ってきた通信はポート番号を見てどの機械宛てか判別しているよ。

社内 192.168.0.10:50001社内 192.168.0.11:50002社内 192.168.0.12:50003  ↓ NAPT がまとめる203.0.113.5 の別々のポートへ

09 / 11

アドレスを借りる ― DHCP

ノートパソコンを喫茶店の Wi-Fi につないだとき、IP アドレスを手で設定した覚えはないはずだ。つないだ機械に、空いているアドレスを自動で貸し出しているからで、その仕組みが DHCP だよ。

貸し出すのはアドレスだけではない。サブネットマスク、出口となるルータのアドレス、問い合わせ先の DNS サーバまで、まとめて配ってくれる。

名前が似たものと並べて覚えよう。DHCP は配る、DNS は名前を引く、NAT は書きかえる。3つとも別の仕事だよ。

10 / 11

IP から MAC を引く ― ARP

同じ LAN の中で実際にデータを渡すときには MAC アドレスが要る。でも手元にあるのは IP アドレスだけ。IP アドレスから MAC アドレスを調べるのが ARP だよ。

やっていることは単純で、LAN 全体に「このアドレスの人、MAC を教えて」と呼びかけ、本人が答える。一度聞いた対応はしばらく手元に覚えておくので、毎回聞き直したりはしない。

名前が逆さまの RARP もある。こちらは MAC アドレスから IP アドレスを求める、逆向きの仕組みだよ。選択肢に必ず並ぶので、向きで覚えよう。

ARP  … IP → MACRARP … MAC → IP

11 / 11

足りなくなった先の IPv6

アドレスが足りない問題を、やりくりではなく桁を増やして解決しようというのが IPv6 だよ。

いちばん大きな違いは長さで、IPv4 の32ビットに対して 128ビット。使い切れないほどの数があるので、プライベートアドレスと NAT でやりくりする必要がなくなる。

書き方も変わる。4つの数を . でつなぐ代わりに、16進数を4文字ずつ : で区切って並べる。2001:0db8:0000:0000:0000:0000:0000:0001 のような形だよ。

注意したいのは、IPv4 と IPv6 が1対1で対応するわけではないこと。桁数がまるで違うので、すべてを対応づけることはできないよ。

IPv4  32ビット  192.168.0.10IPv6 128ビット  2001:0db8:85a3:0000:  0000:8a2e:0370:7334