是否有从内部UDP校验和预测外部UDP校验和的方法

时间:2019-05-13 23:02:10

标签: c udp checksum

在隧道传输的数据包中,可能存在两个UDP标头。一个外部UDP和一个内部UDP,例如MAC + externalIP + externalUDP + Extraheader + innerIP + innerUDP +有效负载。

内部UDP有自己的校验和。

是否有一种优化的方法可以通过处理内部UDP校验和值而无需再次计算有效负载的总和来计算外部UDP校验和?

1 个答案:

答案 0 :(得分:0)

UDP校验和的计算很简单:

  • 以16位整数形式处理数据(有效载荷,UDP报头中的非校验和字段,IP报头中的某些字段)
  • 求和它们以16位换行
  • 反转结果的每一位

它是通过某种方式构造的,即在接收端进行验证是通过将所有提到的数据和校验和相加并检查结果是否等于0xffff来完成的。因此,在计算外部数据包校验和时,您可能希望跳过与内部数据包相关的求和字段,而是直接添加0xffff从而节省资源。

仅在内部数据包偏移量可被16位整除的情况下适用,因此外部数据包和内部数据包的校验和计算使用内部数据包中的相同整数。