checksum二進制反碼求和計算方法:
ip報文:將首部不包含資料,分成多個16位字的序列,將檢驗和置零,然后進行反碼算術運算把所有16位字相加后,將得到的 和的反碼 寫入檢驗和欄位,接收方接收到后,再按照16位字的序列計算一次,得到的和為1,取反碼為0.
udp:添加一個12位元組 ip偽首部(源ip 4位元組 + 目的ip 4位元組 + 1全零位元組 + 協議型別17 1位元組 + udp長度 2位元組 ),偽首部、udp首部和資料部分一起檢驗,資料部分不是偶數個位元組,則要填入一個全零位元組,此位元組不發送,計算方法同上,
tcp:同udp檢驗,
unsigned short checksum(unsigned short *buf, int length) { unsigned long sum; for(sum = 0; length > 0; length--) { sum += *buf++; sum = (sum>>16) + (sum&0xffff); sum += (sum>>16); } return ~sum; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/41004.html
標籤:其他
上一篇:基于布爾型SQL盲注——MySQL關鍵函式、dvwa演示
下一篇:星耀特別版有人知道嗎
