URLを打ってから表示されるまで

概要 — まず全体をつかむ

「example.com」と打ってEnterを押してから、ページが目の前に現れるまで——その一瞬に、世界を巻き込んだリレーが起きています。旅は、かならずこの順番で進みます:

  1. 住所を調べる — 名前しか知らない相手の、届け先を知る
  2. 道をつなぐ — 相手と3回の挨拶をして、確かな通り道を作る
  3. 注文する — 「このページください」と頼み、材料を受け取る
  4. 組み立てる — 届いた材料で、目の前でページを組み立てる

この物語は「あなたの端末から1台のサーバまでの通信経路の旅」です。同じお願いが、サービス全体の何台もの機械でどう処理されるかは 1リクエストの流れ で見られます。

登場人物と流れは、アニメーション『パケットの旅』で通して見られます(配役は図の下のリストへ)。以降の①〜④では「旅のどのコマの話か」を毎回示します:

アニメーション『パケットの旅』を開く
💻📱 あなたのPC・スマホの中ルーター(通り道)ブラウザOSDNSサーバWebサーバ
  • ブラウザあなたの代わりにページを取りに行く注文係
  • OS機械の中の世話役。外との通信はぜんぶここを通る
  • DNSサーバ名前から住所を調べてくれる案内所
  • Webサーバページの材料を持っているお店
  • ルーター(通り道)家とインターネットの出入り口。メッセージはここを通過していく
「▶ 再生」で通しで見るか、「次へ」で1手ずつ進めてください。
0 / 12

同じ「調べてから送る」流れを、あなたの世代の身近な例(手紙・電話・LINE)に置き換えたのがこちら:

アニメーション『身近な例で解説』を開く
あなた人脈最強の友達相手のアカウント
  • あなた=ブラウザの立場。送りたいけど連絡先を知らない
  • 人脈最強の友達=DNSサーバの正体。その地域のあらゆる連絡先を知っている
  • 相手のアカウント=Webサーバ。届け先の連絡先が「IPアドレス」
どの世代のたとえでも、流れは同じ5手。「▶ 再生」でどうぞ。
0 / 5
文でも読みたい人はこちら

LINE や Instagram で言えばこうです。連絡先を知らない相手に、いきなり DM は送れませんよね。そういうとき頼るのが、その地域のあらゆる連絡先を知っている「人脈最強の友達」。「あの人の LINE(インスタ)教えて」と聞けば、連絡先リストから探して教えてくれる。本編に出てくる住所案内所(DNSサーバ)は、インターネット全体にとってのこの「人脈最強の友達」です。しかも本人が知らなければ、別の地域の人脈最強友達に聞いて回ってでも、必ず答えを持って帰ってきてくれます。

詳細 — 1段階ずつ追う

① 住所を聞く

🎬 アニメーション『パケットの旅』の ②〜⑤ のところです!

まず、ブラウザは「example.com」がどこにあるのか知りません。名前は知っていても住所を知らない状態です。

そこで最初にやるのが、住所案内所——DNSへの問い合わせです。「example.com というお店の住所を教えてください」。案内所は台帳をめくり、「その店の住所は 93.184.216.34 です」と数字の住所(IPアドレス)を教えてくれます。

大事なのは順番です。住所がわからないと、郵便局から手紙を送ろうにも送れない。だからこの旅は必ず「住所調べ」から始まります。たとえでつかみ直したいときは、概要のアニメーション『身近な例で解説』へ。

