今日、やったこと DNSパケット解析のつづき 今日のホワイトボード 前回まで DNSパケットの解析を行い、イーサネットヘッダからUDPヘッダまでの解説をしました。 DNSヘッダ(ヘッダセクション) DNSヘッダの先頭はヘッダセクション。 図 ヘッダセクション(パケット) 図 ヘッダセクション(各項目) とくにややこしいことはないと思います。 ヘッダセクションのあとには、Questionセクションが1つ、Answerセクションが1つ、Authorityセクション、Additionalセクションが続くことがわかります。 Questionセクション 前回のパケットのQuestionセクションと同じです。 ドメイン名はラベルの連続です。 ラベルは1バイトのラベル長と可変長のラベルデータで構成されます。 ラベルデータの長さはラベル長に書き込まれています。 ラベルデータは変換したいドメイン名(文字列データ)をASCIIで符号化しています。 ラベルはルートラベルで終了です。 タイプはこのパケットがDNSに対して何を問い合わせているかを書き込んでいます。 図 Questionセクション(パケット) 図 Questionセクション(各項目) Answerセクション Answerセクションがあることから、このパケットはDNSサーバーへの問い合わせに対する解答のパケットということになります。 ドメイン名について ちょっとややこしいのがドメイン名の部分です。 先頭2ビットで問い合わせドメイン名がどこに書きこまれているかがわかります。 今回のパケットは先頭2ビットが11なので、ドメイン名はこのパケットの別のところを参照することになります。 参照先はDNSヘッダの先頭からつづく6+8ビット(これをオフセット値と呼ぶ)離れたところに書き込まれていることになります。 このパケットではオフセット値は12。DNSヘッダの先頭から13バイト目以降がドメイン名です。実際、13バイト目以降はQuestionセクションのドメイン名の部分になります。 図 Answerセクションのドメイン名(パケット) 図 Answerセクションのドメイン名(各項目) 残りの部分 TTLはこの解答の有効期限です。 一度調べた結果はTTL指定値までは保存しておき、同じドメイン名の名前解決にはDNSを使いません。 このパケ...