UDP计算校验和方法
UDP计算校验和的方法和计算IP数据报首部校验和的方法类似。主要考虑求和时的进位。以谢希仁书上的例子为例:
【这是王道考研的讲解,讲到了在发送方和接收方对校验和的处理过程,但没有介绍快捷计算方法】
这是在一个博主那里看到的快速算法,并对其进行了修改和注释(红笔字),最好自己亲自算一遍。
算法简述:
(1)先统计每一位上的“1”的个数,以第1位为例,有9个“1”,即“1001”,需要在第4位进位1;第2位有7个“1”,即“111”,需要在第3位和第4位进1,依次类推,此为第一轮进位。
(2)进位后余数:以第1位为例,有9个“1”,即“1001”,余数为“1”,即余数为最低位;以第5位为例,有4个“1”,即“100”,余数为“0”。
(3)第二轮进位:将第一轮进位得到的进位的“1”的个数与对应位的余数相加得到新的各位的“1”的个数,重复第一轮进位算法求进位“1”的数目。
(4)求相加和就是将上述3行相加,偶数个1置0,奇数个1置1。
原文博客:https://blog.csdn.net/yueyadao/article/details/85042511