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であらかじめ決められたメソッドやフィールド名、フィールド値です。

 

コメント

このブログの人気の投稿

2月5日(金)1コマ目

12月18日(金)2コマ目