1月22日(金)1コマ目
今日、やったこと
パケット解析(HTTP)
今日のホワイトボード
先週はイーサネットヘッダ、IPヘッダ、TCPヘッダを解析しました。
今日はその続きでHTTPを解析します。
HTTP部の基本
今までのイーサネットヘッダ、IPヘッダ等はビット単位でフォーマットが決まってましたが、HTTPは文字列データと区切り(CR+LF)の繰り返しで構成されています。
- 文字列データは1文字ずつASCIIコードに変換されています
- 区切りはCR(ASCIIコードの0x0d)とLF(ASCIIコードの0x0a)の2バイトです
![]() |
| 図 HTTP部の構造 |
HTTP部その1
1つ目の区切りまで1バイトづつ、ASCIIコード表に従って、文字に変換すると下図のようになりました。
![]() |
| 図 HTTP部その1(リクエストライン) |
HTTPの1つ目のデータはリクエストラインまたはステータスラインのいずれかです。
| クライアント=>サーバー | リクエストライン |
|---|---|
| サーバー=>クライアント | ステータスライン |
まず、このパケットのTCPヘッダの宛先ポート番号はHTTPのウェルノウンポートである80です。サーバーはこの80ポートでクライアントからのリクエストを待ちます。よって、混んパケットはクライアントからサーバーへ送信したパケットです。
よって、1つ目のデータはリクエストラインです。
このリクエストラインではクライアントからサーバーへ送信するメソッドが書き込まれています。
HTTP部その2
同じように1バイトずつASCIIコード表に従って文字に変換すると下図のようになりました。
![]() |
| 図 HTTP部その2(リクエストヘッダ) |
「ヘッダフォーマット集」の17ページから、リクエストラインの次はリクエストヘッダです。
フィールド名はHOST、フィールド値は172.16.8.10です。
HTTP部その3
「ヘッダフォーマット集」の17ページから、リクエストヘッダの次は一般ヘッダです。
フィールド名はConnection、フィールド値はkeep-aliveです。
![]() |
| 図 HTTP部その3(一般ヘッダ) |
まとめると
このパケットのHTTP部をまとめると下図のようになります。
![]() |
| 図 HTTP部をまとめると |
HTTPは文字をASCIIコードで変換した文字データと区切り(CR+LF)の繰り返しです。
文字データはHTTPであらかじめ決められたメソッドやフィールド名、フィールド値です。





コメント