「HTTP/1.1」とは
- 「HTTP/1.0」が発表された翌年の1997年にRFC2068として策定され、その後、RFC2616で改定された。
- 以降の拡張・改定
- Upgrading to TLS Within HTTP/1.1 (RFC2817)
- Defining Well-Known Uniform Resource Identifiers (URIs) (RFC5785)
- Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP) (RFC6266)
- Unicast-Based Rapid Acquisition of Multicast RTP Sessions (RFC6285)
- Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing (RFC7230)
- Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content (RFC7231)
- Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests (RFC7232)
- Hypertext Transfer Protocol (HTTP/1.1): Range Requests (RFC7233)
- Hypertext Transfer Protocol (HTTP/1.1): Caching (RFC7234)
- Hypertext Transfer Protocol (HTTP/1.1): Authentication (RFC7235)
- 以降の拡張・改定
- 高速化
- Keep-Alive
- 「HTTP/1.0」で仕様としては定義されていなかったが実装が進んでいた
Keep-Alive
が「HTTP/1.1」では標準機能として定義された。これにより「HTTP/1.0」のリクエスト時にConnection: Keep-Alive
のように指定していたヘッダーは不要となり、Keep-Alive
が有効化された通信がデフォルト状態となった。
- 「HTTP/1.0」で仕様としては定義されていなかったが実装が進んでいた
- パイプライン
- 最初のリクエストが完了する前に次のリクエストを送信することで高速化を図ったものだが、HOLブロッキング(Head-of-Line-Blocking)と呼ばれる問題(リクエストが来た順にレスポンスを返す必要があるため、遅いレスポンスがあると次のレスポンスは待ち状態となる)があった。
- 広く使われることはなかったが、改善を経て「HTTP/2」の実装へと繋がっていく。
- Keep-Alive
- 暗号化
- 通信経路を暗号化するTLSが規格化された。
- メソッドの拡張
- 「HTTP/1.0」ではオプション扱いだったPUT、DELETEメソッドが必須メソッドとして追加された。
- OPTIONS、TRACE、CONNECTメソッドの追加。
- バーチャルホストのサポート
- チャンク方式のサポート
- データURIスキーム
- 「The "data" URL scheme」としてRFC2397で定義されている。
- コンテンツ内に画像を埋め込むことでリクエスト回数を減らしダウンロード時間を短縮することができるが、base64エンコードされた画像を埋め込むことでファイルサイズが増加し、コンテンツ自体のダウンロード時間が長くなる可能性がある。