UDP校验和的计算实例说明
成都信息工程学院 郑郁正
如下定义一个UDP的以太包。为了方便,只包含两个字节数据0x55,0xaa。
unsigned char udp_et_pkt[] = {
Mac_dest1, Mac_dest2, Mac_dest3, Mac_dest4 ,Mac_dest5, Mac_dest6,//以太网目标地址
Mac_source1, Mac_source2, Mac_source3, Mac_source4, Mac_source5, Mac_source6,//以太网源地址
0x08, 0x00,
//IP 头
0x45, 0x00, IPlenght_h, IPlenght_l,
0x00, 0x00, 0x00, 0x00,
0x80, 0x11, IPchecksum4, IPchecksum5,//0x11为UDP协议
IPsource_1, IPsource_2, IPsource_3, IPsource_4,//源IP地址
IPdestination_1, IPdestination_2, IPdestination_3, IPdestination_4,//目标IP地址
//udp 头
0x04, 0x00, //源端口号
0x04, 0x00,//目标端口号
lenght_h, lenght_l,//(udp头 + 数据)的长度,即8+2
0x00, 0x00,//udp_et_pkt[40] 和 udp_et_pkt[41]//待计算的UDP校验和
//udp 数据
0x55, 0xaa
};
在计算之前要从IP头和UDP头中抽取数据形成UDP伪头:
unsigned cha