2

宿題の一環として、生のソケットを使用してICMPエコー要求に対するICMP応答を生成するCプログラムをLinuxで作成する必要があります。ICMPパケットのデータもチェックサムに含める必要がありますか?または、ヘッダーのみのチェックサムを計算する必要がありますか?

4

1 に答える 1

10

HEADER+DATAから計算する必要があります。計算を実行するときは、チェックサムをゼロにして、後で置き換えます。

RFC 792からの14ページ(エコーまたはエコー応答メッセージ)の引用:

チェックサムは、ICMPタイプで始まるICMPメッセージの1の補数の合計の16ビットの1の補数です。チェックサムを計算するには、チェックサムフィールドをゼロにする必要があります。全長が奇数の場合、チェックサムを計算するために、受信したデータに1オクテットのゼロが埋め込まれます。このチェックサムは将来置き換えられる可能性があります。

于 2011-02-06T00:52:39.713 に答える