从我读到的关于 UDP 的内容来看,它没有错误处理,没有检查发送/接收数据的顺序,没有检查重复的数据包,没有检查损坏的数据包,显然不能保证发送的数据包是均匀的收到...
考虑到这一点,为什么地球上实际上可以选择在 UDP 中使用校验和?因为如果您想确保以正确的顺序接收到发送的数据(并且没有损坏等),那么您肯定会使用 TCP...
最佳答案
UDP 数据包包含一个 16 位 CRC 校验和的字段,接收操作系统将使用它来检查数据包是否损坏。如果校验和存在但失败,则数据包将被静默丢弃。应用程序会注意到数据包消失并采取纠正措施。
所有现代操作系统都默认启用 UDP 校验和。可以在套接字或操作系统级别禁用 IPv4 中的 UDP 校验和。这样做会减少发送方和接收方处理每个数据包的 CPU 开销。例如,如果应用程序单独计算自己的校验和,这可能是可取的。没有任何校验和,就无法保证接收到的字节与发送的字节相同。
关于tcp - UDP - 可选校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23373764/