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プロトコルによって暗号化するものである。これにより、通信経路の盗聴や改ざん、なりすましを防ぎ、より安全な通信を実現する。