HTTP - HTTPリクエスト

HTTPリクエスト

HTTPリクエストは大きく以下の3つに分けられます。

  • リクエスト行
  • メッセージヘッダー
  • メッセージボディ

リクエスト行には、Webサーバにどのような処理を
依頼するのかを伝える情報が含まれます。

例えばデータを送ってほしいという命令であれば、
「GET /index.html HTTP/1.1」といった情報がセットされます。

「/index.html」が送信要求のデータ、
「HTTP/1.1」はWebブラウザが対応しているHTTPのバージョンを意味します。

Webサーバへ要求する操作を表すメソッドと呼び、
GETの場合は「データの送信要求」を意味します。

HTTPリクエストのメソッドの種類には以下のようなものがあります。

  • CONNECT
    トンネル確立を要求
  • DELETE
    データ削除の要求
  • GET
    データの送信要求
  • HEAD
    メッセージヘッダの内容を問い合わせ
  • OPTIONS
    サポートするオプションの問い合わせ
  • POST
    サーバにデータを送信
  • PUT
    ファイルのアップロード
  • TRACE
    経由するサーバに応答要求

メッセージヘッダーは対応している言語や
エンコードの方式などの情報がセットされます。

メッセージボディはWebサーバから情報をもらうのではなく、
WebブラウザがWebサーバにデータを送るときに場合に使用します。

HTTPレスポンス

HTTPレスポンスも大きく以下の3つに分けられます。

  • ステータス行
  • メッセージヘッダー
  • メッセージボディ

ステータス行にはWebサーバの処理結果(ステータスコード)が
セットされます。
処理が完了した場合は「HTTP/1.1 200 OK」といった情報が
セットされます。ステータスコードは3桁の数字で表して、
「200」であれば処理成功を意味します。

Webアクセスをしていて「404 Not Found」というメッセージを
見たことがある方も多いかもしれません。
これはデータが見つからないことを意味しています。

HTTPレスポンスのステータスコードの種類には
以下のような種類があります。

  • 100 データに続きがあるため再要求
  • 101 指定プロトコルで再接続を要求
  • 200 リクエスト処理成功
  • 201 ファイル作成成功
  • 301 データが別の場所に移動
  • 302 一時的にデータは別の場所に移動
  • 403 データへのアクセス不可
  • 404 データが見つからない
  • 500 サーバ内部のエラー
  • 503 一時的にサーバ処理不可

メッセージヘッダーにはWebブラウザやWebサーバの状態や
やりとりする情報がセットされます。

メッセージボディにはWebブラウザとWebサーバが
やりとりするHTMLデータが入ります。

WiresharkでHTTPのやり取りを覗いてみる

実際にWiresharkでHTTPのやりとりを覗いてみましょう。

以下の画面はHTTPパケットのやりとりだけに絞った
パケットキャプチャの結果です。

6-25

「1」がHTTPリクエストで、「2」がHTTPレスポンスになります。
2行目以降もHTTPリクエストとHTTPレスポンスのやりとりが続いています。

HTTPパケットをキャプチャするのは、非常に簡単で、
Wiresharkでキャプチャを開始して、Webサーフィンするだけ。

皆様も実際に試してみてください。

関連記事