この部分をもっと深く(中級

🎬 アニメーション『パケットの旅』の ②〜⑤ のところです!

名前解決は「近くの控えから確認し、なければ遠くへ聞きに行く」仕組みです。必ずこの順で進みます:

  1. ブラウザは自分では調べず、OSのリゾルバ※1に「example.com のIPアドレスを教えて」と依頼する(アプリは直接ネットワークに触れず、必ずOSを通る)
  2. OSはまずキャッシュ※2を確認する。答えの控えが残っていればここで即終了——そのまま②へ進む
  3. 控えがなければ、設定されたフルサービスリゾルバ※3(通常は契約プロバイダかルーター)へ問い合わせる(主にUDPのポート53)
  4. リゾルバも知らなければ、ルートサーバ → .com のTLDサーバ → example.com の権威サーバ※4と、住所帳の階層を上から順にたどる(これが再帰問い合わせ※5)
  5. 得られた答え——Aレコード※6(= IPアドレス)——が、TTL※7の期間だけ各所に控えを残しながらブラウザまで戻ってくる
アニメーション『DNSの名前解決(再帰)』を開く
あなた(リゾルバ)ルートサーバTLDサーバ(.com)権威サーバ(example.com)
  • あなた(リゾルバ)名前からIPを調べる係。知らなければ上位へ聞きに行く
  • ルートサーバ住所帳の最上位(世界の目次)。「.com」の担当を教えてくれる
  • TLDサーバ(.com)「.com」を束ねる担当。「example.com」の担当を教えてくれる
  • 権威サーバ(example.com)この名前の最終回答(Aレコード)を持つサーバ
「▶ 再生」で通しで見るか、「次へ」で1手ずつ進めてください。
0 / 7

登場人物メモ(※の説明):

  • ※1 リゾルバ — OSに内蔵された名前解決の窓口。全アプリの「調べて」がここに集まる
  • ※2 キャッシュ — 一度調べた答えの控え。2回目のアクセスが速い理由はほぼこれ
  • ※3 フルサービスリゾルバ — あなたの代わりに世界中へ聞いて回るDNSサーバ。初級の「人脈最強の友達」の正体
  • ※4 ルート/TLD/権威サーバ — 住所帳の階層。「世界の目次 → .com の目次 → example.com 本人」の順に詳しくなる
  • ※5 再帰問い合わせ — 自分が知らなければ、他をたどってでも必ず答えを持ち帰る聞き方
  • ※6 Aレコード — 「この名前のIPアドレスはこれ」という台帳の1行
  • ※7 TTL — 控えの賞味期限。切れたら調べ直す

⚠️ イレギュラー(うまくいかないとき):

  • 名前が存在しない — 権威サーバが「そんな名前はない」と答える(NXDOMAIN)。ブラウザは「サーバが見つかりません」と表示。旅は①で終わり、②以降は始まらない
  • リゾルバが応答しない — 一定時間待って(タイムアウト)、予備のDNSサーバへ聞き直す。全滅なら接続エラー
  • 控えが古い — サーバが引っ越した直後は、TTLが切れるまで古い住所へ案内されることがある

② 電話をつなぐ

🎬 アニメーション『パケットの旅』の ⑥〜⑧(緑の枠のところ)です!

住所がわかったら、いきなり用件を叫ぶのではなく、まず電話をつなぎます。挨拶は必ず3回、この順番です:

  1. こちらから「もしもし、話せますか?
  2. 相手から「つなげてもらっていいですよ
  3. こちらから「じゃあつなげますね

この3回で、お互いに「ちゃんと聞こえる相手だ」と確認し合ってから会話が始まります。この確認のおかげで、途中で言葉が抜け落ちても気づいてやり直せる、信頼できる通話になります。

この部分をもっと深く(中級

🎬 アニメーション『パケットの旅』の ⑥〜⑧(緑の枠 = 3ウェイハンドシェイク)のところです!

IPアドレスがわかったら、そのIPのポート※1 443(HTTPSの場合)に向けて、2段階の準備をします。順序は必ず TCPが先、TLSが後です。

第1段階 — TCPの3ウェイハンドシェイク※2(初級の「3回の挨拶」の正式名):

  1. こちら → サーバ: SYNシーケンス番号※3を添えて「話したい」)
  2. サーバ → こちら: SYN-ACK(「受けた、こちらの番号はこれ」)
  3. こちら → サーバ: ACK(「確認した、始めます」)
アニメーション『TCPの3ウェイハンドシェイク』を開く
あなた(クライアント)サーバ
  • あなた(クライアント)通信を始めたい側。まず接続を確立しにいく
  • サーバ接続要求を受ける側
「▶ 再生」で通しで見るか、「次へ」で1手ずつ進めてください。
0 / 4

この3ステップ(メッセージ3本=往復にして約1.5回)で「相手は実在し、双方向に届き、番号の起点を共有した」状態になり、欠落の検知・再送・順序の保証——つまり信頼できる通信が可能になります。

第2段階 — TLSハンドシェイク※4(HTTPSの場合のみ):

  1. サーバが証明書※5を提示し、ブラウザが「本物の example.com か」を検証する
  2. 鍵合意※6(現在は主にECDHE)で、この通信専用の暗号鍵をその場で作る
  3. 以降のやり取りは、すべてこの暗号化された道の上を流れる
アニメーション『TLSハンドシェイク(鍵の合意)』を開く
ブラウザサーバ
  • ブラウザ相手が本物か確かめ、この通信専用の共通鍵を用意したい側
  • サーバ身分証(証明書)を提示し、鍵合意に応じる側
「▶ 再生」で通しで見るか、「次へ」で1手ずつ進めてください。
0 / 4

登場人物メモ(※の説明):

  • ※1 ポート — 同じ機械の中の窓口番号。Webの窓口は443(HTTPS)と80(HTTP)
  • ※2 3ウェイハンドシェイク — SYN → SYN-ACK → ACK の3ステップ(メッセージ3本=約1.5往復)。TCPの接続開始の作法
  • ※3 シーケンス番号 — データに振る通し番号。抜けや順番の乱れをこれで見つける
  • ※4 TLS(ハンドシェイク) — 通信を暗号化する層。アドレスバーの鍵マークの正体
  • ※5 証明書 — 「私は本物の example.com です」を第三者(認証局)が保証する身分証
  • ※6 鍵合意 — 盗み聞きされている前提でも、2人だけの鍵を作れる数学的な手順

⚠️ イレギュラー(うまくいかないとき):

  • 途中でデータが消えた — ACKが返らないのでTCPが自動で再送する。人間は気づかない(少し遅く感じるだけ)
  • 証明書がおかしい — 期限切れ・名義違いなどは、ブラウザが赤い警告画面で旅を中断する
  • 窓口に誰もいない — 接続拒否(RST)が返り、「このサイトにアクセスできません」になる

③ 注文する

🎬 アニメーション『パケットの旅』の ⑨〜⑪ のところです!

電話がつながったら、ようやく注文です。「このページをください」。

お店(Webサーバ)は注文を受けて、ページの設計図(HTML)を送り返してきます。ここで面白いのは、最初に届くのは完成品ではなく設計図だということ。設計図を読んだブラウザは「この写真も要る」「この飾り付け(CSS)も要る」「この動く仕掛け(JavaScript)も要る」と気づいて、追加の注文を何度も繰り返します

この部分をもっと深く(中級

🎬 アニメーション『パケットの旅』の ⑨〜⑪ のところです!

確立した通信路の上で、ようやく本題の注文です:

  1. ブラウザがHTTPリクエスト※1を送る。実体はテキストの依頼書で、GET /index.html HTTP/1.1 という1行目に、HostUser-Agent などのヘッダ※2が続く
  2. サーバはステータスコード※3 + ヘッダ + ボディ(HTML本体)を返す
  3. ブラウザはHTMLを解析(パース)※4しながら、<link>(CSS)・<img>(画像)・<script>(JS)を見つけるたびに追加リクエストを発行する
  4. この繰り返しで、1ページの表示に数十〜数百往復が発生する——だから控え(キャッシュ)とCDN※5が効く

登場人物メモ(※の説明):

  • ※1 HTTPリクエスト — 「何がほしいか」を書く定型の依頼書
  • ※2 ヘッダ — 依頼書・返事の欄外メモ。差出人(ブラウザの種類)や希望(言語・圧縮方式)を書く
※2 ヘッダの実物を見る — HTTPリクエストのどこがヘッダ?

ブラウザが実際に送っている依頼書は、たったこれだけのテキストです:

GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/126.0
Accept: text/html
Accept-Language: ja
Cookie: session=abc123

構造は上から3つだけ。必ずこの順です:

  1. リクエストライン(1行目)— GET /index.html HTTP/1.1。「/index.html を取得(GET)したい。作法は HTTP/1.1 で」という宣言
  2. ヘッダ(2行目〜空行の手前まで)— 名前: 値 の形の欄外メモの束。上の例では Host(宛先のドメイン)、User-Agent(差出人=ブラウザの種類)、Accept(受け取れる形式)、Accept-Language(希望の言語)、Cookie(会員証)の5枚が全部ヘッダ
  3. ボディ(空行の下)— 最後の空行が「ヘッダはここまで」の合図。GETではボディは空。フォーム送信(POST)のときは、ここに入力内容が入る

返事(HTTPレスポンス)も同じ3部構造で、1行目だけが HTTP/1.1 200 OK のようなステータスラインに変わり、ボディにHTML本体が入っています。

  • ※3 ステータスコード — 返事の結果を表す3桁の数字。200=成功、404=品物がない、500=お店側の事故
※3 ステータスコードの一覧(よく見るもの)

3桁の数字は百の位がジャンルです。2xx=成功 / 3xx=案内 / 4xx=依頼側の問題 / 5xx=お店側の問題、とだけ覚えれば初見の数字も読めます。

2xx — 成功

  • 200 OK — 成功。いちばんよく見る数字
  • 201 Created — 新しく作れた(投稿・登録の成功)
  • 204 No Content — 成功したが、返す中身はない(削除の成功など)

3xx — 案内(リダイレクト)

  • 301 Moved Permanently — 恒久的に引っ越した。次からは新住所へどうぞ
  • 302 Found — 一時的にこちらへ
  • 304 Not Modified — 前回から変わっていない。手元の控え(キャッシュ)を使って

4xx — 依頼側(あなた側)の問題

  • 400 Bad Request — 依頼書の形式がおかしい
  • 401 Unauthorized — 誰だか確認できない(ログインが必要)
  • 403 Forbidden — 誰かは分かったが、権限がない
  • 404 Not Found — 品物がない
  • 429 Too Many Requests — 頼みすぎ。少し待って

5xx — お店側の問題

  • 500 Internal Server Error — お店の中で事故が起きた
  • 502 Bad Gateway — 取次役が、奥の担当から壊れた返事を受け取った
  • 503 Service Unavailable — 混雑またはメンテナンス中
  • 504 Gateway Timeout — 奥の担当からの返事が時間切れ
  • ※4 解析(パース) — 設計図を上から読み解いていく作業
  • ※5 CDN — 世界中に置いたコピー配布拠点。近い拠点から配ることで速くする仕組み

⚠️ イレギュラー(うまくいかないとき):

  • 404 Not Found — 道はつながり注文も届いたのに、品物だけがない。①や②の失敗とは起きる場所が違うのがポイント
  • 5xx — お店側の事故。あなたの操作は正しくても起きる
  • リダイレクト(301/302) — 「引っ越しました、こちらへ」。ブラウザは新しい住所へ自動でもう一度注文し直す(Networkタブだと往復が1回増えて見える)

④ 組み立てる

🎬 アニメーション『パケットの旅』の (最後のコマ)のところです!

材料が揃ったら、ブラウザが目の前で組み立てます。組み立てにも順番があります:

  1. 骨組みを立てる — 設計図(HTML)どおりに、見出しや文章の構造を組む
  2. 飾り付ける — 色・配置・大きさ(CSS)で見た目を整える
  3. 動きをつける — ボタンや切り替えなどの仕掛け(JavaScript)を動かす

こうして、ようやくページが表示されます。

ここまでの所要時間、だいたい1秒未満。あなたがまばたきする間に、住所案内・3回の挨拶・注文・配達・組み立てが全部終わっています。次にページがなかなか開かないとき、思い出してください。どこかの配達が渋滞しているだけで、仕組みはいつもこの順番で動いています。

この部分をもっと深く(中級

🎬 アニメーション『パケットの旅』の (最後のコマ)のところです!

材料が届いたら、ブラウザの中で組み立てが始まります。ここも流れ作業です:

  1. HTMLを解析してDOMツリー※1を作る
  2. CSSを解析してCSSOM※2を作る
  3. 両者を合成して、実際に画面に出すものだけのレンダーツリー※3を作る
  4. レイアウト — どこに・何を・どの大きさで置くかを計算する
  5. ペイント — 計算どおりに描く。ここでようやくページが見える

登場人物メモ(※の説明):

  • ※1 DOMツリー — HTMLを、機械が扱える親子構造に変換したもの
  • ※2 CSSOM — CSSを同じように構造化したもの
  • ※3 レンダーツリー — 「実際に画面へ出るものだけ」を集めた最終形(非表示の要素は入らない)

⚠️ イレギュラー(割り込みと事故):

  • JavaScriptの割り込み<script> は既定ではHTMLの解析を一時停止させる。JSが重いと白い画面が続くのはこのため。defer 属性や読み込み位置が表示速度に直結する
  • CSSが遅れて届く — 一瞬だけ飾りのない「素のHTML」が見えることがある(FOUCと呼ばれる現象)

つまり「描画とJS実行は絡み合いながら進む」——ここを制御するのがフロントエンド性能改善の世界で、その入口がこのセクションです。開発者ツールのNetworkタブを開いてページを再読み込みすると、今日の旅の1往復1往復が、そのまま1行ずつ並んでいるのが見えます。

関連する知識

理解度チェック

そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。

1. サーバから最初に届く「HTML」の説明として最も近いものはどれ?

2. 注文(「このページください」)の前に行う「3回の挨拶」は、何のためにある?

3. DNSサーバの役割に最も近いものはどれ?

4. URLを打ってからページが表示されるまでの順番として正しいものはどれ?

5. 「93.184.216.34」のような数字(IPアドレス)の説明として最も近いものはどれ?

6. ページの「色・配置・大きさ」といった飾り付けを指定する材料はどれ?

7. ブラウザがページを組み立てる順番として正しいものはどれ?

8. コンピュータの世界の「住所」にあたる、データの届け先を示す数字の並びを、英字2文字の略語(「〜アドレス」)で答えてください。