情報ラボ > Webページが表示されるまで
URLを入力してから、ページが表示されるまでの一瞬に、いくつものコンピュータがやり取りをしています。1つずつ追ってみましょう。
やり取りの一覧の行を押すと、その場面に移動します。IPアドレス 203.0.113.10 などは、説明用に予約されている例のアドレスです。
同じ名前をもう一度問い合わせると、キャッシュ(一時的に覚えた答え)が使われるので、問い合わせの回数が減ります。
ブラウザにURLを入力してからページが表示されるまでには、大きく分けて4つの段階があります。
これらはふつう1秒もかからずに終わるので、利用者が気づくことはありません。「表示までの流れ」では、この一瞬のやり取りを1つずつ止めて見られるようにしています。
URL(Uniform Resource Locator)は、インターネット上の情報の場所を表す書き方です。https://www.example.com/news/index.html なら、https がスキーム(やり取りの方法)、www.example.com がホスト名(相手のコンピュータの名前)、/news/index.html がパス(サーバの中の場所)です。
ポート番号は、1台のコンピュータの中で、どのサービスと通信するかを表す番号です。省略したときは、http なら 80 番、https なら 443 番が使われます。? の後ろのクエリはサーバに渡す追加の情報、# の後ろのフラグメントはページの中の位置を表します。フラグメントはサーバには送られず、ブラウザの中だけで使われます。
インターネットで相手にデータを届けるには、IPアドレスが必要です。しかし、数字の並びは人間には覚えにくいので、www.example.com のようなドメイン名が使われます。ドメイン名とIPアドレスを対応させるしくみが DNS(Domain Name System)です。
DNSの情報は、1か所にまとめて置かれているのではありません。ドメイン名は右から順に「ルート(.)→ com → example.com → www」という木のような階層になっていて、それぞれの階層を担当するDNSサーバが、自分の範囲だけを管理しています。これを分散データベースといいます。
名前を調べるとき、パソコンやスマートフォンは、まず決められたフルサービスリゾルバ(キャッシュDNSサーバ)にたずねます。リゾルバは、階層のいちばん上のルートサーバからたずね始め、「com のサーバに聞いて」「example.com のサーバに聞いて」と教えてもらいながら、最後にその名前を管理している権威DNSサーバから答えを得ます。ルートサーバは13系列あり、そのうちの1つ(M ルート)は、日本の WIDE プロジェクトと JPRS が共同で運用しています。
毎回ルートサーバからたずねていては、時間がかかり、ルートサーバにも負担が集中します。そこでリゾルバは、一度調べた答えをキャッシュとして一定時間覚えておきます。覚えておいてよい時間は、答えに付いている TTL(Time To Live)で決まります。「DNSで名前を調べる」で同じ名前を2回たずねると、2回目は問い合わせが0回になることを確かめられます。
| 種類 | 表す内容 |
|---|---|
| A | IPv4アドレス |
| AAAA | IPv6アドレス |
| MX | そのドメインあてのメールを受け取るサーバ |
| CNAME | 別名(ほかの名前を指す) |
| NS | そのドメインを管理するDNSサーバ |
電子メールを送るときも、DNSが使われます。送信側のメールサーバは、あて先のドメインの MX レコードを調べて、どのサーバに届ければよいかを知ります。電子メールのしくみもあわせて確かめてみましょう。
IPアドレスが分かると、ブラウザはWebサーバと TCP の接続を作ります。TCP は、データが届いたかを確認し、届かなければ送り直し、順番を並べ直して、データを確実に届けるためのプロトコルです。接続を始めるときは、SYN → SYN+ACK → ACK の3回のやり取りを行います。これを3ウェイハンドシェイクといいます。
https の場合は、続いて TLS の手順に入ります。ブラウザとサーバが暗号化の方式と鍵を決め、サーバはサーバ証明書を送ります。ブラウザは、信頼できる認証局の電子署名が付いているかを調べて、通信相手が本物かどうかを確かめます。ここから先の通信は暗号化されるので、途中で盗み見られても内容は読めません。暗号化のしくみは暗号のしくみで体験できます。
HTTP(HyperText Transfer Protocol)は、ブラウザとWebサーバがやり取りするための決まりです。ブラウザは「GET /news/ HTTP/1.1」のようなリクエストを送り、サーバは「HTTP/1.1 200 OK」のようなレスポンスを返します。レスポンスの本文には、ページの中身である HTML が入っています。
HTMLの中には、見た目を決める CSS や画像のファイルの場所が書かれています。ブラウザは HTML を読みながら、必要なファイルを次々に要求します。1つのページを表示するために、何十回ものリクエストが送られることもめずらしくありません。
メソッドは、サーバに何をしてほしいかを表します。GET は情報を取得し、POST はフォームの入力内容などを送ります。ステータスコードは結果を表す3けたの数で、最初の数字で分類されます。
| 分類 | 意味 | 例 |
|---|---|---|
| 1xx | 情報(処理の途中) | 100 Continue |
| 2xx | 成功 | 200 OK |
| 3xx | リダイレクト | 301 Moved Permanently |
| 4xx | クライアント側のエラー | 403 Forbidden、404 Not Found |
| 5xx | サーバ側のエラー | 500 Internal Server Error |
このページの www.example.com や 203.0.113.10 は、説明や例示のために予約されている名前とアドレスです。実際の通信は行っていません。
情報Ⅰ 授業の進め方ガイドでは、この教材を次の授業で使います。ねらい・導入の問い・50分の流れ・確認問題をまとめています。