答え1
これは、パケットをパディングして、最小イーサネット フレーム サイズである 64 バイト (16 進数 40) に達するようにするだけです。
ICMP セグメントは 64 より小さいため、最小値を満たすようにパディングする必要があります。これは、最小値に達するまでアルファベットを追加するだけで実行されます。
Wikipediaを参照 イーサネットフレーム。
答え2
ペイロードは必ずしもただパディング。実際、ペイロードは、ある程度、OS のフィンガープリントを作成するためにも使用できます。この場合、次の 2 つの理由から、ping は Windows マシンから実行されたと確信しています。
- ペイロードにタイムスタンプがない
- 識別子は1です
これを Mike Muuss ベースの ping (FreeBSD、Mac OSX、...) と比較してみましょう。
- ペイロードの最初の8バイトはタイムスタンプを表します(struct tv32)
- 識別子は、プログラム自体のプロセス ID の下位 16 ビットです
ping
。
または、Solaris では、タイムスタンプは「struct timeval」であり、秒の値には 64 ビットの秒フィールドが含まれる場合があります。他の OS でもペイロードが異なる場合があります。
参考までに、古いWiresharkのバグに関するコメントを読むと、バグ 5770。
もちろん、ICMPペイロードにはICMPトンネリングなどの他の用途もあります。これについて説明している記事が1つあります。Ping パワー - ICMP トンネル。
いずれにせよ、ICMP ペイロードは必ずしもパディングだけではありません。