UDP检验和计算方法

UDP用户数据报格式

UDP用户数据报首部格式如下图所示,包括三个部分:

  1. UDP伪首部,12字节,伪首部并不是UDP数据报的真正首部,只是为了计算检验和临时添加在UDP数据报的前面,它既不向下传送也不向上递交,它的仅仅是为了计算检验和而存在的。
  2. UDP首部,8字节、
  3. UDP数据等三部分组成,

UDP检验和计算方法

计算方法

在计算前,需要进行以下处理:

  1. 伪首部中第4字段指的是IP首部中的协议字段值,这里是UDP协议,对应的字段值为17;
  2. 伪首部中第5字段,UDP长度,指的是UDP用户数据报的长度,即UDP首部+UDP数据部分的长度,不包括UDP伪首部的长度;
  3. UDP首部中的检验和在计算前全置零;
  4. 在进行计算时,UDP用户数据报的长度需要凑够偶数字节,如果数据部分为奇数字节,则需要补充1个全零的字节(此字节不发送)。

在经过以上处理后,即可进行UDP检验和(发送方)计算,步骤如下:

  1. 检验和字段置零,UDP用户数据报凑够偶数字节;
  2. 把所有位(UDP伪首部+UDP首部+UDP数据部分)按16位划分为不同的字;
  3. 计算上述所有16位字的和,如果有进位导致总位数超过16位,则把进位值加到末位;
  4. 将上述计算的和取反即为UDP用户数据报的检验和。

UDP检验和计算方法
上述方法是发送方UDP检验和的计算方法,在接收方,会把接收到的UDP用户数据报(UDP首部+UDP数据部分)、添加的UDP伪首部、为凑够偶数字节而填充的字节(可能存在)组合起来,通过如上方法进行处理,即进行16位划分、计算所有16位字的和、对求和结果进行取反等。如果结果16位全为1,则UDP用户数据报传送正确;否则,代表有差错出现,接收方应丢弃该UDP用户数据报。

总结

  1. 通过上述计算过程可知,UDP检验和是把UDP首部和UDP数据部分一起检验,不同于IP数据报检验方法(两者计算方法相似,但IP数据报只检验其首部,不检验数据部分);
  2. 如上差错检验方法检错能力并不强,但它的优点是简单、 处理速度快。

参考

  1. 《计算机网络-第7版》-谢希仁著