この記事で扱うこと

ブラウザ(Chrome・Safari など、Web ページを見るアプリ)に URL を打つと、すぐにページが出ます。その裏では、いくつかの段階を順に通っています。

この記事では、URL を打ってから画面が出るまでの流れを6段階に分けて説明します。そのうえで、ターミナルで nslookup と curl というコマンドを使い、流れの一部を自分のパソコンで確かめます。

URL を打ってから画面が出るまでの6段階

Web ページの中身は、サーバー(頼まれたものを送り返す係のパソコン)に置いてあります。ブラウザは、そのサーバーを探してページを頼み、届いたものを画面に描きます。

左にブラウザ、右上に DNS サーバー、右下に Web サーバー。番号の順に、URL を打つ、住所を聞く、住所が返る、ページを頼む、HTML が返る、画面を描く、と矢印でつながっている

段階 起きること
1 ブラウザに URL を打つ
2 DNS サーバーに「example.com はどこ?」と聞く
3 DNS サーバーが IP アドレス(インターネット上の住所。数字でできている)を返す
4 その住所のサーバーに「/index.html をください」と頼む
5 サーバーが HTML(Web ページの中身と骨組みを書く書き方)を返す
6 ブラウザが HTML を読んで画面を描く

この流れに出てくる言葉のうち、DNS と HTTP は次の意味です。

言葉 意味
DNS(ディー・エヌ・エス) 名前から住所を調べる仕組み。電話帳に似ている
HTTP 段階 4 と 5 の、頼み方と返し方の決まり

URL の3つの部分

URL は、どのサーバーのどのファイルがほしいかを1行で書いたものです。

URL の https://example.com/news/index.html を3つに分けた図。https は通信の決まり、example.com はサーバーの名前、/news/index.html はサーバーの中のファイルの場所

部分 名前 意味
https 通信の決まり HTTP を暗号にして、盗み見されないようにしたもの
example.com ドメイン名 サーバーの名前。DNS に聞くのはこの部分
/news/index.html パス サーバーの中のファイルの場所

最後のパスの部分は、パソコンの中のファイルの場所を表すパスと同じ形をしています。

サーバーが返す番号(ステータスコード)

サーバーは、頼まれたことがうまくいったかどうかを3桁の番号で返します。この番号をステータスコードと呼びます。

番号 意味 よく見る場面
200 うまくいった 普通にページが出たとき(画面には出ない)
404 そのファイルは無い URL の打ち間違い、ページの削除
500 サーバーの中で失敗した サーバー側のプログラムの問題

ターミナルで確かめる前に

ここからは、VS Code などでターミナルを開いて、図の段階を確かめます。

使うコマンドは情報を見るだけで、パソコンの中は変わりません。example.com は説明用に用意されたドメイン名なので、何度開いても問題ありません。

nslookup で IP アドレスを調べる(段階 2・3)

nslookup は、DNS に住所を聞くコマンドです。

nslookup example.com

Windows の場合

「名前:」の下の数字が IP アドレスです。「権限のない回答」という表示は気にしなくてかまいません。

Mac の場合

Address: の後ろの数字が IP アドレスです。Non-authoritative answer という表示は気にしなくてかまいません。

出てくる数字は、時期や場所で変わります。2606: で始まる長いものも IP アドレスです。

curl で HTML を受け取る(段階 4・5)

curl(カール)は、ブラウザの代わりにサーバーへ頼み、届いたものを文字のまま出すコマンドです。

上の Web サーバーが、左のブラウザと右のターミナルに同じ HTML を返す。ブラウザは Example Domain という見出しを描き、ターミナルは h1 の印が付いた文字をそのまま表示する

ブラウザとターミナルが受け取る HTML は同じものです。違うのは、ブラウザがそれを読んで画面に描き、curl は文字のまま出すという点です。

Windows の場合

Windows では curl.exe と打ちます。curl だけだと別のコマンドが動きます。

curl.exe https://example.com

Mac の場合

curl https://example.com

<h1>Example Domain</h1> のような文字が出れば、HTML を受け取れています。ブラウザでは、この部分が大きな見出しになります。

curl -I でステータスコードを見る

-I は、返事の最初の部分(ヘッダー)だけを出すオプション(コマンドに付ける追加の指定)です。ステータスコードはヘッダーの1行目に入っています。

Windows の場合

curl.exe -I https://example.com
curl.exe -I https://example.com/abc

Mac の場合

curl -I https://example.com
curl -I https://example.com/abc

1つ目のコマンドでは1行目に 200 が出ます。2つ目は /abc というファイルが無いので 404 が出ます。

まとめ

ブラウザで URL を開くと、DNS サーバーにドメイン名の住所(IP アドレス)を聞き、その住所のサーバーにページを頼み、届いた HTML を読んで画面を描きます。頼み方と返し方の決まりが HTTP で、https はそれを暗号にしたものです。サーバーは結果をステータスコードで返し、200 はうまくいった、404 はファイルが無いという意味です。

ターミナルでは、nslookup で段階 2・3 を、curl で段階 4・5 を確かめられます。ChatGPT のような AI のサービスも、質問をサーバーに送って答えを受け取るという、同じ流れで動いています。

参考にした資料

  • せかチャン「4-8 webの仕組み」は、Web の仕組みを10分ほどで説明している動画です
  • せかチャン「4-9 URLとDNS」は、最初から「DNSの仕組み」までの8分ほどが、URL と DNS の説明にあたります
  • Zenn「「URLを検索して、結果が画面に表示されるまで」って意外と説明できない」は、この記事の6段階をより細かく文章で追っています。最後のおまけ(Wireshark)の節は読まなくてかまいません
  • MDN「ウェブのしくみ」は、「クライアントとサーバー」から「DNS の解説」までが、この記事の内容にあたります
  • 総務省「インターネットの仕組み」は、このページと、続きの「Webサイトの仕組み」のページの2つで、インターネットと Web サイトの全体像を説明しています