Webエンジニアをやっている、ますみんと申す(武士風挨拶)。
仕事ではもっぱらWebアプリを作ることばっかりやってるわけだが、最近ふと思ったのが「あれ、ワシこのアプリのデプロイ先がどうなってるか全然分かってない」ってこと。コーディングはまぁ人並みにできる気がしているのだが、インフラの知識が皆無に等しいのでこの先運用保守をやっていくにあたりちぃと不安に思えたのだ。
まぁ不安に思ったなら補強あるのみ。いい機会だと思って、インターネットの仕組みやインフラの基礎を再勉強していこうと思うゾ。ちなみにまた例によってシリーズ化しようとしているけど、第一回で終わりそうなのはもはやお約束。第二回ができたらラッキー、くらいのノリでゆる〜くやってくゾ〜。
第一回: IPアドレスってなんだ?
IPとは
IPアドレスの前に、そもそもIPが何なのかがよく分からん。IPて何の略ゾ?困った時はWikipedia先生だ。先生によると、IPとは
Internet Protocol – インターネットを実現しているネットワーク・プロトコル
https://ja.wikipedia.org/wiki/IP
とのことだ。プロトコルってのは「こういう方法で通信してね」っていう決まりのこと。つまりIPはネットワーク上での通信の決まりってことだ。ほぉ〜。
IPアドレスとは
IPが何なのか分かったところで、本題のIPアドレスに入っていく。また例によってWikipedia先生にお聞きしたところ、IPアドレスとは
IPでネットワーク上の機器を識別するために指定するネットワーク層における識別用の番号である。
https://ja.wikipedia.org/wiki/IP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9
とのこと。つまりネットワーク上での通信の決まりを使い機器を識別するための番号のことだ。この番号はネットワークに接続する全ての通信機器に対して振られる(1台の機器に対して複数振られることもある)。言い換えると、IPアドレスが分かればどの通信機器が通信を行っているかが分かるということだ。
参考: IPアドレス開示要求
最近はネット上での誹謗中傷に対してIPアドレス開示要求がなされることも多いが、これは上記の通り「IPアドレスが分かればどの通信機器が通信を行っているかが分かる」ので、通信機器を持つ人 ≒ 誹謗中傷を行った人物の特定ができる可能性があるからだ。
DeNA井納投手の「嫁酷評」提訴で注目 「選手の奥さん叩き」掲示板のエグい内容
とはいえあくまで可能性があるだけで、IPアドレスが分かっただけでは完全な個人特定はできない。個人特定ができない理由については後述する。
IPアドレスの形式
ここでは、IPアドレスが具体的にどんなものなのかを見ていこう。現在インターネットで使われているIPアドレスにはIPv4方式とIPv6方式があるが、ここではIPv4方式について勉強していくことにする。
IPv4形式のIPアドレス
IPv4形式でのIPアドレスは、32bitの2進数で表される。…が、大概の人間は10進数の方が親しみやすいと思われるので、8桁ごとに区切って10進数として表すのが一般的だ。8桁の2進数から10進数に直しているので、それぞれの数字は0〜255(= 2^8 – 1)になる。この値が通信機器1台1台に振られるので、ネットワーク上でどの機器が通信をしたかが分かるという仕組みだ。

参考: IPv6形式について
ちなみに理論上2^32 = 約43億のIPアドレスが割当可能となるが、これでは全人類が1人1台ずつ通信機器をインターネットに接続すると余裕で足りなくなる。そこで作られたのがIPv6形式のIPアドレスだ。詳しいことはここでは説明しないが、IPv6形式では(約43億)^4個のIPアドレスが用意できるため、ほぼ無限に近い数の通信機器を同じネットワーク内で識別できる。
IPアドレスの構成
バラバラの数字をただ当てはめているように見えるが、実はIPアドレスのそれぞれの数字にはちゃんと意味がある。
下図を見てほしい。IPアドレスの数字はネットワーク部とホスト部と呼ばれるものから構成されている。それぞれの部分は、どのネットワークに属しているかとどの通信機器であるかを表している。例えば「『東京都品川区のネットワーク』に属している『Hoge社のWebサーバー』」といった具合だ。電話番号に似ているといえば想像しやすいかな?
ネットワーク部とホスト部の分割方法は、クラスと呼ばれるものでさらに分けられる。クラスはAからEまで存在する(参考: Wikipedia)が、通常使われるのはクラスA〜Cだ。これも電話番号の市外局番と似ている。固定電話番号の総桁数は10桁と決まっているので、エリアに所属する電話機の数に応じて市外局番の長さを変えている。東京都の23区なら所属する電話機が多いので市外局番部分が短い(03の2桁)。対して、同じ東京都でも八丈島だと電話機が少ないので市外局番部分が長い(04996の5桁)。

