HTTP/0.9
1991年に登場した、HTTPの一番最初のバージョンです。
GETリクエストしか存在せず、HTMLがそのままレスポンスとして返されます。
勿論、HTTPヘッダーやHTTPステータスコードはありません。
なお、リクエストも単純で、
GET {URI}\n\r
の一行でOKです。
応答は、
{本文}
です。
現在、HTTP/0.9に対応しているサーバーはほとんど有りません。
HTTP/1.0
RFC 1945 – Hypertext Transfer Protocol — HTTP/1.0 (ietf.org)
GET以外にも、POSTなどのメゾットが増えて、HTTP/0.9と区別する為にリクエストの1行目が変更されました。
{メゾット} {URI} HTTP/1.0\n\r
{ヘッダー}\n\r
\n\r
{本文}
という形式です。現在の形とかなり似ています。
HTTP/1.1
今までは、一つのIPアドレスで一つのサーバーしか経営出来ませんでした。
何故なら、「/index.html」をリクエストされても、「test1.example.com/index.html」なのか「test2.example.com/index.html」なのか分からないからです。
そこで、「Host」というヘッダーが追加されました。
{メゾット} {URI} HTTP/1.1\n\r
Host: {ドメイン(test1.example.comのような形式)}\n\r
{ヘッダー}\n\r
\n\r
{本文}
という形式です。
現在のほとんどのサイトがこのプロトコルです。
xfreeでレンタルサーバーを借りていた頃は、
「www.activetk.cf」のプロトコルがHTTP/1.1でした。
HTTP/2.0
HTTP/1.1の高速化を図ったプロトコルです。
HTTP/1.1では、本文のみ圧縮可能でしたが、HTTP/2.0ではヘッダーも圧縮します。
HTTP/2.0では、「ストリーム」という概念が生まれた為、1つのTCPコネクションで同時に複数のファイルを送受信できるようになりました。
つまり、いままでは大容量の画像をダウンロードしている間、他のjsファイルなどをダウンロード出来ませんでしたが、終わるまで待たずにダウンロードをする事が出来るようになりました。
また、「サーバープッシュ」という機能も実装されました。
HTMLファイルをリクエストされた場合、その次にjsファイルなどをリクエストされる可能性が高いと考えられます。
その為、HTMLだけでは無く、jsファイルなどを同時に送信するという機能です。
このサイト「blog.activetk.cf」はHTTP/2.0で運営されています。
HTTP/3.0
HTTP-over-QUICとして開発していたプロトコルがHTTP/3.0に改名されました。
HTTP/2.0まではTCPを使用していましたが、HTTP/3.0ではUDPを利用します。
また、HTTP/3.0ではSSL/TLSでの暗号化が必須なので、httpのみのサイトでは使用する事が出来ません。
参考
Hypertext Transfer Protocol – Wikipedia
Webサイトの表示速度をさらに高速化!「HTTP/3」とは? | さくらのSSL (sakura.ad.jp)
「HTTP/2」とは?あなたのサイトを高速化する次世代プロトコルに迫る (sakura.ad.jp)
【HTTP/3】C#でHTTP/3通信してみる その弐 ~Windowsでquicheのサンプルを動かしてみる~ – Qiita