6

タイプが11の場合、つまり時間を超えた場合のICMPパケットペイロードのサイズはどれくらいですか。IPヘッダーとICMPメッセージを生成するIPパケットペイロードの最初の8バイトが含まれているため、そのサイズは20 + 8=28だと思いました。

TTL=1で一般的なユーザートラフィックを再生しています。ダンプしたICMPメッセージで、次のことに気づきました。

  • UDPパケットによって生成されたすべてのICMPパケットには、28バイトのサイズのペイロードがあります
  • TCPパケットによって生成されたものはすべて、サイズ40バイトのペイロードを持っています

ICMP時間超過メッセージを、それらのバイトを比較することによってそれらをトリガーしたパケットと照合する必要があるため、この情報は不可欠ですが、なぜこれが発生するのかわかりません。

4

3 に答える 3

5

問題は、 RFC 792の4ページから8バイトのヘッダーペイロードを引用していることですが、要件はRFC1812によって変更されました...

Time Exceeded Message (in RFC 792)

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |     Code      |          Checksum             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             unused                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      Internet Header + 64 bits of Original Data Datagram      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

RFC 1812、セクション4.3.2.3は、ICMPエラーメッセージの許容ペイロードを劇的に増加させます(私の強調):

4.3.2.3元のメッセージヘッダー

これまで、すべてのICMPエラーメッセージには、インターネットヘッダーと、エラーをトリガーしたデータグラムの少なくとも最初の8データバイトが含まれていました。IP-in-IPトンネリングやその他のテクノロジーが使用されているため、これはもはや適切ではありません。 したがって、ICMPデータグラムには、ICMPデータグラムの長さが576バイトを超えないように、できるだけ多くの元のデータグラムを含める必要があります。返されるIPヘッダー(およびユーザーデータ)は、受信したものと同じである必要があります。ただし、エラーが検出される前に実行された転送で通常実行されるIPヘッダーへの変更をルーターが元に戻す必要はありません(例: TTLをデクリメントするか、オプションを更新します)。

Scapyパケットから生成するICMPエラーには、元のパケットのIP層とTCP層からのすべての情報が含まれている必要があります。

于 2012-08-13T09:27:17.787 に答える
1

お気づきのとおり、ICMPペイロードは、IPヘッダーに元のパケットのペイロードの8オクテットを加えたものです。ただし、IPヘッダーの長さは必ずしも20オクテットではありません。20は最小値です。IPヘッダー自体にオプションが含まれている場合があり、ヘッダーの長さはヘッダーのIHLフィールドの値で示されます。RFC 791のセクション3.1を参照してください。したがって、TCPパケットのIPヘッダーには12オクテットのオプションが追加されているようです。RFC 791は、ソー​​スルーティングやタイムスタンプなどのいくつかの標準オプションを定義しています。使用されているオプションを判別するには、ヘッダーをデコードする必要があります。

于 2012-08-13T08:44:33.670 に答える
1

今後の参考のために、マイクが言ったようにICMPペイロードのサイズが異なるだけでなく、MPLSのICMP拡張機能の場合は128バイトより長くなる可能性があることを追加したいと思います。詳細については、このドラフトを参照してください

于 2013-07-29T22:58:42.990 に答える