[107] 持続的接続を使うと、
複数の要求や応答を1つの接続により伝達できます >>106。
[108] 持続的接続は、HTTP/1.1 の標準機能となっています。
[1] HTTP/0.9 以来の HTTP の仕様では、一つの要求・応答の組ごとに (TCP など下位層の) 接続を確立しては閉じることになっていました。
つまり、一度の connection では一つの資源にしか access できませんでした。
最初のうちはこれでよかったのですが、
画像の埋め込みなどが行われるようになり、複数の資源にほぼ同時に access するようになると、この仕様は極めて不効率です。
[2] そこで導入されることになったのが持続接続です。
持続接続では、 (仕様上は) 任意の時間鯖とクライアントの間の接続を確立したままの状態にしておくことができます。そして、任意の資源に access できるのです。
しかしながら、持続接続の導入は、
従来の実装との互換性の問題のためにかなり難航しました。
[3] 最初に導入された Keep-Alive
方式は、
従来の HTTP/1.0 のメッセージに Connection: Keep-Alive
という修飾子を加えることで持続接続を実現しようとしました。
ところが、この方法では、鎖の途中に古い串と新しい串が混在していると、意図しない接続が持続してしまい、結果としてハングアップ状態になってしまう可能性があることが分かりました。
これを回避するための修正案である
Proxy-Connection
方式も、解決するには至りませんでした。
[4] HTTP/1.1 は、根本的に考え方を改め、接続が持続することを既定としました。
従来のように要求・応答の後に接続を閉じるときには
Connection: close
と指定することにしました。
これでようやく、既存の実装と互換でありながら持続接続を実現できました。
[5] Nonstandard HTTP Headers http://web.archive.org/web/20020610043404/http://www.dais.is.tohoku.ac.jp/~kabe/WWW/nonstdhdr.html#Xonnection: >>1-4 の話がもうちょっと具体的に説明されています。
[6] 接続の制御に関係する頭欄:
メッセージの長さに関係して: