今日、やったこと HTTPパケット(パケット4)解析の解説 今日のホワイトボード HTTPパケット(パケット4)の解説をしました。 イーサネットヘッダ とくにややこしいところはないと思います。 タイプが0x0800から上位プロトコルはIP。よって、イーサネットヘッダのあとにはIPヘッダが続きます。 図 イーサネットヘッダ IPヘッダ これも特に問題はないと思います。 プロトコル番号が0x06から上位プロトコルはTCP。よって、IPヘッダのあとにはTCPヘッダが続きます。 図 IPヘッダ TCPヘッダ 宛先ポート番号が80。TCPの80番ポートはHTTPのサーバーが利用するポート。 よって、上位プロトコルはTCPで、クライアントからサーバーへのHTTPのパケットだとわかります。 図 TCPヘッダ HTTPヘッダ HTTPヘッダは文字データをASCIIで符号化したデータが格納されている。1バイトずつASCIIコード表に従って文字に戻せばいい。 データ間の区切りはCR(0x0d)、LF(0x0a)。 このパケットはクライアントからサーバー(TCPヘッダの宛先ポート番号80)宛てのパケット。 先頭はリクエストヘッダライン。続いてリクエストヘッダフィールドが続く。 リクエストヘッダライン 1バイトずつ文字に戻す。 図 HTTPヘッダ リクエストライン① 図 HTTPヘッダ リクエストライン② 図 HTTPヘッダ リクエストライン まとめ GETコマンドで/index.htmlをリクエストしている。 HTTPのバージョンは1.1を指定。 リクエストヘッダフィールド CR(0x0d)+LF(0x0a)区切りで複数のデータが連続している。 データは フィールド名:フィールド値 のフォーマット。 このパケットではHostとUser-Agentの2つのフィールド名に対するフィールド値がある。 図 HTTPヘッダ リクエストヘッダフィールド① 図 HTTPヘッダ リクエストヘッダフィールド② 図 HTTPヘッダ リクエストヘッダフィールド まとめ 次回は HTTPパケット解析のテストをします。