是否允许从截断的有效负载计算UDP校验和?

时间:2014-12-26 20:41:59

标签: c sockets networking udp protocols

如果UDP套接字具有正确的校验和,则它只接受传入的数据报。但我听说有时因为最大传输单元(MTU)而截断UDP数据包。

(1)如何处理被故意截断的数据报?是否允许通过截断的有效负载计算校验和?或者是否需要始终根据应用程序要在一个数据报中发送的整个数据来计算校验和?

(2)此外,是否允许数据报被分段,然后以另一个或不完整的顺序进行解密?这会破坏校验和吗?

主要问题是:当收到带有正确校验和的UDP数据报并传递给应用程序时,是否保证有效负载正是发送方应用程序传递给OS的数据?

1 个答案:

答案 0 :(得分:1)

  

我听说有时因为最大传输单元(MTU)而截断UDP数据包。

你听错了。出于这个原因,他们可能支离破碎

  

(1)如何处理被故意截断的数据报?

它们没有被截断,它们是碎片化的。如果所有片段到达,则可以重构数据报并验证其校验和。否则没有任何反应。

  

是否允许通过截断的有效负载计算校验和?

不可能,见上文。

  

或者是否需要始终根据应用程序要在一个数据报中发送的整个数据来计算校验和?

  

(2)此外,是否允许数据报被分段,然后以另一个或不完整的顺序进行去分片?

没有

  

这会破坏校验和吗?

它甚至不会发生。

  

主要问题是:当收到带有正确校验和的UDP数据报并传递给应用程序时,是否保证有效负载正是发送方应用程序传递给操作系统的数据?