📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

14行目: 14行目:
<br>
<br>
また、HTTPはオンデマンドでWebページを更新するために、文書の一部をフェッチするのにも使用される。<br>
また、HTTPはオンデマンドでWebページを更新するために、文書の一部をフェッチするのにも使用される。<br>
<br><br>
== HTTPの基本 ==
==== 単純な構造 ====
HTTP/2のような、HTTPメッセージをフレームにカプセル化することにより複雑さが加わったとしても、HTTPは一般的にシンプルで人間が読めるように設計されている。<br>
<br>
HTTPメッセージは人間が読んで理解することができ、開発者にとってはテストが容易になる。<br>
<br>
==== 拡張可能性 ====
HTTP/1.0で導入されたHTTPヘッダは、このプロトコルの拡張を容易にする。<br>
<br>
クライアントとサーバが新しいヘッダのセマンティクスについて合意するだけで、新しい機能を導入することもできる。<br>
<br>
==== HTTPはステートレス、かつ、非セッションレス ====
HTTPはステートレスである。<br>
同じコネクション上で連続して実行される2つのリクエストの間にはリンクがない。<br>
<br>
例えば、eコマースのショッピングバスケットを使用する場合、特定のページと首尾一貫してやりとりしようとするユーザにとって問題となる見込みがある。<br>
しかし、HTTPのコア自体はステートレスであるが、HTTPクッキーはステートフルなセッションの使用を可能にする。<br>
<br>
ヘッダの拡張性を使用して、HTTPクッキーはワークフローに追加されて、各HTTPリクエストで同じコンテキスト、つまり、同じ状態を共有するセッション生成を可能にする。<br>
<br>
==== HTTPとコネクション ====
コネクションはトランスポート層で制御されるため、基本的にHTTPの範囲外である。<br>
HTTPは基礎となるトランスポートプロトコルがコネクションベースであることを要求しているわけではない。<br>
インターネット上で最も一般的な2つのトランスポートプロトコルの内、TCPは信頼性があり、UDPは信頼性がない。<br>
したがって、HTTPは、コネクションベースであるTCP標準に依存している。<br>
<br>
クライアントとサーバがHTTPリクエスト / レスポンスのペアを交換する前に、TCPコネクションを確立する必要がある。<br>
HTTP/1.0のデフォルトの動作は、HTTPリクエスト / レスポンスのペアごとに別々のTCPコネクションをオープンすることである。<br>
これは、複数のリクエストが連続して送信される場合、1つのTCPコネクションを共有するよりも効率が悪い。<br>
<br>
この欠陥を軽減するために、HTTP/1.1ではパイプライン化(実装が難しいことが判明)と持続的接続が導入された。<br>
基礎となるTCP接続は、Connectionヘッダを使用して部分的に制御できる。<br>
HTTP/2はさらに一歩進み、単一のコネクション上でメッセージを多重化することにより、コネクションをより効率的にする。<br>
<br>
現在では、HTTPにより適したトランスポートプロトコルを設計するための実験が進行中である。<br>
例えば、GoogleはUDPをベースに、より信頼性が高く効率的なトランスポートプロトコルを提供するQUICの実験を行っている。<br>
<br><br>
== HTTPで制御できること ==
HTTPのこの拡張可能な性質は、時代とともに、Webの制御と機能性の向上を可能にしてきた。<br>
キャッシュや認証方法は、HTTPの歴史の初期に扱われていた機能である。<br>
対照的に、オリジン制約を緩和する機能は、2010年代に追加された。<br>
<br>
HTTPで制御可能な一般的な機能を、以下に示す。<br>
* キャッシュ
*: ドキュメントをどのようにキャッシュするかは、HTTPで制御できる。
*: サーバはプロキシやクライアントに、何をどれくらいの期間キャッシュするかを指示することができる。
*: <br>
*: クライアントは中間キャッシュプロキシに、保存されたドキュメントを無視するように指示できる。
* オリジン制約の緩和
*: 盗聴やその他のプライバシー侵害を防ぐため、WebブラウザはWebサイト間の厳格な分離を強制している。
*: 同じオリジンからのページのみが、Webページの全ての情報にアクセスできる。
*: このような制約はサーバにとって負担であるが、HTTPヘッダは、サーバ側でこの厳密な分離を緩和することができ、ドキュメントが異なるドメインからの情報のパッチワークになることを可能にする。
* 認証
*: ページによっては、特定のユーザのみがアクセスできるように保護されている場合がある。
*: BASIC認証は、WWW-Authenticateや同様のヘッダを使用する、または、HTTPクッキーを使用して特定のセッションを設定することにより、HTTPによって提供される場合がある。
* プロキシとトンネリング
*: サーバやクライアントは、ほとんどの場合はイントラネット上にあり、他のコンピュータから本来のIPアドレスを隠している。
*: そして、HTTPリクエストは、このネットワークの障壁を越えるためにプロキシを経由する。
*: <br>
*: また、全てのプロキシがHTTPプロキシというわけではない。
*: 例えば、SOCKSプロトコルは、より低いレベルで動作する。
*: FTPのような他のプロトコルは、これらのプロキシで処理することができる。
* セッション
*: HTTPクッキーを使うことにより、リクエストとサーバの状態を結びつけることができる。
*: 基本的なHTTPは、ステートのないプロトコルであるにもかかわらず、セッションを作成する。
*: これは、eコマースのショッピングのみでなく、ユーザによる出力の設定を可能にするあらゆるサイトに役立つ。
<br><br>
<br><br>