HTTP 0.9
RFC (rfc:1945) は1996年 (HTTP 1.0と同じRFCで説明されてる)
最初の HTTP。GET メソッドしかなかった。レスポンスヘッダもない (ボディーだけ)。
HTTP 1.0
RFC (rfc:1945) は1996年
- メソッドに GET POST HEAD が追加された
- ヘッダが追加された
HTTP 1.1
RFC (rfc:2068 → rfc2616) は1997年
HTTP 1.0 に Keep Alive とかを追加したやつ。
- バーチャルホストに対応 (Host ヘッダが必須に)
- Keep Alive が可能
- 1つのTCPセッションで複数のファイルのやりとりができる
- リクエストパイプラインが可能
- リクエストを複数個レスポンスを待たずに送ることができる
- サーバ側で対応が必要なのであまり有効活用されてない
HTTPS
RFC (rfc:2817, rfc:2818) は2000年
HTTP 1.0 または 1.1 を TLS (暗号化層) にのっけたもの (暗号化通信)
(SSL は TLS の元になったプロトコルの名前)
WebSocket
RFC (rfc:6455) は2011年。HTTP を拡張したもの、と言っていいか微妙だけど、HTTP でセッションを初期化して 101 Switching Protocols で専用プロトコルに切り替わる関連技術的なもの。
- ブラウザでソケットのようにサーバと自由に送受信ができるようにするのが目的
- サーバプッシュが可能
- 普通 JS と一緒に使う
SPDY
Google が作ったプロトコル。現在は SPDY Protocol - Draft 3.1 が最新。
- レンテンシを低くするのが目的
- HTTPS のように TLS (暗号化層) にのっかってるので、常に暗号化通信
- HTTP は SPDY プロトコル上にのっかる感じに
- サーバープッシュが可能
- サーバーヒント
- 予め必要そうなファイルをサーバから送りつけることができる
HTTP 2.0
SPDY を元に提唱されてる新しい HTTP のバージョン。SPDY を HTTP 2.0 として標準化しよう、って感じかな。現状では SPDY と一緒。
QUIC
Google が作ってるあたらしいプロトコル。上記までのような HTTP の互換レイヤーの話ではなく、その下のレイヤーのプロトコル。
- レンテンシを低くするのが目的
- TCP の代替
技術の発展とともに TCP がネックになることが増えてきたので、UDP を使って TCP+TLS レイヤーを実装しなおすという感じ。
わからないところ
未来における WebSocket の立ち位置がよくわからない。HTTP 2.0 になったとして (SPDY 実装はすすんでいるし、たぶんなるだろう)、WebSocket はどうなるだろう。HTTP 2.0 上で WebSocket を使うのか、あるいは HTTP 2.0 のセッションを JS からコントロールできるような API が整備されるのか。