为什么 TCP 损坏不那么明显?

为什么 TCP 损坏不那么明显?

首先,如果这个问题看起来有些简单,我深表歉意。

根据这个答案,TCP 数据包已损坏每时每刻没有校验和捕获它。

如果这种情况经常发生,为什么没有引起人们的注意?这难道不会导致图像损坏、脚本文件包含错误的 ascii 字符等吗?

当然,人们倾向于对关键文件运行 md5 校验和,但对于一般日常网络应用来说,为什么这不会造成比看起来更大的破坏呢?(似乎根本没有发生,但统计数据和逻辑在该答案中得到了证实)

答案1

如果这种情况经常发生……

但事实并非如此,你提到的答案也没有声称它确实如此。”经常“意味着大量数据包被损坏相对的绝对传输的数据包数量。但事实并非如此。虽然你提到的答案声称许多数据包损坏,损坏仍然存在稀有的相比绝对传输的包裹数量。

除此之外,TCP 上可能还有其他保护措施。例如,TL​​S(用于 HTTPS)几乎可以注意到所有数据损坏,因为用于检测数据操纵的 HMAC 比 TCP 中使用的简单 CRC 更强大(但也具有更多开销)。虽然在此阶段检测问题不会导致数据重新传输,就像 TCP 校验和错误一样,但连接只会被视为中断,因此与日常中断连接所遇到的许多其他错误没有区别。类似地,由于图像格式的工作方式,图像中的损坏数据通常几乎不可见,或者会导致整个图像损坏(无法渲染或在中间切断),这也类似于典型的连接问题。

答案2

您描述的是采样偏差。仅仅因为您个人在使用 TCP 时没有注意到很多损坏问题并不意味着它不会一直发生。它确实会发生。您链接到的答案在这个问题上相当完整。

相关内容