即使对于本地主机通信,UDP也不是一个好选择的原因之一是out of ordering
,但如果我可以限制数据报的大小,那么不会发生碎片,
e.g。限制为1KB的数据,那么我可以假设UDP的可靠性与TCP相同吗?
[1] Why do I get UDP datagrams out of order even with processes runnning locally?
答案 0 :(得分:0)
不,它不一样。
在谈到可靠性时,获取in-sequence
packets
并不是的唯一内容。还有其他内容。
来自RFC 768(用户数据报协议):
该协议为应用程序提供了一个过程 使用最少的协议将消息发送到其他程序 机制。 协议是面向事务的,交付和 不保证重复保护。需要的应用程序 订购可靠交付数据流应该使用 传输控制协议(TCP)[2]。
因此,通过保持datagrams
的小尺寸,您可以确保不会发生无序传送,但仍然无法确保在另一端正确接收数据。即使您在本地主机上发送数据,这仍然很好。 bit-error
可能因任何未知原因而发生,这就是check-sum
header
中check-sum
的原因。如果接收端的packet
没有匹配,则TCP
会被丢弃,而发送者不知道它。这不会发生在ACK
中,因为收件人在收到正确的数据时会向发件人发送{{1}}。