第2章

IPアドレスとDNS

データの宛先を表すIPアドレスと、ドメイン名をIPアドレスへ変換するDNSの役割を学びます。

この章で学ぶこと

  • IPv4とIPv6の基本
  • グローバルIPアドレスとプライベートIPアドレスの違い
  • ポート番号の役割
  • DNSによる名前解決の流れ

IPアドレスはネットワーク上の宛先

IPアドレスは、IPを使ってデータを届けるための宛先です。現在は主にIPv4とIPv6の2種類が使われています。

  • IPv4の例:192.0.2.10
  • IPv6の例:2001:db8::10

IPv4は32ビット、IPv6は128ビットの値です。IPv6では連続する0を省略して表記することがあります。上のアドレスは説明用として予約された範囲の例であり、実在するサーバーの接続先ではありません。

端末のIPアドレスは常に同じとは限りません。家庭や学校では、ネットワークへ接続したときにDHCPという仕組みで自動的に割り当てられるのが一般的です。

内側のアドレスと外側のアドレス

家庭内などのネットワークでは、192.168.0.0/16 や 10.0.0.0/8 など、インターネットでは直接使わないプライベートIPアドレスが使われます。一方、インターネット上で通信するための一意なアドレスをグローバルIPアドレスと呼びます。

IPv4では利用できるアドレスに限りがあるため、家庭用ルーターはNATという仕組みで、複数の端末の通信を一つのグローバルIPアドレスに対応付けることがあります。

パソコン 192.168.1.10 ─┐
                        ├─ ルーター(NAT)─ グローバルIP ─ インターネット
スマホ   192.168.1.11 ─┘

プライベートIPアドレスは別の家庭でも同じ値を利用できます。したがって、IPアドレスを見ただけで世界中の特定の端末を必ず識別できるわけではありません。

ポート番号でアプリを区別する

一つの端末では、ブラウザ、メール、ゲームなど複数のアプリが同時に通信します。そこでTCPやUDPは、どの通信をどのアプリへ渡すかをポート番号で区別します。

Webでよく使われる既定のポートは、HTTPが80番、HTTPSが443番です。ただし、ポート番号はアプリの種類を保証するものではなく、設定によって別の番号も使えます。

IPアドレス:どの端末へ届けるか
ポート番号:その端末のどの通信へ渡すか

DNSは名前をアドレスへ変換する

人は example.com のようなドメイン名を覚えやすい一方、IP通信にはIPアドレスが必要です。DNS(Domain Name System)は、ドメイン名に対応する情報を調べる分散型の仕組みです。この処理を名前解決と呼びます。

ブラウザでURLを開くとき、名前解決はおおよそ次の順に進みます。

  1. 端末やブラウザに保存済みの結果がないか確認する
  2. 設定されたDNSリゾルバーへ問い合わせる
  3. リゾルバーが必要に応じてルート、TLD、権威DNSサーバーをたどる
  4. 得られたIPアドレスと有効期間を端末へ返す
  5. ブラウザがそのIPアドレスのサーバーへ接続する
www.example.com を知りたい
端末 ──問い合わせ──▶ DNSリゾルバー
端末 ◀──IPアドレス── DNSリゾルバー
  │
  └────そのIPアドレスのサーバーへ接続────▶

DNSの代表的なレコードには、IPv4アドレスを示すA、IPv6アドレスを示すAAAA、別名を示すCNAME、メールの配送先を示すMXなどがあります。

URLを分解する

次のURLを部分ごとに見てみましょう。

https://www.example.com:443/lessons/network?level=1#dns
\___/   \_____________/\_/ \_____________/ \_____/ \_/
方式       ホスト名     ポート      パス       クエリ 断片
  • https:通信に使う方式(スキーム)
  • www.example.com:接続先を表すホスト名
  • 443:ポート番号。HTTPSの既定値なので通常は省略できる
  • /lessons/network:サーバー上の対象を示すパス
  • level=1:サーバーへ渡すクエリ
  • dns:ページ内の位置などを示すフラグメント。通常はサーバーへ送られない

ドメイン名はURLの一部分です。URL全体を「ドメイン」と呼ばないように区別しましょう。

やってみよう

ブラウザのアドレス欄に表示されているURLを一つ選び、スキーム、ホスト名、パス、クエリ、フラグメントに分けてください。値が存在しない部分は「省略」と書きます。

次に、自分の端末のネットワーク設定を開き、次を確認します。

  1. IPv4またはIPv6のアドレス
  2. デフォルトゲートウェイ
  3. DNSサーバー

IPアドレスやネットワーク設定の画面には、組織内の構成を推測できる情報が含まれます。スクリーンショットを公開しないでください。

確認問題

  1. IPアドレスとポート番号は、それぞれ何を区別しますか。
  2. プライベートIPv4アドレスをインターネット上で直接利用しないのはなぜですか。
  3. DNSの名前解決が失敗すると、Webサイトのサーバーが動いていても開けないことがあるのはなぜですか。
  4. URLのフラグメントは、通常どこで利用されますか。

まとめ

IPアドレスは端末への配送先、ポート番号は端末内の通信の届け先を表します。DNSは人が扱いやすいドメイン名とIPアドレスを結び付けます。次章では、接続したサーバーとブラウザがHTTPで何を交換するかを学びます。