其中之一是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
。