![TCP 校验和,为什么?](https://linux22.com/image/1217669/TCP%20%E6%A0%A1%E9%AA%8C%E5%92%8C%EF%BC%8C%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F.png)
为什么当较低层无论如何都会进行完整性检查(例如以太网 CRC)时,TCP 需要校验和?
答案1
TCP 协议保证准确交付,无论底层机制如何。但不能保证它所运行的每个协议都会进行任何类型的完整性检查。 滑例如,没有错误检测。
答案2
因为它是一种起源于 20 世纪 70 年代早期的协议。当时,通信的分层模型还不是常识。
我个人认为它只是协议设计早期的遗留物。
这就是我认为这个校验和很疯狂的原因:
- 它太弱,无法提供有意义的保护
- 计算起来仍然很痛苦(特别是在微控制器上。这浪费了周期)
- 它不能防止操纵(因为它很容易修复)
- 许多实现无论如何都会忽略它