HTTPの基本動作

HTTPの基本的な動作

  • クライアント/サーバーで通信を行う

  • リクエストとレスポンスの交換

  • ステートレス・プロトコル(状態を保持しない)。ただし、Cookiesによって状態を管理することができる。

  • Request-URIでリソースを識別する。

  • URIを指定する方法1: URIをすべてRequest-URIに含める。

    GET http://www.google.co.jp/ HTTP/1.1

    この方法はプロキシサーバーを経由させる際に用いる。


  • URIを指定する方法2: Hostヘッダフィールドに、ネットワークロケーションを含める。

    GET /index.html HTTP/1.1
    Host: www.google.co.jp

    この方法は、ブラウザから直接、WWWサーバーに接続する際に用いられる。


  • 特定のリソースではなく、サーバー自身に対してリクエストを送る場合には、Request-URIに「*」を指定する

    OPTIONS * HTTP/1.1
    


  • メソッドを使って指示を出す。

    MethoddESCRIPTIONHTTP Version
    GETリソースの取得1.0, 1.1
    POSTエンティティボディの転送1.0, 1.1
    PUTファイル転送1.0, 1.1
    HEADメッセージヘッダの取得1.0, 1.1
    DELETEファイル削除1.0, 1.1
    OPTIONSサポートしているメソッドの問い合わせ1.1
    TRACE経路の調査1.1
    CONNECTプロキシへのトンネリング要求1.1
    LINKリソース間にリンク関係を確立する1.0
    UNLINKリンク関係の削除1.0td>

    LINKとUNLINKは、HTTP/1.1では廃案となりサポートされていない。


  • 持続的接続。初期のHTTPでは、1回のリクエスト/レスポンスの度にTCPの3 way hand shakeが発生する。これでは、画像などのリソースを多く含んだページにアクセスする際には、多数のTCPの接続・切断が発生して、無駄にトラフィックが発生してしまう。これを回避するために、HTTP/1.1と一部のHTTP/1.0に持続的接続がサポートされた。これにより、3 way hand shakeのオーバーヘッドが減り、サーバーの負荷が低下し、ブラウジングが速くなる。HTTP/1.1では、持続的接続は標準の動作になっている。

  • パイプライン。レスポンスを待たずに、次々とリクエストを発行する仕組み。

  • Cookiesを使った状態管理。ステートレスなプロトコルは、状態を保持しないので、サーバーのCPU、メモリなどのリソースの消費を抑えることができる。Cookiesは、ステートレスプロトコルの特徴を残したまま、状態を保持するために取り入れられた。



  • Cookiesの仕組み
  • 1回目のリクエスト
    1. [Client]-----Request----->[Server]
    2. [Client]<-----Response + Cookies-----[Server]
    3. ClientはCookiesを保存
    2回目以降のリクエスト
    1. [Client]-----Request + Cookies----->[Server]
    2. [Client]<-----Response + New Cookies-----[Server]
    3. ClientはCookiesを保存