ICMP Packete

Wastl_m

Grünschnabel
Hi,
ich habe mal eine Frage.

Ich bin momentan dabei ein Pingtool zu schreiben mithilfe von Rawsockets unter Linux. Da bin ich auf die Checksum gestoßen und wollte fragen ob man es wie bei dem TCP-Header auch von System berechnen lassen kann(TCP-Checksum = 0 dann wird sie vom System berechnet).
Wenn nicht könnte mir jemand sagen woraus sich die ICMP Checksum berechnet?
 
unsigned short Ping_Checksum(unsigned short *buffer,int size){unsigned long cksum=0;while(size>1){cksum+=*buffer++;size-=sizeof(unsigned short);}if(size){cksum+=*(unsigned char*)buffer;}cksum=(cksum>>16)+(cksum&0xffff);cksum+=(cksum>>16);return((unsigned short)(~cksum));}

Hab das zwar von Winsock, aber das TCP zeug wird wohl auch in Linux gleich sein

Gruß
 
Zurück