HTTP/1.1
1997 年に RFC 2068 で発表された HTTP の標準バージョン
その後、1999 年に RFC 2616、2014 年に RFC 7230 ~ RFC 7235、2022 年に RFC 9110 と改訂された
RFC 2068 で追加された機能
持続的接続(Keep-Alive)の導入
https://ja.wikipedia.org/wiki/HTTPの持続的接続
TCP 接続を再利用し、複数のリクエストとレスポンスを処理する技術
これにより、1 つのページに存在する画像や JavaScript、CSS などのリソースを取得するために、複数 TCP 接続を確立する必要がなくなった
補足
HTTP/1.0 では 1 つの TCP 接続で 1 つのリクエストと 1 つのレスポンスのみを処理していた
TCP では、データを送る前に 3 回のやり取り(TCP ハンドシェイク)を行うことで接続を確立するため、多くの TCP 接続を確立すると パフォーマンス 低下に繋がる
https://scrapbox.io/files/67359b371ab8738a98a493bf.png
パイプライン化 の導入
https://ja.wikipedia.org/wiki/HTTPパイプライン
単一の TCP 接続上で、レスポンスを持たずに複数のリクエストを送信できるようにする技術
warning.icon 注意点
パイプラインを利用するときは、サーバはリクエストを受信した順序と同じ順序で応答を返す必要がある
もし 1 つのレスポンスが遅延や紛失した場合、これ以降のレスポンスを利用することが不可能になる
HOL ブロッキング
この問題は TCP 自体でも起こり得る
HTTP/3 では、QUIC によりこの問題を解決している
一部の サーバ や プロキシ はサポートしていないこともあり、現在ではあまり利用されない
HTTP/2 の マルチプレキシング が代替
https://scrapbox.io/files/67359ba28b26ab991448ab18.png
#HTTP