UDP检验和计算方法
UDP用户数据报格式
UDP用户数据报首部格式如下图所示,包括三个部分:
- UDP伪首部,12字节,伪首部并不是UDP数据报的真正首部,只是为了计算检验和临时添加在UDP数据报的前面,它既不向下传送也不向上递交,它的仅仅是为了计算检验和而存在的。
- UDP首部,8字节、
- UDP数据等三部分组成,
计算方法
在计算前,需要进行以下处理:
- 伪首部中第4字段指的是IP首部中的协议字段值,这里是UDP协议,对应的字段值为17;
- 伪首部中第5字段,UDP长度,指的是UDP用户数据报的长度,即UDP首部+UDP数据部分的长度,不包括UDP伪首部的长度;
- UDP首部中的检验和在计算前全置零;
- 在进行计算时,UDP用户数据报的长度需要凑够偶数字节,如果数据部分为奇数字节,则需要补充1个全零的字节(此字节不发送)。
在经过以上处理后,即可进行UDP检验和(发送方)计算,步骤如下:
- 检验和字段置零,UDP用户数据报凑够偶数字节;
- 把所有位(UDP伪首部+UDP首部+UDP数据部分)按16位划分为不同的字;
- 计算上述所有16位字的和,如果有进位导致总位数超过16位,则把进位值加到末位;
- 将上述计算的和取反即为UDP用户数据报的检验和。
上述方法是发送方UDP检验和的计算方法,在接收方,会把接收到的UDP用户数据报(UDP首部+UDP数据部分)、添加的UDP伪首部、为凑够偶数字节而填充的字节(可能存在)组合起来,通过如上方法进行处理,即进行16位划分、计算所有16位字的和、对求和结果进行取反等。如果结果16位全为1,则UDP用户数据报传送正确;否则,代表有差错出现,接收方应丢弃该UDP用户数据报。
总结
- 通过上述计算过程可知,UDP检验和是把UDP首部和UDP数据部分一起检验,不同于IP数据报检验方法(两者计算方法相似,但IP数据报只检验其首部,不检验数据部分);
- 如上差错检验方法检错能力并不强,但它的优点是简单、 处理速度快。
参考
- 《计算机网络-第7版》-谢希仁著