小型UDP数据包在localhost通信中的可靠性

时间:2014-04-01 15:50:05

标签: sockets networking tcp linux-kernel udp

即使对于本地主机通信,UDP也不是一个好选择的原因之一是out of ordering,但如果我可以限制数据报的大小,那么不会发生碎片,

e.g。限制为1KB的数据,那么我可以假设UDP的可靠性与TCP相同吗?

[1] Why do I get UDP datagrams out of order even with processes runnning locally?

1 个答案:

答案 0 :(得分:0)

不,它不一样。
在谈到可靠性时,获取in-sequence packets 并不是的唯一内容。还有其他内容。

来自RFC 768(用户数据报协议):

  

该协议为应用程序提供了一个过程   使用最少的协议将消息发送到其他程序   机制。 协议是面向事务的,交付和   不保证重复保护。需要的应用程序   订购可靠交付数据流应该使用   传输控制协议(TCP)[2]。

因此,通过保持datagrams的小尺寸,您可以确保不会发生无序传送,但仍然无法确保在另一端正确接收数据。即使您在本地主机上发送数据,这仍然很好。 bit-error可能因任何未知原因而发生,这就是check-sum headercheck-sum的原因。如果接收端的packet没有匹配,则TCP会被丢弃,而发送者不知道它。这不会发生在ACK中,因为收件人在收到正确的数据时会向发件人发送{{1}}。