udp校驗和的計算例項說明
成都資訊工程學院 鄭郁正
如下定義乙個udp的以太包。為了方便,只包含兩個位元組資料0x55,0xaa。
unsigned char udp_et_pkt = ;
參與udp校驗計算的由三部分組成:udp頭,udp資料,udp偽頭,如下面所示
unsigned char udp_chksum_data = {
//udp 頭
0x04, 0x00, //源埠號
0x04, 0x00,//目標埠號
lenght_h, lenght_l,// udp頭長度 + udp資料長度 = 8 + 2//(udp頭 + 資料)的長度
0x00, 0x00,//待計算的udp校驗和
//udp 資料
0x55, 0xaa,
//udp 偽頭
ipsource_1, ipsource_2, ipsource_3, ipsource_4,
ipdestination_1, ipdestination_2, ipdestination_3, ipdestination_4,
0x00,0x11,//協議,高位元組為0x00
lenght_h, lenght_l// udp頭長度 + udp資料長度 = 8 + 2
計算校驗和的程式如下:
uint16 udp_chksum(uint8 *sdata, uint16 len)
uint32 acc;
for(acc = 0; len > 1; len -= 2, sdata += 2) acc += (*sdata<<8) + *(sdata+1);
if(len == 1) acc += *sdata<<8;
acc += acc>>16;
return acc;
通過下面語語句即可完成udp的校驗計算的填寫:
uint16 sum = udp_chksum( udp_chksum_data, 8 + 2 + 12 );//8為udp頭長,2為資料長,12為偽頭長
sum = ~sum;//取反
udp_et_pkt[40] = sum >> 8;//校驗和高8位
udp_et_pkt[41] = sum;//校驗和低8位
UDP校驗和計算
目錄 一 udp概述 二 udp資料報 三 udp校驗和計算 四 udp校驗和計算的c語言實現及抓包驗證 udp是user datagram protocol的簡稱,中文名是使用者資料報協議,是osi open system interconnection,開放式系統互聯 參考模型中一種無連線的傳輸...
UDP頭部結構,UDP校驗和計算
udp 使用者資料報協議 特點 1.無連線,傳輸資料時不需要建立鏈結 2.盡最大努力傳輸,不可靠 3.面向報文的,接收到應用程式的資料時,只往資料前面加乙個udp頭部就傳給網路層,收到網路層傳來的udp資料時,只把udp頭部去掉就扔給應用層程序。不論資料大小都是一次傳送。4.沒有擁塞控制,不管鏈路的...
linux 核心 UDP層csum校驗
本人核心小菜,最近工作需要在核心模組做udp的recv checksum 校驗,整理了相關資料並把關鍵的函式列出來。recv udp packet check static bool checksumerror struct sk buff skb,struct udphdr uh 2.udp he...