gpt4 book ai didi

unix - UDP 数据包中的数据是否可以在应用程序级别被认为是正确的?

转载 作者:行者123 更新时间:2023-12-04 23:10:43 24 4
gpt4 key购买 nike

我记得在某处读到过,如果 udp 真正到达应用层,则数据可以假设为完整无缺。不考虑中间人发送假数据包的可能性,我在应用层收到的数据是否总是发送出去的数据?

最佳答案

UDP 使用 16 位可选校验和。未通过校验和测试的数据包将被丢弃。

假设一个完美的校验和,那么 65536 个损坏的数据包中有 1 个将不会被注意到。较低层也可能有校验和(或者甚至更强的方法,如 802.11 的前向纠错)。假设较低层每 n 个数据包(平均)向 IP 传递一个损坏的数据包,并且所有校验和完全不相关,那么您的应用程序每 65536*n 个数据包就会看到损坏。

示例:假设底层也使用 16 位校验和,因此每 2^16 * 2^16 = 2^32 个损坏的数据包中就有一个将通过损坏的数据包。如果 1/100 数据包损坏,则应用程序将平均每 2^32*100 个数据包看到 1 次损坏。

如果我们称这个 1/(65536*n) 数为 p,那么您可以将完全看不到损坏的几率计算为 (1-p)^i,其中 i 是发送的数据包数量。在该示例中,要获得高达 0.5% 的损坏几率,您需要发送近 22 亿个数据包。

(注意:在现实世界中,损坏的可能性取决于数据包数量和大小。此外,这些校验和都不是加密安全的,攻击者破坏数据包是微不足道的。以上仅适用于随机损坏。)

关于unix - UDP 数据包中的数据是否可以在应用程序级别被认为是正确的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1526485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com