HTTP/HTTPSはWebの根幹をなすプロトコルです。ブラウザとサーバーがどのようにデータをやり取りするか、そしてHTTPSでの暗号化(TLS)の仕組みを理解することはWeb開発・サーバー管理の必須知識です。
HTTPとは
HTTP(HyperText Transfer Protocol)はWebブラウザとWebサーバーがデータを送受信するためのプロトコルです。クライアント(ブラウザ)がリクエストを送り、サーバーがレスポンスを返すという「リクエスト・レスポンスモデル」で動作します。
HTTPリクエストの構造
GET /index.html HTTP/1.1
Host: hobbyshift.com
User-Agent: Mozilla/5.0
Accept: text/html
Accept-Language: ja
Connection: keep-alive| 要素 | 説明 | 例 |
|---|---|---|
| メソッド | 操作の種類 | GET, POST, PUT, DELETE |
| パス | リソースの場所 | /index.html, /api/users |
| HTTPバージョン | プロトコルのバージョン | HTTP/1.1, HTTP/2 |
| ヘッダー | メタ情報 | Host, Content-Type, Authorization |
| ボディ | 送信データ(POSTなど) | JSONデータ, フォームデータ |
HTTPレスポンスとステータスコード
| コード | 意味 | 代表例 |
|---|---|---|
| 2xx | 成功 | 200 OK, 201 Created, 204 No Content |
| 3xx | リダイレクト | 301 Moved Permanently, 302 Found |
| 4xx | クライアントエラー | 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found |
| 5xx | サーバーエラー | 500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable |
HTTPSとTLSの仕組み
HTTPS(HTTP over TLS/SSL)はHTTP通信をTLS(Transport Layer Security)で暗号化したものです。URLがhttps://で始まり、ブラウザに鍵アイコンが表示されます。
TLSハンドシェイクの流れ:
- クライアントが対応する暗号化方式の一覧をサーバーに送る
- サーバーが暗号化方式を選択してSSL証明書を送る
- クライアントが証明書を検証(認証局が発行した正規のものか確認)
- 共通鍵を安全に交換(公開鍵暗号方式を使用)
- 以降の通信を共通鍵で暗号化
HTTP/1.1・HTTP/2・HTTP/3の違い
| バージョン | 特徴 |
|---|---|
| HTTP/1.1 | 1リクエストずつ順番に処理。Keep-Aliveで接続を再利用 |
| HTTP/2 | 1つのTCP接続で複数リクエストを並列処理(多重化)。ヘッダー圧縮 |
| HTTP/3 | TCP→QUICプロトコルに変更。より高速・低遅延 |
curlでHTTPを体験する
# レスポンスヘッダーを表示
curl -I https://hobbyshift.com
# レスポンスボディを表示
curl https://hobbyshift.com
# POSTリクエスト
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name": "Taro"}'
# HTTPバージョンを確認
curl -I --http2 https://hobbyshift.com | grep HTTPまとめ
- HTTPはリクエスト・レスポンスモデルで動作するWebの基本プロトコル
- ステータスコードで処理結果を表す(2xx=成功、4xx=クライアントエラー、5xx=サーバーエラー)
- HTTPSはTLSで通信を暗号化したもの。証明書で相手の正当性を確認する
- HTTP/2では1接続で複数リクエストを並列処理できて高速化されている


コメント