icmp üstbilgi sağlama toplamı ve ip üstbilgi sağlama toplamı hesaplama yöntemleri aynı mıdır? Yani benzer olabilirler. Ama ip header checksum için this kodunu buldum. Bu kodu icmp başlık sağlama toplamı için de kullanabilir miyim? Başka herhangi bir yardım harika olurdu.ICMP üstbilgisi ve IP üstbilgi sağlama toplamı hesaplamaları
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 için RFC 792'yi kontrol etmelisiniz "_Header Checksum - 16 bit'in başlığındaki tüm 16 bitlik sözcüklerin tamamlayıcı toplamının tamamlayıcısıdır. Sağlama toplamını hesaplamak için sağlama alanı alanı sıfır olmalıdır. Gelecekte değiştirildi. "RFC 1071 ve 1141, IP sağlama toplamlarını nasıl yapacağını açıklar. –
@Ron Yani, onlar (header checksum ve ip header checksum hesaplama yöntemleri) aynı olmadığını söyler misiniz? –