URL を叩いてからレスポンスが返るまでに、7つの段階が順番に走る。HTTP の注文と返答は最後の3段階だけで、前半4段階はその注文票を相手に届けるための準備。
住所がわかって(DNS)初めて回線をつなげ(TCP)、回線があって初めて暗号化できる(TLS)という積み重ね。暗号化された回線の中を、HTTP のテキストが流れる。
| 段階 | 一言の役割 |
|---|---|
| DNS | 名前(ドメイン)→ 住所(IP アドレス)に引き直す電話帳 |
| TCP | データが欠けず・順番どおり届く回線を張る |
| TLS | その回線を暗号化して盗聴・改ざんを防ぐ |
| HTTP | 回線の中を流れる「注文票と返答」の書式 |
電話で言うと、DNS=店名から番号を調べる、TCP=電話をかけて相手が出る、TLS=周りに聞かれない専用回線にする、HTTP=注文の言葉遣い。
7段階が頭にあると、通信エラーはエラーメッセージがどの段階の言葉かで読み分けられる。curl -v で各段階のログが上から順に見える。
| エラーの出方 | 死んだ段階 | まず疑うこと |
|---|---|---|
Could not resolve host |
DNS | ドメイン名の打ち間違い |
Connection refused / タイムアウト |
TCP | サーバーが起動していない・ポート違い |
certificate 系エラー |
TLS | 証明書切れ・http と https の取り違え |
| 4xx / 5xx が返ってくる | HTTP 以降 | リクエストの中身か、サーバー側の処理 |
ステータスコードが返ってきた時点で、段階1〜4は全部成功している。4xx / 5xx は「通信の失敗」ではなく通信が成功した上での相手からの返答。