我讀了一些關於PAWS(防護環繞序列)的文章。這很有趣。我不知道如何實施這些複雜的事情來保證TCP的可靠性。如果沒有PAWS,在數據速率較高的情況下,可能會收到一個延遲的舊數據包,並被誤認爲是新數據包。延遲的數據包能持續多久?
我之前沒有多想這件事。但是現在我開始想知道一個數據包可以留在網絡中多長時間(尤其是UDP數據包,如果數據包的類型很重要的話)。數據包可能會被延遲,在交付之前暫時停留在網絡中。但它只能停留很短的時間,對吧?
換句話說,在斷定它不會到來之前需要多長時間等待(UDP)數據包?
如果有答案,那麼它是如何確定的?如何估計它? (用於編寫與分組超時有關的程序)
簡化示例:服務器接收到2個UDP數據包。每個都包含一個整數以指示順序。它拿到了1號和3號。它知道2號要麼延遲要麼丟失。一段時間後,2號仍然沒有來,那麼它的結論是數據包丟失。數據包不再存在。 (因此,將來不會對新數據包造成任何麻煩,類似於PAWS希望解決的問題。)但是,在結束No.2之前服務器應該等待多長時間不再存在?
根據您的編輯,這取決於使用UDP的應用程序。 UDP本身並沒有以任何特定的順序尋找任何特定的數據包。從網絡協議的角度來看,這個問題沒有任何意義;這是一個應用程序問題。有些應用程序很在意,他們已經實現了自己的可靠性程序,或者他們使用TCP。 –