thumbnail

Hypertext Transfer Protocol (HTTP)

ハイパーテキスト・トランスファー・プロトコル(Hypertext Transfer Protocol、略称 HTTP)は、World Wide Web(WWW)において、WebサーバとWebクライアント(Webブラウザなど)の間でHTMLなどのコンテンツの送受信に用いられる通信プロトコルである。主として、TCP/IPプロトコル群のTCPを基盤として利用する。

HTTPの仕組み

HTTPは、クライアントがサーバーにリクエスト(要求)を送信し、サーバーがそれに対してレスポンンス(応答)を返すという、単純なクライアントサーバモデルに基づいている。この一連のやり取りをHTTPトランザクションと呼ぶ。

HTTPメッセージ

通信はHTTPメッセージと呼ばれるテキストベースのデータで行われる。メッセージには「リクエストメッセージ」と「レスポンスメッセージ」の2種類がある。

リクエストメッセージの構造

クライアントからサーバーへ送信されるメッセージ。以下の要素で構成される。

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,*/*
  • リクエストライン: メソッド(GET)、リソースのパス(/index.html)、プロトコルのバージョン(HTTP/1.1)を含む。
  • ヘッダ: サーバーに付加的な情報を伝える(例: Host, User-Agent)。
  • ボディ(任意): POSTメソッドなどでデータを送信する際に使用される。

レスポンスメッセージの構造

サーバーからクライアントへ返信されるメッセージ。以下の要素で構成される。

HTTP/1.1 200 OK
Date: Fri, 17 Oct 2025 00:00:00 GMT
Content-Type: text/html
Content-Length: 1234

<!DOCTYPE html>
<html>
...
</html>
  • ステータスライン: プロトコルのバージョン(HTTP/1.1)、ステータスコード(200)、テキストでの説明(OK)を含む。
  • ヘッダ: クライアントに付加的な情報を伝える(例: Content-Type, Content-Length)。
  • ボディ: 実際に転送されるHTMLなどのコンテンツ本体。

主なHTTPステータスコード

サーバーからのレスポンンスに含まれる3桁の数字で、リクエストの結果を示す。

  • 200 OK: リクエストが成功したことを示す。
  • 301 Moved Permanently: リソースが恒久的に移動したことを示す。
  • 404 Not Found: リソースが見つからなかったことを示す。
  • 500 Internal Server Error: サーバー内部でエラーが発生したことを示す。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)は、HTTPの通信をSSL/TLSプロトコルによって暗号化するものである。これにより、通信経路の盗聴や改ざん、なりすましを防ぎ、より安全な通信を実現する。