2012-05-25 15 views
0

我發現了一個有關TCP重傳隊列的有趣問題,我一直在閱讀this
,我可以從這篇文章中看到有很多關於TCP的定時器,但我沒有得到的是如何它們都彼此同步,例如,當被髮送的消息時,它被放置在重傳隊列,並且當時間隊列達到0要重傳的重傳計時器將檢查這個隊列。 這個隊列是一個Queue數據結構嗎?它似乎是兩個TCP功能會檢查這個隊列,第一個是重發隊列重新發送消息,並且synak計時器,刪除已成功傳送數據包,在這種情況下,必須有之間的一些同步機制那些定時器在訪問相同的隊列時,對嗎?tcp重發隊列

能你的任何一個幫助理解它是如何工作的?

+1

接受一些更多的答案請。 –

回答

0

我認爲你有定時器的錯誤觀念。這不是一個應用程序。這些是操作系統定時器:不保持同步的問題。我認爲你對隊列也有錯誤的概念:我不清楚'這個隊列是一個隊列數據結構'是什麼意思?這個問題並不合理。隊列是一個隊列。在這種情況下,它又是一個內核隊列。除了內核作者之外,它是如何實現的並不是任何人的關注。

+0

對不起,如果我不清楚,我的問題是兩個定時器如何更新相同的隊列,例如,如果一次達到0,則重傳計時器將更新隊列,如果SYNACK計時器收到ACK,現在正在嘗試更新重發隊列。我不確定誰會從重傳隊列中刪除已確認的數據包,它是SYNACK計時器還是別的。請分享任何可以使這個權利的文件? –

+0

@JackJordan我建議在[RFC 793]好好看看(http://www.ietf.org/rfc/rfc793.txt)。 – EJP

+0

感謝EJP的鏈接,所以引用了它的形式:「當TCP傳輸一個包含數據的段時,它將一個副本放在重傳隊列中並啓動一個定時器;當接收到對該數據的確認時,該段將從隊列中刪除如果在定時器用完之前沒有收到確認,則重新發送該段。「這是否意味着每個數據包都有一個定時器?以及如果同步被接收並且在同一時間計時器到達0時會發生什麼呢? –