HTTPの基本 - リクエストとレスポンスの構造

入門 | 10分 で読める | 2026.05.02

公式ドキュメント

この記事の要点

HTTPはクライアントとサーバー間でデータをやり取りするアプリケーション層プロトコル
• リクエスト/レスポンスはリクエストライン・ヘッダー・ボディの3要素で構成
• HTTPはステートレスな設計のため、前回の通信内容を保持しない

HTTPとは

HTTP(Hypertext Transfer Protocol)は、WebブラウザとWebサーバー間でHTMLや画像、JSONなどのデータを送受信するためのプロトコルです。TCP/IPモデルのアプリケーション層に位置し、通常はポート80(HTTP)または443(HTTPS)を使用します。

プロトコルとは: コンピュータ間の通信ルールのことです。HTTPはWebの標準プロトコルとして、1991年に初めて文書化されました。

HTTPの位置付け

HTTPは以下のレイヤー構造の上位に位置します:

レイヤープロトコル役割
アプリケーション層HTTP / HTTPSWebコンテンツの送受信
トランスポート層TCP信頼性のあるデータ転送
インターネット層IPパケットの宛先指定
リンク層Ethernet / Wi-Fi物理的なデータ転送

ポイント: HTTPはTCPの上で動作するため、パケットの順序保証と再送制御が自動的に行われます。

HTTPメッセージの構造

HTTPの通信は、クライアントからのリクエストとサーバーからのレスポンスの2種類のメッセージで構成されます。どちらも以下の3要素を持ちます:

リクエストの構造

GET /api/users/123 HTTP/1.1
Host: api.example.com
User-Agent: Mozilla/5.0
Accept: application/json
Authorization: Bearer eyJhbGc...

要素説明
リクエストラインメソッド・URI・HTTPバージョンGET /api/users/123 HTTP/1.1
ヘッダーメタデータ(ホスト名、認証情報など)Host: api.example.com
ボディ送信データ(POSTやPUTで使用){"name": "John"}

レスポンスの構造

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 45
Cache-Control: max-age=3600

{"id": 123, "name": "John", "role": "admin"}
要素説明
ステータスラインHTTPバージョン・ステータスコード・説明HTTP/1.1 200 OK
ヘッダーメタデータ(Content-Type、キャッシュ設定など)Content-Type: application/json
ボディ実際のデータ(HTML、JSON、画像など){"id": 123, ...}

ステートレス性

HTTPはステートレス(状態を持たない)プロトコルです。各リクエストは独立しており、サーバーは前回のリクエスト内容を保持しません。

ステートレスの特徴

メリット:

  • サーバーのメモリ負荷が少ない
  • スケーラビリティが高い(どのサーバーでも処理可能)
  • シンプルな設計

デメリット:

  • ログイン状態などを保持できない
  • 毎回、認証情報の送信が必要

状態管理の仕組み

ステートレス性を補うため、以下の技術が使われます:

手法説明
Cookieブラウザに情報を保存し、毎回送信
Sessionサーバー側でセッションIDをキーに状態を保存
JWT(トークン)署名付きトークンをクライアントが保持
# Cookieを使った状態管理の例
GET /dashboard HTTP/1.1
Cookie: session_id=abc123xyz

実践メモ: 現代のWebアプリでは、ステートレスなJWTトークンを使った認証が主流になっています。

HTTP/1.1の特徴

現在広く使われているHTTP/1.1(1997年リリース)の主要機能:

持続的接続(Keep-Alive)

Connection: keep-alive

1つのTCP接続で複数のリクエスト/レスポンスを処理できます。接続の確立コストを削減し、パフォーマンスが向上します。

パイプライン化

複数のリクエストをレスポンスを待たずに送信できます(ただし、実装が複雑で広く使われていません)。

チャンク転送エンコーディング

Transfer-Encoding: chunked

サイズが事前にわからないデータを分割して送信できます。

ホストヘッダー必須

Host: www.example.com

1つのIPアドレスで複数のドメインをホスティング(仮想ホスト)できるようになりました。

注意: HTTP/1.1にはヘッダーの重複Head-of-Line Blockingといった制約があります。これらはHTTP/2やHTTP/3で改善されています。

HTTPとHTTPSの違い

項目HTTPHTTPS
ポート80443
暗号化なしTLS/SSL
セキュリティ盗聴・改ざんリスク通信内容を保護
証明書不要SSL/TLS証明書が必要
SEO影響なしGoogleが評価

ポイント: 現代のWebサイトでは、HTTPS化が標準です。ブラウザもHTTPサイトに「安全ではありません」警告を表示します。

リクエスト/レスポンスの実例

GETリクエスト(データ取得)

GET /api/products?category=books&limit=10 HTTP/1.1
Host: api.example.com
Accept: application/json
User-Agent: curl/7.68.0

POSTリクエスト(データ送信)

POST /api/users HTTP/1.1
Host: api.example.com
Content-Type: application/json
Content-Length: 45

{"name": "Alice", "email": "alice@example.com"}

レスポンス

HTTP/1.1 201 Created
Content-Type: application/json
Location: /api/users/456
Content-Length: 78

{"id": 456, "name": "Alice", "email": "alice@example.com", "created_at": "2026-05-02T10:00:00Z"}

よくある質問

Q1: HTTPとHTMLの違いは?

  • HTTP: 通信プロトコル(通信ルール)
  • HTML: マークアップ言語(文書の記述形式)

Q2: HTTPはなぜTCPを使うのか? TCP は信頼性のある通信を保証するためです。パケットの順序や到達を保証する必要があるため、UDPではなくTCPが使われます(ただし、HTTP/3ではQUICプロトコル上で動作)。

Q3: HTTP/1.1とHTTP/2の違いは? HTTP/2はバイナリフレーム化、多重化、ヘッダー圧縮などで大幅に性能が向上しています(詳細は別記事で解説)。

まとめ

HTTPはシンプルでステートレスな設計により、Webの爆発的な成長を支えてきました。リクエスト/レスポンスの基本構造を理解することは、Web開発の第一歩です。

関連記事

参考リソース

この技術を体系的に学びたいですか?

未来学では東証プライム上場企業のITエンジニアが24時間サポート。月額24,800円から、退会金0円のオンラインIT塾です。

メールで無料相談する
← 一覧に戻る