edubun
日本語

Webページを開くと何が起こるか

往復50 msなら、HTTPSのページはHTMLの最初の1バイトが届くまでに少なくとも4往復、200 msかかります。HTTP/3なら1往復減ります。

朝の7時40分。混んだ電車に乗った生徒が、モバイルデータで学校の給食の献立へのリンクをタップすると、すぐに今日の献立が表示されます(これは作り話の場面です)。その一瞬に、スマートフォンはこれまでの五つの単元のことをすべて行いました。DNSの問い合わせ、TCP接続、暗号化されたセッション、そしてステータスコードつきで答えが返るHTTPリクエストです。スマートフォンの動きを追いかけ、待ち時間を数えてみましょう。

まずスマートフォンはリンクを読む

リンクがhttps://www.example.com/index.htmlだとしましょう。MDNはURLをいくつかの部分に分けています。httpsはスキームで、暗号化されたTLS接続の上でHTTPを使い、別のポートが書かれていなければ443番ポートを使う、という意味です。www.example.comはホストで、DNSがアドレスに変える名前です。/index.htmlはパスで、そのサーバー上で求めるリソースです。URLには、疑問符のあとにクエリ、ハッシュ記号のあとにフラグメントをつけることもできます。フラグメントはページの中の一か所を指し、サーバーには決して送られません。

最初の1バイトまでに4往復

メッセージがサーバーに届き、返事が戻ってくるまでの時間を往復時間(RTT)と呼びます。往復の回数を数えれば、待ち時間がどこから来るかがわかります。1回目:名前がキャッシュされていなければ、DNSの問い合わせにリゾルバーまで約1往復かかります。2回目:TCPのハンドシェイクで、SYNを送りSYN-ACKが戻ります。3回目:TLS 1.3(RFC 8446)は1往復で鍵を決め、クライアントの最後のハンドシェイクのメッセージはHTTPリクエストといっしょに送れます。4回目:リクエストが出ていき、レスポンスが戻ってきます。RTTが50 msなら、サーバーがすぐに答えても、献立の最初の1バイトまで200 msかかります。

読み込み中

ドラッグで回転、スクロールまたはピンチで拡大・縮小。

「次のステップ」を押してメッセージを一つずつ加えるか、「すべて表示」を押しましょう。HTTPS、暗号化なしのHTTP、HTTP/3を切り替え、往復時間のスライダーを動かします。左端の数は、何往復したかを示しています。サーバーが考える時間とページの大きさは入れていません。

HTTP/3(RFC 9114)は、TCPの代わりにQUIC(RFC 9000)の上で動きます。QUICはUDPの上にあり、接続とTLSの鍵をいっしょに準備するので、TCPの1往復がなくなります。DNS、ハンドシェイクの1往復、そしてリクエストで、全部で3往復です。80番ポートの暗号化なしのHTTPもTLSを飛ばすので3往復ですが、そうすると、カフェのWi-Fiを運用している人など、途中にいるだれもがページを読んだり変えたりできます。アドレスバーの鍵マークは、そのドメインへの接続が暗号化されていることを意味します。サイトそのものが誠実だという意味ではありません。

献立は数字を先頭につけて届く

返事は3けたのステータスコードで始まります。RFC 9110は、コードを最初の数字で分けています。1xxは情報、2xxは成功、3xxはリダイレクト、4xxはクライアントエラー、5xxはサーバーエラーです。いちばんよく出会うのは、200 OK、301 Moved Permanently(ページに新しいアドレスがある)、404 Not Found、500 Internal Server Errorです。もし学校が献立のページを移していたら、スマートフォンはまず301を受け取り、新しいアドレスでもう一度尋ねます。404は、サーバーが答えたもののそのパスには何もなかったという意味なので、ネットワーク自体は動いていたことになります。

一つのページ、たくさんのファイル

HTMLだけでページ全体ができていることはまずありません。HTMLの中に、スタイルシートが一つ、スクリプトが一つ、画像が五つ書かれているとしましょう。スマートフォンがファイルごとに新しい接続を開いたら、どのファイルもTCPとTLSの往復をまた払うことになります。そうせずに、ブラウザーは接続を開いたままにして、次のリクエストをそこで送ります。HTTP/2とHTTP/3では、一つの接続でいくつものリクエストが同時に運ばれます。ブラウザーには自分のキャッシュもあります。レスポンスにしばらく使い回してよいと書かれていれば、次に訪れたときはリクエストを送らずに保存しておいたファイルを読み込みます。ファイルがそろってはじめて、ブラウザーは見えるものを配置して描きます。だから生徒が毎朝開く献立のページは、同じネットワークでも、初めて開くサイトより速く表示されるのです。

RTT往復時間:行って戻るまで
200OK
301Moved Permanently(恒久的に移動した)
404Not Found(見つからない)
500Internal Server Error(サーバー内部のエラー)
HTTP/3UDPの上で動くQUICを使うHTTP
  1. RTTは50 msです。DNSの問い合わせも数えると、HTTPSのページ(TCP + TLS 1.3)で最初の1バイトまでどのくらいかかりますか?
  2. 同じRTT 50 msで、HTTP/3ならどのくらいですか?
  3. RTTは80 msで、名前はもうキャッシュされています。TCPを使うHTTPSのページはどのくらいかかりますか?
  4. HTTPSのページを読み込む順に並べましょう。
  5. 404はどういう意味ですか?
    • Not Found(見つからない)
    • OK
    • Moved Permanently(恒久的に移動した)
    • サーバーエラー
  6. リダイレクトを意味するのは、どの種類のステータスコードですか?
    • 3xx
    • 2xx
    • 4xx
    • 5xx
  7. ポートが書かれていないとき、https://はどのポートを使いますか?
  8. https://www.example.com/index.htmlの/index.htmlは何ですか?
    • パス
    • スキーム
    • ホスト
    • ポート
  9. HTTP/3はどのトランスポートの上で動きますか?
    • UDPの上のQUIC
    • TCP
    • DNS
    • ICMP
  10. アドレスバーの鍵マークは何を教えてくれますか?
    • そのドメインへの接続が暗号化されている
    • サイトが安全で誠実である
    • サイトに広告がない
    • ページがHTTP/3で読み込まれた
