ネットワーク●○○○○

IPアドレス

ネットワーク上の機器を一意に識別する住所。通信の宛先指定の基礎。

概要

IPアドレスは、ネットワークにつながる機器一つひとつに割り当てられる番号で、通信の「宛先」と「差出人」を表します。手紙でいえば住所にあたるもので、Webページの閲覧もメールの送信も、あらゆる通信は「どのIPアドレスからどのIPアドレスへデータを送るか」を決めるところから始まります。

普段私たちは「example.com」のような名前でサイトにアクセスしますが、これはDNSが裏で名前をIPアドレスに変換してくれているからです。ネットワークの世界で実際に相手を特定しているのは、常にIPアドレスのほうです。開発の現場でも「サーバのIPを固定する」「このIPからのアクセスだけ許可する」のように、機器やアクセス元を指し示す基本の語彙として毎日のように登場します。

なぜ生まれたか

コンピュータネットワークが生まれたばかりの頃、機器の識別方法はネットワークごとにばらばらでした。ある組織のネットワークと別の組織のネットワークをつなごうとしても、「相手をどう名指しするか」の共通ルールがなければ、データをどこへ運べばよいのか決められません。異なる規格のネットワーク同士を相互接続する——つまり「インターネット(inter-network)」を作る——ためには、どのネットワークにいても通用する、世界共通の住所体系が必要でした。

そこでTCP/IPの設計の中で、物理的なネットワークの種類に依存しない論理的な識別子としてIP(Internet Protocol)アドレスが定義されました。各ネットワークの内部事情がどうであれ、IPアドレスさえ分かれば経路上の機器がバケツリレー式にデータを運べる。この抽象化こそが、世界中のネットワークを一つにつないだ土台です。

詳細

IPv4とIPv6

現在広く使われているIPv4アドレスは32ビットの数値で、人間が読みやすいように「192.0.2.1」のような4つの数字(各0〜255)で表記します。32ビットで表せるのは約43億通りですが、インターネットの爆発的な普及によりこの数では足りなくなり、2011年前後から「IPv4アドレスの枯渇」が現実になりました。

その根本対策として設計されたのがIPv6です。128ビットに拡張され、「2001:db8::1」のような16進数表記を使います。理論上は事実上無限といえる数のアドレスを割り当てられますが、既存のIPv4網との互換性がないため移行は一朝一夕には進まず、現在も両者が併用されています。

グローバルアドレスとプライベートアドレス、NAT

IPv4の枯渇をしのぐ実務上の工夫が、アドレスの二層構造です。インターネット上で一意な「グローバルIPアドレス」に対し、家庭や社内のLANでは「192.168.x.x」「10.x.x.x」などの「プライベートIPアドレス」を自由に使い、外に出るときだけルータがNAT(Network Address Translation、アドレス変換)で1つのグローバルアドレスに束ねます。自宅の複数台の機器が1つの回線契約でインターネットを使えるのはこの仕組みのおかげです。

プライベートネットワークからインターネット上のサーバへ届くまでの経路は、次のような構図になります。

家庭内LANプライベートIPアドレスインターネットグローバルIPアドレス自宅PC192.168.1.10スマホ192.168.1.11ルータNATで送信元をグローバルIPに書き換え経路上のルータ群バケツリレーで中継宛先サーバ203.0.113.5点線: 応答はルータが変換の記録をもとに元の機器へ振り分けて返す
NATによる二層構造。LAN内はプライベートIP、外に出るときだけルータがグローバルIPに束ねる

ネットワーク部とホスト部、CIDR

IPアドレスは前半が「どのネットワークか」、後半が「そのネットワーク内のどの機器か」を表す二段構えになっています。境目の位置は「192.0.2.0/24」のようにCIDR表記(スラッシュの後ろがネットワーク部のビット数)で示します。経路上のルータは全機器の場所を知っているわけではなく、ネットワーク部だけを見て「この範囲宛はあちらへ」と大まかに転送します。クラウドでVPCのサブネットを切るときに出てくる「/24」「/16」はまさにこの話です。

この「境目の位置」がどう働くのか、実際にプレフィックス長を動かして確かめてみましょう。

⚡ 体験: サブネットの境界を動かす
プリセット:
ネットワーク部(24ビット)ホスト部(8ビット)
サブネットマスク
255.255.255.011111111.11111111.11111111.00000000
ネットワークアドレス
192.168.10.0/24IP AND マスク — この網の名前
ブロードキャスト
192.168.10.255ホスト部が全部1 — 網内の全員宛
ホスト範囲
192.168.10.1 〜 192.168.10.254
使えるホスト数
2542^8 − 2(両端はネットワークアドレスとブロードキャストに予約)
同じサブネット判定 — もう1つのIP...

同じサブネット(192.168.10.200 AND マスク = 192.168.10.0)。ゲートウェイを介さず直接届けられます。

スライダーを動かして、ネットワーク部(金)とホスト部(青白)の境界が動く様子を観察してみてください。

実務での使いどころと落とし穴

サーバ運用では、IPアドレスは固定的に割り当てる場合と、DHCPという仕組みで起動時に自動割り当てする場合があります。クラウドではサーバ(インスタンス)を再起動するとIPが変わることがあるため、公開サービスには固定のIPやDNS名を紐付けるのが定石です。

落とし穴としてよくあるのは、IPアドレスを「1ユーザ=1アドレス」と思い込むことです。NATの下では多数のユーザが同じグローバルIPを共有しますし、逆に1人が移動やスマホの回線切替でIPを頻繁に変えることもあります。そのため「IPアドレスでユーザを識別する」設計(アクセス制限やレート制限など)は、便利ですが精度に限界があることを前提に使う必要があります。また、IPアドレスは宛先の特定までしかしません。同じ機器の中のどのアプリケーションに届けるかはポート番号の仕事で、この2つが揃って初めて通信の宛先が完成します。