【wireshark】HTTPの中身をみる【HTTPヘッダ】

| 0件のコメント

Wiresharkを使ってHTTPをみてみます。

HTTPリクエスト

tcp.port == 80でフィルタリングします。
ブラウザで google.com にアクセスします。

一部加工していますが以下が Wireshark で確認できます。
パケットを選択し, 右クリック -> copy -> byte でHEXをコピーできます。

GET / HTTP/1.1
Host: google.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:25.0) Gecko/20100101 Firefox/25.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8??Accept-Language: ja,en-us;q=0.7,en;q=0.3
Connection: keep-alive
/r/n

コメントを入れると以下になります。
GETの場合, リクエストライン + HTTPヘッダで構成されます。
POSTの場合は CRLF(/r/n) の後にさらにエンティティボディが付加されます。

GET / HTTP/1.1 # リクエストライン HTTP1.1のGETメソッドで話す
Host: google.com # ホスト名
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:25.0) Gecko/20100101 Firefox/25.0 # ユーザ環境はfirefox
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Connection: keep-alive # TCP接続を切らないで
/r/n # 終了 CRLF

HTTPレスポンス

レスポンスです。ステータスライン + HTTPヘッダで構成されます。
こちらもコメントを入れました。

HTTP/1.1 200 OK # ステータスライン HTTP1.1でステータスコードは成功
Pragma: no-cache # キャッシュしないでね
Cache-Control: no-cache
Content-Type: text/plain # MIME
Date: Sat, 30 Nov 2013 04:32:40 GMT # タイムスタンプ
Content-Length: 15 # コンテンツの長さ
Connection: keep-alive # TCP接続を切りませんよ
/r/n # 終了 CRLF

/r/n の後にエンティティボディが付加されます。

エンティティボディという言葉ですが, メッセージボディと何が違うのか気になり RFC2126 をみてみると ,安全に通信するためにTransfer-Encodingされた場合にはメッセージボディと呼ばれるみたいです。メッセージという概念がよりエンティティというデータの集合という概念より人間中心的な意味合いがあるから区別したのでしょうか。

HTTP2ではこれらの構成がガラッと変わってきます。

コメントを残す

必須欄は * がついています