12月2日(木)2コマ目
今日、やったこと
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パケット解析のテストをします。