DNSとHTTP — 名前を住所に変え、Webを取り寄せる
「www.example.jp」という名前を、通信に必要なIPアドレスという数字に変える。それが DNS。そしてブラウザがそのサーバに「これください」と頼み、中身が返ってくる。それが HTTP。世界規模の電話帳を階層で引くしくみと、要求と応答というシンプルな会話を、動かして理解します。
1. 名前を住所に変える — DNS の階層委任
1つの巨大な電話帳では世界中の名前を管理しきれません。DNS は責任を階層で分担します。ルートは「.jp なら あちらへ」とだけ知り、TLDサーバ(.jp)は「example.jp なら あちらへ」とだけ知り、権威サーバが最終的な IP を答える。あなたの代理をするリゾルバが、この木を上から順にたどって(反復問い合わせ)答えを組み立てます。下で動きを追ってください。
2. キャッシュとTTL — なぜ2回目は速いのか
毎回ルートから木をたどっていては遅すぎます。リゾルバは一度引いた答えをキャッシュし、次からは即答します。ただし住所は変わりうるので、各レコードにはTTL(有効期限)が付き、期限が切れたら引き直します。下で TTL と問い合わせ間隔を変えると、命中(緑・一瞬)と引き直し(橙・重い)の割合が変わります。
3. HTTP — 要求と応答の会話
IP が分かれば、ブラウザはサーバと HTTP で会話します。要求にはメソッド(取得する GET、送信する POST など)と対象のパスを書き、サーバはステータスコード(うまくいった 200、見つからない 404、引っ越した 301 など)と本文を返します。下でメソッドとパスを選び「送信」すると、要求が飛んで応答が返る様子と、実際のヘッダが見えます。
GET /index.html …)、色つき封筒=応答(ステータスで色分け:緑=2xx、橙=3xx、赤=4xx/5xx)。放っておくと例を順に自動再生します。メソッドやパスを選んで「送信」すると、その組み合わせを試せます。4. リダイレクトとキャッシュ — 状態コードが導く流れ
ステータスコードは、ブラウザに次の行動を指示します。301 なら「引っ越し先へ行き直して」、304 なら「変わってないから手元のキャッシュを使って」。これらは1往復では終わらず、ブラウザが自動で追加の要求を出します。下でシナリオを選ぶと、その一連のやりとりが時系列(上から下)で描かれます。
5. まとめ — 名前解決からページ表示まで
- DNS:名前→IP の変換を、ルート/TLD/権威サーバの階層委任で分担。リゾルバが木をたどって答えを組み立てる。
- キャッシュとTTL:一度引いた答えは TTL の間キャッシュから即答。だから2回目は速い。
- HTTP:メソッド(GET/POST…)で要求し、ステータスコード(200/301/404…)で応答。人にも読めるテキストの会話。
- 状態コードの誘導:301 は行き直し、304 はキャッシュ利用など、コードがブラウザの次の一手を決める。