10月30日(月)3コマ目
今日、やったこと
- パケット解析(DNS)前回のつづき
- パケット解析(HTTP)
今日のホワイトボード
パケット解析(DNS)前回は
前回はイーサネットヘッダからUDPヘッダまでを解析しました。
UDPヘッダの送信元ポート番号(53)から上位プロトコルはDNSだとわかっています。
[DNSヘッダ]ヘッダセクション
フラグから権威なしサーバーからの回答だとわかります。
また、ヘッダセクション以降の各セクション数は下表のようになります。
| セクション | セクション数 |
|---|---|
| Questionセクション | 1 |
| Answerセクション | 1 |
| Authorityセクション | 4 |
| Additionalセクション | 8 |
![]() |
| 図 DNSヘッダ ヘッダセクション 解析結果 |
[DNSヘッダ]Questionセクション
前回のパケットを同じように解析すればOK。
![]() |
| 図 DNSヘッダ Questionセクション 解析結果 |
[DNSヘッダ]Answerセクション
前半のフォーマットはQuestionセクションと同じ。
ただ、ドメイン名はパケット長を短くするため、すでにパケット内にドメイン名が記述済みならその位置を示す情報が格納されている。
〇ドメイン名
ドメイン名の先頭2ビットが”11”なので、残りの6+8ビットにはドメイン名が記述されている位置情報になる。
位置情報が"12"から、DNSヘッダの先頭から12バイト分のあとにドメイン名が記述されている。
ちなみにDNSヘッダの先頭から12バイト分はヘッダセクション。よって、Questionセクションのドメイン名を参照すればいい。
〇RDLength
RDLengthは後ろに続くRDataの長さを示す。
RDataは可変長。
〇RData
このAnswerセクションの一番のポイントになるデータ。サーバーからの回答。
![]() |
| 図 DNSヘッダ Answerセクション 解析結果 |
本来はこの後Authorityセクションが4つ、Additionalセクションが8こ続くが省略。
宛先ポート番号(80)から上位プロトコルはHTTPだとわかる。
パケット解析(HTTP)
イーサネットヘッダ、IPヘッダまでは前回と同じように解析すればOK。
〇イーサネットヘッダ
![]() |
| 図 イーサネットヘッダ 解析結果 |
タイプから上位プロトコルはIPv4。
〇IPヘッダ
![]() |
| 図 IPヘッダ 解析結果 |
プロトコル番号から上位プロトコルはTCP。
TCPヘッダ
IPヘッダやUDPヘッダと同じようにビット単位でフォーマットが決まっているので、フォーマットに従って解析すればOK。
![]() |
| 図 TCPヘッダ 解析結果 |
〇ポイント
TCPヘッダは可変長。ヘッダ長でサイズがわかる。
宛先、送信元ポート番号から上位プロトコルがわかる。
HTTPヘッダ
DNSヘッダと同じように、文字列データがメイン。
各データの区切りはCR+LF(0x0d+0x0a)
各データはASCIIの文字コード
区切りごとにASCIIの文字コードに従って文字へ変換すると下図のようになる。
![]() |
| 図 HTTPヘッダ 解析結果 |
次回は
パケット解析のテストをします。
他人の回答以外は何を見ても構いませんが、自力でやってください。






