Q1手順の http://localhost:3000 にある localhost は、どのコンピュータを指していますか。
URL を入れると何が起きるか — DNS・HTTP・HTTPS
この記事は、プログラミングやバイブコーディングをする上で最低限身につけたほうがよい IT の実践的な知識を 1 から身につける「IT 基礎知識講座の一部」です。
URL は 4 つの部分に切って読めます。名前を番号に変える DNS、中身をもらう HTTP、途中で読まれないようにする HTTPS までを図解でたどります。
この記事は、URL を入れてから画面が出るまでに起きることを扱います。
出てくるのは、名前を番号に変える DNS、中身をやり取りする HTTP、その通信を読まれないようにする HTTPS の 3 つです。
3 つがそろって、はじめてどこへ何を送るかが決まります。
URL は、どのコンピュータのどのページかを指す文字列
手順で打ち込むこの文字列がURL(Uniform Resource Locator。開きたいページがどのコンピュータのどこにあるかを 1 行で指す文字列)です。
- 「://」の手前までがこの部分
- ここが https なら、送る中身が暗号化される
- インターネット上のコンピュータに付けた、人が読める名前
- 公開されたサーバーには example.com のような名前が付く
- 手元で使う localhost は、それを打ち込んだパソコン自身を指す決まった名前
- どのコンピュータに要求を届けるかが、ここで決まる
- 1 台のコンピュータの中で、どのプログラムに要求を届けるかを指す番号
- 複数のプログラムが同時に要求を待てるので、この番号で相手を決める
- http は 80 番、https は 443 番と決まっているので、その番号のときは書かない
- 「/」から始まる、同じサーバーの中のページの位置
- 省略すると、そのサーバーの入口のページになる
この 4 つを切り分けているのは、ブラウザ自身です。
URL は 4 つに切って読む
URL は、4 つの部分をつないだ 1 行です。
先頭が送り方の決まり、中がどのコンピュータか、番号がその中のどのプログラムか、後ろがどのページかで、手元の URL も公開された URL も、入っている文字が違うだけの同じ 4 つでできています。
URL を入れてから画面が出るまで — DNS と HTTP
前の記事で見た IP アドレスがその番号です。
ドメインから IP アドレスを調べる決まりがDNS(Domain Name System)、ブラウザとサーバーがリクエストとレスポンスをやり取りする決まりがHTTP(HyperText Transfer Protocol)です。
DNS の対応を持ち、問い合わせに答えるのが DNS サーバーです。
ブラウザが送る要求がリクエスト、返ってくる返答がレスポンスで、URL を入れてから画面が出るまでに、ブラウザは 2 つの相手に順番につなぎます。
先に名前を番号に直し、そのあとで中身を取りに行く、という順番です。
先につなぐ DNS サーバーが返すのは番号だけで、ページの中身は返しません。
中身を持っているのはその番号あてにつないだ先のサーバーで、URL の後ろの /reserve を見てから返すものを選びます。
同じサーバーでも、/reserve と /login では選ばれる中身が違います。
返ってきたレスポンスには 3 桁の番号とページの中身が入っていて、画面に出るのは中身のファイルだけです。
名前を番号に変えてから、中身をもらう
ブラウザがしているのは、読んで、聞いて、もらって、描くの 4 つです。
打ち込んだ URL を 4 つに切り分け、DNS サーバーに番号を聞き、その番号あてにページを求めます。
サーバーは URL の後ろを見て返すものを選び、うまくいったかどうかを表す番号と一緒に返します。
HTTPS は、通信の途中で内容を読まれないための決まり
http で始まる通信は打ち込んだ文字がそのままの形で流れるので、通り道の機器で中身を読めます。
これを防ぐのがHTTPS(HyperText Transfer Protocol Secure)で、送る中身を暗号化(encryption。決められた相手以外には元に戻せない形に変換すること)してやり取りします。
サーバーが読み取る文字はどちらも同じで、違うのは通り道の機器に何が見えるかだけです。
https でも、どのサーバーあてかは通り道に分かります。
分からないのは、どのページを開いていて、何を打ち込んだかです。
HTTPS には、相手がそのドメインの持ち主かを確かめる仕組みも含まれます。
証明を出すのはサーバー自身ではなく、認証局(certificate authority。ドメインの持ち主を確かめて証明を発行する第三者)です。
証明の中には、相手が本物かを確かめるのに使う公開鍵(public key。誰に渡してもよい鍵)が入っています。
確かめるほうが先で、暗号化はそのあとです。
相手が持ち主だと分かってから鍵を作るので、途中の機器が間に入っても中身は読めません。
https は中身を読ませない
http と https の違いは、通り道で中身を読めるかどうかだけです。
http はそのままの文字が流れるので通り道の機器が中身を読めますが、https は送る前に文字を変換するので、通り道に分かるのはあて先の名前までです。
理解度チェック
まずは1問ずつ答えてみましょう。
Q2example.com のようなドメインから、通信に使う IP アドレスを調べる仕組みはどれですか。
Q3https で始まる URL と http で始まる URL の違いは何ですか。