icmpヘッダチェックサムとIPヘッダチェックサムの計算方法は同じですか?つまり、似ているかもしれません。しかし、私はthisのIPヘッダーチェックサムコードを見つけました。このコードをicmpヘッダチェックサムにも使用できますか?他のどんな助けも素晴らしいだろう。ICMPヘッダとIPヘッダチェックサム計算
unsigned short cksum(struct ip *ip, int len){
long sum = 0; /* assume 32 bit long, 16 bit short */
while(len > 1){
sum += *((unsigned short*) ip)++;
if(sum & 0x80000000) /* if high order bit set, fold */
sum = (sum & 0xFFFF) + (sum >> 16);
len -= 2;
}
if(len) /* take care of left over byte */
sum += (unsigned short) *(unsigned char *)ip;
while(sum>>16)
sum = (sum & 0xFFFF) + (sum >> 16);
return ~sum;
}
ICMPの "_Header Checksum - ヘッダー内のすべての16ビットワードの1の補数の和の16ビットの1の補数をチェックする必要があります。チェックサムを計算するために、チェックサムフィールドはゼロでなければなりません。将来的に置き換えられます。_ "RFC 1071および1141は、IPチェックサムの実行方法を説明しています。 –
@Ronだから、あなたは(ヘッダチェックサムとIPヘッダチェックサムの計算方法)が同じではないと言いますか? –