cnt0705
9/4/2017 - 10:10 AM

Webを支える技術

Webを支える技術

Webを支える技術

第6章 HTTPの基本

HTTP

  • HTTPはTCP/IPをベースとしたプロトコル
  • ハイパーテキスト以外にも静止画、音声、動画、JS、PDFなどコンピュータで扱えるデータであればなんでも転送できる
  • ネットワークプロトコルは階層型となっており、HTTPはアプリケーション層で使われる

クライアントとサーバ

  • HTTPではクライアントが出したリクエストをサーバで処理してレスポンスを返す
  • クライアントで行われること
    • リクエストメッセージの構築
    • リクエストメッセージの送信
    • レスポンスが返るまで待機
    • レスポンスメッセージの受信
    • レスポンスメッセージの解析
    • 必要があれば(CSSや画像などのリソース取得)再度リクエスト送信
    • クライアントの目的を達成するための処理(レンダリングなど)
  • サーバで行われること
    • リクエストの待機
    • リクエストの受信
    • リクエストの解析
    • アプリケーションプログラムへ処理を委譲
    • アプリケーションプログラムから結果を取得
    • レスポンスの構築
    • レスポンスの送信

HTTPメッセージ

リクエストメッセージ

  • 1行目:リクエストライン
    • メソッド、リクエストURI、プロトコルバージョンからなる
    • リクエストURIはパス以降の文字列/test?query=hogeか、絶対URIhttp://example.jp/testとなる
  • 2行目以降:ヘッダ
    • メッセージのメタデータ
    • 名前: 値という形式である
    • 例)リクエスト先のポート番号はHostヘッダHost: example.jp:8080で指定する
  • ヘッダ以降:ボディ

レスポンスメッセージ

  • 1行目:ステータスライン
    • プロトコルバージョン、ステータスコード、テキストフレーズからなる
    • ステータスコードはリクエストの結果を数値で表現したもの
  • 2行目以降:ヘッダ
    • メッセージのメタデータ
    • メディアタイプや文字エンコーディング方式などが指定される
  • ヘッダ以降:ボディ
    • HTML

ステートレス性

  • ステートレスとは「サーバがクライアントのアプリケーション状態を保存しない」制約のこと(※ハンバーガー屋の例)
    • ステートフルなやりとりではサーバがクライアントの注文状況を覚えている(注文の差分だけ伝えればよい)ので、簡潔
    • ステートレスなやりとりではクライアントが毎回すべての注文状況を伝える必要があるので、冗長