HTTP(HyperText Transfer Protocol)とは、ハイパーテキストを送受信するため、WWWサーバーで使われる通信規約である。
WebブラウザとWebサーバ間で、HTMLファイルなどの文書や動画などのファイルを転送するために用いられている。
HTTPはその名の通り、HTMLやXMLなどのハイパーテキストを送受信とすることを目的としているが、画像や音声、動画などのバイナリデータも送受信することが出来る。
HTTPはリクエスト-レスポンス型のプロトコルである。クライアントがサーバーにリクエストを送信すると、サーバーがクライアントにレスポンスを返す。詳しくはHTTPステータスコードの一覧を参照のこと。
HTTPはTCP/IPプロトコル群の一つである。その歴史は古く、以下の通り、IETFにて規格化されている。
| 時期 | HTTP/0.9 | HTTP/1.0 | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|---|---|
| 1991年8月 | 初期定義
|
策定前 | 策定前 | 策定前 | |
| 1996年5月 | RFC1945
|
||||
| 1997年1月 | RFC2068
|
||||
| 1999年7月 | RFC2616
|
||||
| 2014年6月 | RFC7230![]() RFC7231 ![]() RFC7232 ![]() RFC7233 ![]() RFC7234 ![]() RFC7235
|
RFC7540
|
|||
| 2022年6月 | RFC9110![]() RFC9111 ![]() RFC9112
|
RFC9110![]() RFC9111 ![]() RFC9113
|
RFC9110![]() RFC9111 ![]() RFC9114
|
ただし、HTTP/0.9は規格ではない点に注意。早い話がHTTP/1.0より昔のHTTPという意味でしかないためである。
HTTPのデフォルトのポート番号は80番で、HTTP/1.0・HTTP/1.1・HTTP/2はTCPを用いている。HTTP/3はUDPで、その上にQUICという仕組みを使ってデータのやりとりを用いている。
HTTPにTLS(SSLの後継)によるデータの暗号化機能を付与した物がHTTPS(Hypertext Transfer Protocol Secure)である。
URLは以下のような構造になっている(必要な部分のみ抜粋)。
HTTPと対応する「http」「https」は特別スキームであるため、HTTPのURLは「https://」から始まるのである。
具体的には、以下のようなやりとりがなされることになる。今回は、localhost(自分のコンピュータ)に立っているHTTPサーバに対して、/hogehoge.txtを要求した場合の流れを説明する。
GET /hogehoge.txt HTTP/1.1
Host: localhost
Connection: close
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 8
Connection: close
Fugafuga
なお、リクエストは空行で終わる点に注意せよ。で、この意味は以下の通りである。
基本的にHTTPはステートレスであり、そのままでは会員のログインなどの管理ができない。これらを実現するためにCookieという技術を用いる。あと、大昔はこんな感じで1コネクション1リクエスト1レスポンスのやりとりをやっていたが、今はKeep-Aliveなどにより、1コネクションで複数リクエスト複数レスポンス捌けるようになっている。
急上昇ワード改
最終更新:2025/12/27(土) 16:00
最終更新:2025/12/27(土) 16:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。