我读到过两篇深入描述 TCP 和 UDP 连接工作原理的文章。但是,它们之间存在某种不一致。一篇文章告诉我 UDP 根本不进行错误检查,而另一篇文章提到 UDP 会进行某种错误检查,但没有恢复或更正。我想知道这两篇文章中哪一篇最正确?
提前致谢!
答案1
是的,第二篇文章是对的。UDP 协议也有错误检查,但没有任何错误恢复。
- 错误检测:检测帧上发生的错误(FCS 负责)
- 错误恢复:使用字节序列来检测是否发生错误,如果发生则重新发送。
答案2
UDP 确实有一个 16 字节的校验和。正如 Gnouc 提到的,它具有一些错误检测属性,但不能进行恢复(通过像 TCP 那样重新发送数据包)。这篇文章可能指的是 UDP 没有任何关于数据包已收到的积极确认。(即,如果数据包丢失,则无法检测。)