其中之一是UDP甚至不是本地主机通信一个很好的选择的原因小的UDP数据包是由于out of ordering
,但如果我可以限制数据包的大小,不会发生碎裂,可靠性在localhost通信
例如限制为1KB的数据,那么我可以假设UDP的可靠性与TCP相同吗?
[1] Why do I get UDP datagrams out of order even with processes runnning locally?
其中之一是UDP甚至不是本地主机通信一个很好的选择的原因小的UDP数据包是由于out of ordering
,但如果我可以限制数据包的大小,不会发生碎裂,可靠性在localhost通信
例如限制为1KB的数据,那么我可以假设UDP的可靠性与TCP相同吗?
[1] Why do I get UDP datagrams out of order even with processes runnning locally?
不,这是不一样的。
获取in-sequence
packets
是当您谈论可靠性时,不仅仅是出现在图片中,还有更多。
从RFC 768(用户数据报协议):
该协议提供用于应用程序到 用最少的协议 机制将消息发送到其他程序的过程。 该协议是面向事务的,不保证交付和重复保护。应用程序需要 订购可靠交付数据流应使用 传输控制协议(TCP)[2]。
所以,通过保持小尺寸datagrams
,你可以确保外的顺序输送从未发生过,但仍不能保证数据在另一端正确接收。即使您正在本地主机上发送数据,这仍然很好。 A bit-error
可能会因为任何未知原因而发生,这就是为什么您的header
中有check-sum
。如果接收端的check-sum
不匹配,则packet
将被丢弃,而发件人不知道该信息。这在TCP
中不会发生,因为接收方在接收到正确数据时向发送方发送ACK
。