よくある間違い
  • 「鍵マークがあれば、サイトは安全だ。」 鍵マークが示すのは、そのドメインへの接続がTLSで暗号化されていることだけです。詐欺サイトにもつくので、ドメインが自分の意図したものか確かめましょう。
  • 「シークレットモードなら、見たサイトはISPにも学校にも知られない。」 シークレットモードは、セッションが終わったあと、ブラウザーが履歴やサイトのデータを機器に残さないようにするものです。GoogleのChromeヘルプによると、訪れたサイトや、学校、勤務先、インターネットサービスプロバイダーなどネットワークを管理する組織は、それでもあなたの行動を見ることができる場合があります。どちらにしても、パケットは同じルーターを通ります。
  • 「404は、インターネットが止まっているという意味だ。」 404はサーバーからの答えです。サーバーには届いたが、そのパスには何もないという意味です。ネットワークが本当に止まっていれば、ステータスコードはまったく届きません。
  • 「リンクの#のあとの部分はサーバーに送られる。」 フラグメントはブラウザーの中にとどまり、ページの中の一か所を選ぶだけです。サーバーには決して送られません。
先生からひとことこの単元はコース全体をまとめるものです。図を見せる前に、順序を自分の言葉で説明させましょう。なぜ接続の前に名前をアドレスに変えなければならないのか、なぜリクエストを送る前に暗号化を準備しなければならないのか。往復の回数を数えることは、学習者の記憶に残る部分です。50 msで手計算し、スライダーを動かす前に合計を予想させましょう。鍵マークとシークレットモードの誤解は速さの話ではありませんが、それでも数分かけましょう。学習者はどちらの思い込みにもとづいて行動するからです。
ポイント
  • URLにはスキーム(https)、ホスト(DNSの名前)、パスがある。
  • TCPの上のHTTPS:DNS + TCP + TLS 1.3 + リクエスト = 最初の1バイトまで4往復。
  • QUICの上のHTTP/3はハンドシェイクをまとめる:3往復。
  • ステータスコード:2xxは成功、3xxはリダイレクト、4xxはクライアントエラー、5xxはサーバーエラー。
このコースの出典 (28)
  • (checked 2026-10-17; reordered 2026-10-19: standards first, then official documentation, then operators and papers, history sources last)
  • IETF RFCs (rfc-editor.org): RFC 768 UDP (1980, 8-byte header)
  • RFC 791 IPv4 (1981, 32-bit addresses, "does not provide a reliable communication facility", TTL field "measured in units of seconds" but every module must decrease it by at least one, so it is only an upper bound)
  • RFC 792 ICMP (Time Exceeded)
  • RFC 801 NCP/TCP transition plan (1 January 1983)
  • RFC 894 Ethernet (1500-byte payload)
  • RFC 1034 and RFC 1035 DNS (1987, HOSTS.TXT kept by SRI-NIC, labels up to 63 octets and names up to 255, TTL in seconds)
  • RFC 1122 (127.0.0.0/8 loopback)
  • RFC 1918 private addresses (10/8, 172.16/12, 192.168/16)
  • RFC 2131 DHCP, RFC 3022 NAT, RFC 3596 AAAA records, RFC 3849 and RFC 5737 documentation addresses, RFC 4271 BGP-4, RFC 4291 IPv6 text form, RFC 6298 TCP retransmission timer (initial RTO 1 second)
  • RFC 6335 port ranges (0-1023, 1024-49151, 49152-65535)
  • RFC 7766 DNS over TCP, RFC 8200 IPv6 (128-bit addresses, Hop Limit)
  • RFC 8446 TLS 1.3 (one round-trip handshake)
  • RFC 9000 QUIC and RFC 9114 HTTP/3, RFC 9110 HTTP semantics (status code classes)
  • RFC 9293 TCP (three-way handshake, sequence numbers)
  • IANA: ip-parameters registry (recommended default TTL 64)
  • IPv4 free pool depleted 3 February 2011 (NRO and ARIN announcements)
  • Official documentation: MDN Web Docs "How does the Internet work?" (45 cables for 10 computers, switches, routers, MAC and IP addresses, internet and web)
  • "What is a URL?", "HTTP response status codes" (developer.mozilla.org)
  • Cloudflare Learning Center: "What is DNS?" (four kinds of DNS server, 8 steps of an uncached lookup, browser and OS caches, TTL)
  • "What is HTTP/3?" (cloudflare.com/learning)
  • Google Chrome Help, "Browse in Incognito mode" (support.google.com/chrome/answer/95464, checked 2026-10-19: Incognito limits what is saved to the device; websites and organisations that manage your network, like your school, employer or internet service provider, may be able to observe your activity)
  • Operators and papers: root-servers.org (13 root name servers run by 12 organisations, 2047 instances on 2026-10-17)
  • Jacobson and Karels 1988, Congestion Avoidance and Control (loss mostly congestion)
  • History blocks only: UCLA Samueli School of Engineering, Internet50 (first ARPANET message "LO", UCLA to SRI, 29 October 1969, 22:30)
  • historyofinformation.com and Wikipedia ARPANET (Kline)
  • Spiceworks/SRI history (HOSTS.TXT kept by SRI-NIC)
  • Numbers (2^32, 2^96, 45 and 6 cables, packet counts, round-trip times)

確認日: 2026-10-17