Webサイトを見るとき「www.〇〇.co.jp」って入力しますよね。あれがネット上の住所なんですか?
半分正解! コンピュータが本当に使っている住所はIPアドレスという数字なんだ。「www〜」は人間が覚えやすいように付けた名前で、それを数字に変換する係がDNSだよ。
IPアドレスはネットワーク上の住所
IPアドレス は、ネットワークにつながる機器を識別するための番号です。データを送るときは、宛先のIPアドレスを付けて送ります。
現在広く使われている IPv4 のIPアドレスは 32ビット の数値です。人間が読みやすいように、8ビットずつ4つに区切り、それぞれを10進数(0〜255)にしてピリオドでつなげて書きます。
例:192.168.1.10
- 2進数で書くと:11000000.10101000.00000001.00001010
- 8ビットで表せるのは 0〜255 なので、各区切りは 255 以下(「192.168.1.256」はありえない)
- 作れるアドレスの数:232 = 4,294,967,296 → 約43億個
IPv4の不足とIPv6
インターネットにつながる機器が爆発的に増え、約43億個では足りなくなりました。そこで作られたのが IPv6 です。IPv6のアドレスは 128ビット で、事実上使い切れないほどの数を作れます。16ビットずつ8つに区切り、16進数でコロン区切りにして書きます(例:2001:db8:0:0:1:0:0:1)。
| IPv4 | IPv6 | |
|---|---|---|
| ビット数 | 32ビット | 128ビット |
| 表記 | 10進数 × 4、ピリオド区切り | 16進数 × 8、コロン区切り |
| アドレス数 | 約43億個(不足している) | 事実上無限 |
グローバルIPアドレスとプライベートIPアドレス
IPv4のアドレス不足をしのぐ工夫として、IPアドレスは2種類に分けて使われています。
- グローバルIPアドレス:インターネット上で使う、世界で重複しない アドレス。勝手には使えず、ISPなどを通じて割り当てられる
- プライベートIPアドレス:家庭や会社の LANの中だけ で使うアドレス。組織の中で重複しなければ自由に使える。別の家のLANと同じアドレスでもかまわない
プライベートIPアドレスの範囲は決まっています。とくに 192.168.〇.〇 は家庭のルータでおなじみです。
- 10.0.0.0 〜 10.255.255.255
- 172.16.0.0 〜 172.31.255.255
- 192.168.0.0 〜 192.168.255.255
NATで住所を付け替える
プライベートIPアドレスのままでは、インターネット上の相手は返事を送れません。そこでLANの出入口のルータが、送信元のプライベートIPアドレスを、自分が持つ グローバルIPアドレスに付け替えて 送り出します。この変換が NAT です。家庭用ルータでは、ポート番号も組み合わせて 1つのグローバルIPアドレスを複数の機器で共用する NAPT(IPマスカレード)が使われています。
DHCP ― IPアドレスを自動で配る
スマホをカフェのWi-Fiにつないだとき、IPアドレスを自分で設定した覚えはありませんよね。これは DHCP の働きです。DHCPサーバが、つないできた機器に IPアドレスやデフォルトゲートウェイ、DNSサーバのアドレスなどを自動で割り当て ます。家庭ではルータがDHCPサーバを兼ねていることがほとんどです。
ネットワーク部とホスト部 ― サブネットマスク
IPアドレスは、前半の ネットワーク部(どのネットワークか)と、後半の ホスト部(そのネットワークの中のどの機器か)に分かれています。
「〇〇町3丁目 15番」の、「〇〇町3丁目」がネットワーク部、「15番」がホスト部です。同じ町内(同じネットワーク)なら直接届けられ、違う町ならルータの出番になります。
どこまでがネットワーク部かを示すのが サブネットマスク です。2進数で、ネットワーク部を1、ホスト部を0で表します。ネットワーク部のビット数を「/24」のように書く方法もあります(CIDR表記)。
つなげる機器の数を計算する
ホスト部のビット数を n とすると、ホスト部の組合せは 2n 通りです。ただし、ホスト部が すべて0 のアドレスは「ネットワークそのもの」を表す ネットワークアドレス、すべて1 のアドレスは全員に一斉送信するための ブロードキャストアドレス として予約されていて、機器には割り当てられません。
割り当てられるアドレスの数 = 2n − 2(n はホスト部のビット数)
- 255.255.255.0(/24):ホスト部 8ビット → 28 − 2 = 256 − 2 = 254個
- 255.255.255.192(/26):192 は 2進数で 11000000 なので、ホスト部は 6ビット → 26 − 2 = 64 − 2 = 62個
「−2」を忘れない のが最大のひっかけです。また、マスクの最後の数値は、次のように2進数にして「0の個数」(=ホスト部のビット数)を数えると速く解けます。
| 最後の数値 | 2進数 | ホスト部のビット数 | 割り当て可能数 |
|---|---|---|---|
| 0 | 00000000 | 8 | 254 |
| 128 | 10000000 | 7 | 126 |
| 192 | 11000000 | 6 | 62 |
| 224 | 11100000 | 5 | 30 |
| 240 | 11110000 | 4 | 14 |
DNS ― 名前から住所を調べる電話帳
「203.0.113.10」のような数字の並びは、人間には覚えにくいですよね。そこで、IPアドレスに ドメイン名(例:www.example.co.jp)という覚えやすい名前を付けて使います。ドメイン名とIPアドレスを対応付ける仕組みが DNS、ドメイン名からIPアドレスを調べることを 名前解決 といいます。
ドメイン名は右から順に大きな区分を表します。「www.example.co.jp」なら、jp(日本)→ co(企業)→ example(組織名)→ www(サーバ名)という階層です。URLやメールアドレスの「@」の後ろにもドメイン名が使われています。
DNSが使えなくなると、ネットワークがつながっていても「ドメイン名でのアクセス」ができなくなります。名前解決がうまくいかないだけなので、IPアドレスを直接指定すれば通信できる場合があります。
似た仕組みの比較
| 仕組み | ひとことで | 何を何に |
|---|---|---|
| DNS | 名前解決 | ドメイン名 → IPアドレス |
| DHCP | 自動割当て | 機器にIPアドレスなどの設定を配る |
| NAT / NAPT | アドレス変換 | プライベートIPアドレス ⇔ グローバルIPアドレス |
試験に出るポイント
- IPv4は32ビット(約43億個、8ビット×4を10進数で表記)、IPv6は128ビット
- プライベートIPアドレス はLAN内専用(10.〜、172.16〜172.31.〜、192.168.〜)、グローバルIPアドレス は世界で一意
- NAT / NAPT = プライベートとグローバルのアドレス変換。NAPTは1つのグローバルIPアドレスを複数台で共用できる
- DHCP = IPアドレスなどを自動で割り当てる
- サブネットマスク の1がネットワーク部、0がホスト部。割り当て可能数は 2n − 2
- DNS = ドメイン名からIPアドレスを調べる(名前解決)