2012-03-08 43 views
0

通常,UDP並不保證數據包將按照它們發送的相同順序到達。 但是在一個局域網中,如果通過一個交換機和路由連接的發送方和接收方永遠不會改變,那麼UDP數據包的所有順序都會改變嗎?局域網中udp數據包的持久順序如何?

特別是可以在網卡和應用程序之間改變UDP數據包的順序?例如在網卡驅動程序?

我可以這樣說,如果兩臺計算機只通過交換機連接,那麼在100%的情況下,UDP數據包的順序將保持不變?

回答

2

他們可能會在該測試設置中按順序到達,但依靠這個事實是一個真的壞主意。只需在數據包中添加一個序列號或者在適當的情況下使用TCP。

+0

我有序列號,我也有恢復算法。我需要決定是否應該使用簡單的算法並丟棄以錯誤順序到達的數據包(並在稍後通過tcp恢復它們),或者我需要更多的不依賴數據包順序的可靠(並且更慢)的算法。即問題是什麼更好「快速接收(100-'a')%數據包並且」數據包速度非常慢「或」接收100%數據包不是很快「。要回答這個問題,我需要知道'a' :) – javapowered 2012-03-08 15:07:53

+0

我猜想對於真實世界的應用程序(不僅僅是2臺主機和一臺交換機),你應該總是假定有一小部分被丟棄的數據包。如果有疑問,只需使用這兩個選項運行一些基準測試,可能需要以下幫助:http://stackoverflow.com/questions/614795/simulate-delayed-and-dropped-packets-on-linux – xato 2012-03-08 15:26:26

+0

我的真實世界的應用程序(交易軟件)通過一座橋樑與股票交易所連接... – javapowered 2012-03-08 15:39:03