見ての通り、同じネットワークに属する通信機器の上限数はクラスによって異なる。例えばクラスCならホスト部が256個の値(0〜255)を取りうるので、256個の通信機器を接続できる…と言いたいところだが、実はIPアドレスは先に予約されてしまっているものがあり、フルで使うことはできない。具体的には以下の2つが使えない。
- ホスト部のビットが全て0のもの(ネットワークアドレス)
- ホスト部のビットが全て1のもの(ブロードキャストアドレス)
例えば192.168.11.1というクラスCのIPアドレスがあったとする。このホスト部のビットを全て0にした192.168.11.0がネットワークアドレスで、全て1にした192.168.11.255がブロードキャストアドレスになる。詳細は省くが、ネットワークアドレスはネットワーク自体を指すIPアドレスで、ブロードキャストアドレスはネットワークに接続している全機器に対してデータを送信する際に使うアドレスだ。
とにかくこの2つのアドレスは予約されていて使えないので、1〜254の254個がクラスCで接続できる通信機器の上限数になる。
グローバルIPアドレス、プライベートIPアドレス
話がそれた。もとに戻そう。IPアドレスには種類が存在する。グローバルIPアドレスとプライベートIPアドレスだ。
以下の図を見てみよう。インターネットに家庭用ルーターを通して接続する際の例だが、実は家庭内ネットワークはインターネットとは別のネットワークとして存在している。正確に言うと、インターネット上で識別できるIPアドレスはルーターまでは振られている。ルーターに接続している通信機器には、インターネット上で識別できるIPアドレスは振られていない。
下図の場合、ルーターが家庭内ネットワークに接続した通信機器に対し、そのネットワーク内でだけ通用するIPアドレスを割り当てる。これがプライベートIPアドレスだ。これに対し、インターネット上で識別できるようルーターに振られたIPアドレス(赤字の番号)をグローバルIPアドレスという。

またカンのいい人は気づいたかもしれないが、プライベートIPアドレスは接続するネットワークが違っても同じIPアドレスが振られることがある。大元のルーターのグローバルIPアドレスが違うので、インターネットに接続する際は同じプライベートIPアドレスを持つ機器はそれぞれ別の機器としてちゃんと認識される。

IPアドレスでサーバーにアクセスしてみる
最初に言ったとおり、このIPアドレスという番号はネットワークに接続する全ての通信機器に対して振られている。この通信機器の中にはWebサーバーも含まれている。Webサーバーってのは、Webサイトを表示するためのデータをアクセスに応じて返すコンピュータのことだ。
世界中のあらゆるWebサイトは、そのWebサイト用のデータを返すWebサーバーにアクセスすることによって閲覧ができるようになっている。
例えばYahooのWebサイトを見たければ182.22.59.229 にアクセスすればいいし、ニコニコ動画が見たければ133.152.43.29 にアクセスすればいい。いつも見ているWebサイトが表示されるはずだ。
でも普段なにかWebサイトを見る時、こんなアドレスを見た覚えはない…。そんな人も多いハズ。数字の羅列であるIPアドレスは覚えづらすぎるので、Webサーバーへアクセスする際にはほとんど使われない。じゃあ代わりに何でアクセスするか。それが、みんなご存知ドメインというやつである。
次回予告
というわけで、次回はドメインについてお勉強していこうと思う。どんどん勉強して、インフラつよつよマンになっていこうな!
ちなみに。インターネットやインフラを深く学びたいわけじゃないけど、知識としてサラッと流す程度に学習しておきたいっていう人には、ネットワークの基本 という本がオススメ。見開き1ページごとに1つのトピックが図解付きで載っていて、基礎の基礎がスラスラ学習できる。他のシリーズも割と良書なので、ハンドブックとして持っておくことをオススメゾ。

