以太网Checksum-UDP手算教学

tcp/ip的checksum计算步骤及方法请见如下链接:

以太网Checksum-TCP/IP手算拆解教学-CSDN博客

1、UDP数据结构如图

在计算UDP首部校验和时,计算范围包括了伪首部、UDP首部、UDP数据报,其中各个部分数据容量如下:

伪首部—---------12字节=48字符

其中

源IP地址---------4字节=16字符

目的IP地址----—4字节=16字符

协议-----------—1+1字节=4+4字符=8字符

UDP长度---------2字节=8字符

UDP首部---------8字节=32字符

UDP数据报的长度取决于底层协议的限制长度=底层限制长度总字节-IP首部字节-UDP首部字节

以上三部分均是checksum的计算范围,均需参与计算;

2、UDP的首部校验和Checksum不仅对IP首部的部分数据进行计算,还对UDP首部以及UDP数据报进行计算;

3、发送端的UDP首部校验和在计算时,将首部校验和看作为0x0000来计算;

4、在计算首部校验和时按照每16位字符为1个单位进行累加;

5、发送端用wireshark截取1帧UDP报文,并将IP首部数据和UDP首部数据以及UDP数据报详细展开来:

6、如上1帧UDP报文的首部校验和Checksum计算步骤如下:

6.1、先对伪首部进行相加:

(源IP地址前16位)

 

ac1f

(源IP地址后16位)

 

812e

(目的IP地址前16位)

 

ffff

(目的IP地址后16位)

 

ffff

(协议号)

 

 

0011

(UDP长度)

 

 

0031

伪首部sum=ac1f+812e+ffff+ffff+0011+0031

6.2、再将UDP首部相加,其中首部校验和默认是0000:

(源端口)

 

 

3458

(目的端口)

 

 

3458

(UDP长度)

 

 

0031

(检验和)

 

 

0000

UDP首部sum=3458+3458+0031+0000

6.3、再将UDP数据报进行相加,注意了,如果数据报出现奇数字节,则需要后面补0:

(UDP数据报总长)

02fd000400000021ffffffffffffffffffffffffffffffffff00013ca9f4b46177540671a0a20a0000

 

(UDP数据报第1个)

02fd

02fd

(UDP数据报第2个)

0004

0004

(UDP数据报第3个)

0000

0000

(UDP数据报第4个)

0021

0021

(UDP数据报第5个)

ffff

ffff

(UDP数据报第6个)

ffff

ffff

(UDP数据报第7个)

ffff

ffff

(UDP数据报第8个)

ffff

ffff

(UDP数据报第9个)

ffff

ffff

(UDP数据报第10个)

ffff

ffff

(UDP数据报第11个)

ffff

ffff

(UDP数据报第12个)

ffff

ffff

(UDP数据报第13个)

ff00

ff00

(UDP数据报第14个)

013c

013c

(UDP数据报第15个)

a9f4

a9f4

(UDP数据报第16个)

b461

b461

(UDP数据报第17个)

7754

7754

(UDP数据报第18个)

0671

0671

(UDP数据报第19个)

a0a2

a0a2

(UDP数据报第20个)

0a00

0a00

(UDP数据报第21个)

00

0000

UDP数据报sum=02fd+0004+0000+0021+ffff+ffff+ffff+ffff+ffff+ffff+ffff+ffff+ff00+013c+a9f4+b461+7754+0671+a0a2+0a00+0000

6.4、将三部分累加起来:

UDPsum=伪首部sum+UDP首部sum+UDP数据报sum=f2080

6.3、IP首部数据的sum结果是f 2080,属于溢出状态,则需进行回滚计算:

将溢出的结果拆成000f和2080,两者进行回滚相加:

carry=000f+2080=208f

6.4、最终对carry后的数据取反得到checksum结果:

checksum=ffff-208f=df70

7、excel版本自动计算公式如下:

手算excel.xls在下面链接下载即可

原创-tcp/ip和UDPchecksum手算方法,逐步拆解计算步骤,让你一看就会资源-CSDN文库

  • 18
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

此墨言非彼莫言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值