WiresharkによるHTTP解析 | Hello, Stupid World!

Hello, Stupid World!

いろいろとメモ代わりに書いていきます。

今日でWiresharkの話は終わりです。
最後はhttp。Web系開発者ならhttpの知識は必須ですね。

まず、GoogleからYahooを検索してYahooに飛びます。
その際のパケットキャプチャが以下。



本などに書いてある通り、リンクをクリックしたのでHTTPのGETリクエストが
サーバに送信されています。
GETリクエストの中身は以下のようなものが含まれてました。

・HTTPバージョン
・ホスト名
・コネクション
・Accept(受信して動かすことのできるファイル形式)
・User-Agent(OSやブラウザの情報)
・Referer(遷移元のURL)
・Accept-Encoding(ブラウザの対応している圧縮形式。gzipとか)
・Accept-Language(使いたい言語。複数指定可)
・cookie(ローカルPCに情報を保存する場合使用)

なぜかクッキーが663バイトもありました・・・

その後、サーバからレスポンスが帰ってきています。

レスポンスの内容は

・HTTPバージョン
・ステータスコード
・状態(OKだとかNOT FOUNDとか)
・日時
・p3p(プライバシーポリシー設定)
・Expires(有効期限。-1:キャッシュさせない)
・Pragma(キャッシュの有効期限などで使用。HTTP1.1では互換性の為にある)
・Cache-control(キャッシュの設定。HTTP1.1以降ではPragmaでなくこちらを
 使うことが推奨されている)
・X-XRDS-Location(OpenIDの設定。
 Googleに関係ないサイトでもGoogleIDで入れるようになったりする認証)
・Vary(ユーザエージェントによって内容が変わることを表す)
・コネクション
・Transfer-Encoding(チャンク送信の設定。分割送信って感じです)
・Content-Type
・Content-Encoding

こうして、レスポンスのヘッダ見ると色々な属性があって今まで自分が
作ったものは適切な属性を指定できていたのだろうかと不安になりますね。

次にレスポンスのボディですが、<!DOCTYPE HTML~と、普通のHTMLです。
このボディ部がブラウザで実行されてWebページが表示されます。




レスポンスされたHTMLをファイルに貼って開くとこんな感じでした。
別途リクエストで取得する部分がセッションの関係か取得できていない事が
分かります。

また、imgタグなどがあるとそのつどGETリクエストを発行していることも
確認できます。