linux之網路程式設計ICMP校驗演算法

2021-07-27 16:19:48 字數 546 閱讀 8540

unsigned short cal_chksum(unsigned short *addr,int len)  

/*若icmp報頭為奇數個位元組,會剩下最後一位元組。把最後乙個位元組視為乙個2位元組資料的高位元組,這個2位元組資料的低位元組為0,繼續累加*/

if(nleft == 1)

/*校驗和是以16位為單位進行求和計算的,sum是32位的,sum&0xffff是低16位,sum>>16是右移16位,取到的是高16位,相加就是高16位和低16位的和。*/

sum = (sum >> 16) + (sum & 0xffff);

/*這一步是有可能上面加的時候有進製到高16位的,再把高16位加進來。*/

sum += (sum >> 16);

/*上一步肯定不會再有進製了,即使上面sum高16位非0也不要緊,此處sum只能把低位元組數賦值給answer,因為answer為16位*/

answer =~ sum;

return answer;

}

Linux網路程式設計 ICMP洪水攻擊

一 icmp洪水攻擊的原理 icmp flood 是一種在ping基礎上形成的,但是用ping程式很少能造成目標機宕機的問題,這裡邊最大的問題是提高處理的速度,icmp洪水攻擊主要有以下3種方式。1 直接洪水攻擊 這樣做需要本地主機的頻寬與目標主機之間頻寬進行比拼,可以採用多執行緒的方法一次性得傳送...

icmp協議 計算機網路之ICMP協議 下

實際上查詢報文分成5類,但是其中有3類已經過時了,只有2類還在使用,一類是回送請求與回答報文,一類是時間戳請求與回答報文。第一類就是我們今天要介紹的實現ping命令的關鍵報文。另外一類也是實現乙個命令的關鍵報文,這個命令就是traceroute,這個命令可能大家平時用的比較少,但是一般it人員有的時...

linux 網路程式設計總結 之網路程式設計函式總結

這周學習了linux網路程式設計相關的知識,現在將其總結如下 在linux系統中已經將tcp ip協議相關的東西都封裝好了,所以在入門學習網路程式設計的時候並沒有學習研究太多tcp ip協議的東西,而是學習那些已經將協議封裝好的函式和api。在linux網路程式設計中基本幾個函式如下 第乙個函式 套...