状況
ブラウザで https://www.example.com/ を初めて開く。DNS のキャッシュも、既存の接続も無い。通信は HTTP/1.1 か HTTP/2 で行う(HTTP/3 は使わない)。
ブラウザが行う順番に並べてください。
正答
- TLS ハンドシェイクをしてサーバー証明書を検証する
- HTTP リクエスト(GET /)を送る
- DNS でホスト名から IP アドレスを調べる
- サーバーの 443 番と TCP 接続を確立する
正しい順番
- DNS でホスト名から IP アドレスを調べる
- サーバーの 443 番と TCP 接続を確立する
- TLS ハンドシェイクをしてサーバー証明書を検証する
- HTTP リクエスト(GET /)を送る
解説
TCP 接続には相手の IP アドレスが要るので、最初に DNS で名前を解決する。次に 443 番と TCP 接続を確立し、その上で TLS ハンドシェイクをして証明書を検証し、暗号化の鍵を決める。HTTP リクエストは暗号化された経路の上で最後に送る。HTTP リクエストを TLS より先に送ると、パスや Cookie が平文で流れてしまう。証明書の検証で失敗した場合、リクエストは送られないので、サーバーのアクセスログにも残らない。
この問題を含む HTTP・Web 基礎 のテストを制限時間つきで解く
HTTP・Web 基礎クイズへ