12月1日(木)2コマ目

今日、やったこと

  • パケット解析確認テスト1の解説
  • パケット解析(HTTP)

今日のホワイトボード

パケット解析確認テスト1の解説

前回(11月24日)のおたすけサイトをご覧ください。


パケット解析

順に解析していきます。

イーサネットヘッダ

タイプが0x0800より、イーサネットヘッダ以降はIPヘッダであることがわかります。


IPヘッダ

図 IPヘッダ解析

図 IPヘッダ解析結果

プロトコル番号が0x06より、IPヘッダ以降にはTCPヘッダがあることがわかります。


TCPヘッダ

初登場のTCPヘッダですが、フォーマットに従って解析すればややこしいことはないとおもいます。

図 TCPヘッダ解析

図 TCPヘッダ解析結果

UDPヘッダと同じように送信元・宛先のポート番号で上位プロトコルがわかります。

このパケットは宛先ポート番号の80からTCPヘッダ以降にはHTTPヘッダが続くことがわかります。


HTTPヘッダ

このパケットはTCPの宛先ポート番号が80であることから、クライアント->サーバーのリクエストのパケットです。

HTTPヘッダはビット単位でフォーマットが決まっているわけではなく、区切りのCR(0x0d)、LF(0x0a)で区切った文字列データの連続です。

ということで、1バイトずつasciiの文字コード表をもとに文字に変換していきます。

まずは先頭から。ここはリクエストラインになります。

図 HTTPヘッダ リクエストライン部

リクエストラインは

 GET / HTTP/1.1

です。

続いて、リクエストヘッダフィールドです。

図 HTTPヘッダ リクエストヘッダフィールド部 ①

データは

 Host: 172.16.8.10

です。

リクエストヘッダフィールドが続きます。

図 HTTPヘッダ リクエストヘッダフィールド部 ②

データは

 Connection: keep-alive

です。

これで終了です。


リクエストヘッダフィールドは

 項目名:値

のフォーマットです。

このパケットには項目名HostとConnectionがあります。

Hostはリクエストするホスト名の指定です。

Connectionは接続方法の指定です。keep-aliveはTCPのコネクションを維持せよという指定です。

図 HTTPヘッダ まとめ


次回は

パケット解析確認テスト2をやります。

また、HTTPヘッダのリクエストラインの説明をします。


このブログの人気の投稿

1月26日(木)2コマ目

2月2日(木)2コマ目