DNSとHTTP — 名前を住所に変え、Webを取り寄せる

「www.example.jp」という名前を、通信に必要なIPアドレスという数字に変える。それが DNS。そしてブラウザがそのサーバに「これください」と頼み、中身が返ってくる。それが HTTP。世界規模の電話帳を階層で引くしくみと、要求と応答というシンプルな会話を、動かして理解します。

1. 名前を住所に変える — DNS の階層委任

1つの巨大な電話帳では世界中の名前を管理しきれません。DNS は責任を階層で分担します。ルートは「.jp なら あちらへ」とだけ知り、TLDサーバ(.jp)は「example.jp なら あちらへ」とだけ知り、権威サーバが最終的な IP を答える。あなたの代理をするリゾルバが、この木を上から順にたどって(反復問い合わせ)答えを組み立てます。下で動きを追ってください。

DNS の木をたどる — ルート→TLD→権威サーバ
青い玉=問い合わせ(下→上へ)、緑の玉=返事(委任先の案内、または最終IP)。リゾルバがルート・TLD・権威サーバへ順に尋ね、最後に IP を持ち帰ります。「キャッシュを使う」をチェックすると、2回目以降はリゾルバが即答(木をたどらない)様子に切り替わります。
POINT — 反復問い合わせと再帰問い合わせ あなた(スタブ)はリゾルバに「最後まで面倒みて」=再帰問い合わせを投げる。リゾルバはルート・TLD・権威へ「次はどこ?」を1段ずつ尋ねる=反復問い合わせで答えを集める。役割を分けることで、末端の機器は賢くなくてよい。

2. キャッシュとTTL — なぜ2回目は速いのか

毎回ルートから木をたどっていては遅すぎます。リゾルバは一度引いた答えをキャッシュし、次からは即答します。ただし住所は変わりうるので、各レコードにはTTL(有効期限)が付き、期限が切れたら引き直します。下で TTL と問い合わせ間隔を変えると、命中(緑・一瞬)と引き直し(橙・重い)の割合が変わります。

キャッシュのタイムライン — TTL が命中率を決める
右へ流れる時間軸。各縦棒が1回の問い合わせで、高さ=所要時間。橙=キャッシュ切れで木をたどる(重い)、緑=キャッシュ命中(一瞬)。橙の後ろの薄緑帯が TTL の有効期間で、その中に入る問い合わせは緑になります。TTL を上げると緑が増えます。

3. HTTP — 要求と応答の会話

IP が分かれば、ブラウザはサーバと HTTP で会話します。要求にはメソッド(取得する GET、送信する POST など)と対象のパスを書き、サーバはステータスコード(うまくいった 200、見つからない 404、引っ越した 301 など)と本文を返します。下でメソッドとパスを選び「送信」すると、要求が飛んで応答が返る様子と、実際のヘッダが見えます。

HTTP 要求・応答 — メソッドとステータスコード
左がブラウザ、右がサーバ。青い封筒=要求(GET /index.html …)、色つき封筒=応答(ステータスで色分け:緑=2xx、橙=3xx、赤=4xx/5xx)。放っておくと例を順に自動再生します。メソッドやパスを選んで「送信」すると、その組み合わせを試せます。
要求: METHOD パス HTTP/1.1  →  応答: HTTP/1.1 ステータス 説明 1xx 情報 / 2xx 成功 / 3xx リダイレクト / 4xx クライアント側の誤り / 5xx サーバ側の誤り
注意 — GET に副作用を持たせない GET は「取得するだけ」で状態を変えない安全なメソッド、という約束の上に Web は成り立っている。リンクを踏んだだけ・先読みされただけで注文が確定したりデータが消えたりしないのはこのため。状態を変える操作は POST(や PUT/DELETE)で行う。この約束を破って「GET で削除」を作ると、クローラや先読みが勝手に叩いて事故になる。

4. リダイレクトとキャッシュ — 状態コードが導く流れ

ステータスコードは、ブラウザに次の行動を指示します。301 なら「引っ越し先へ行き直して」、304 なら「変わってないから手元のキャッシュを使って」。これらは1往復では終わらず、ブラウザが自動で追加の要求を出します。下でシナリオを選ぶと、その一連のやりとりが時系列(上から下)で描かれます。

やりとりの時系列 — 301 追従・404・304
左の縦線=ブラウザ、右の縦線=サーバ。矢印が上から順に現れます。右向き=要求、左向き=応答(色はステータス種別)。301 ではブラウザが Location をたどって自動で行き直し、304 では本文を送らず手元のキャッシュを使う様子が分かります。

5. まとめ — 名前解決からページ表示まで

一歩先へ — HTTPS・HTTP/2・DoH 実際の Web では、この HTTP は TLS で暗号化されて HTTPS になり(次章)、HTTP/2・HTTP/3 では1本の接続で多数の要求を多重化して待ち時間を隠す。DNS 自体も盗聴・改ざんを防ぐため DoH/DoT(DNS over HTTPS/TLS)で暗号化が進む。名前解決と要求応答という骨格は同じまま、その上に「速さ」と「安全」が積み重ねられている。