計算udp校驗和例子 UDP校驗和計算例項

2021-10-17 01:45:32 字數 1114 閱讀 1167

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...