2012-11-30 75 views
-1

我想獲得對TCP的高層次理解,並且已經到了一個令人困惑的地步。消息發送死鎖的TCP規範

假設我們有一臺服務器S和一臺連接的客戶端C.

若S推送消息以C和C實現之前有一個消息中發送它也推送消息向S.

現在分別是在其中S正在等待它的狀態是消息ACK和C也是等待它的ACK。

規範如何避免這種死鎖?大量的在線資源很快進入了具體的實現細節,但我試圖找到關於如何處理這些死鎖的高層次解釋。

(我假設的答案已經做緩衝,但發現的話題沒有具體的信息。)

+0

您是在談論應用程序級別的確認還是TCP的內置確認? – Barmar

+0

我指的是TCP內置的ACK –

+1

只要接收到一個段就會發送ACK,他們不必等待應用程序發送消息。 – Barmar

回答

1

什麼僵局?這是一個全雙工(雙向)協議。具體而言,您所描述的情況並不妨礙雙方發送其確認。行爲完全在RFC 793中指定,它比您想象的要複雜得多。

+0

我知道這很複雜,我只是儘量簡化它,以便個人理解。所以如果你要描述通道方面的全雙工,TCP的實現需要兩個通道?還是有可能實現使用單個通道。 –

+0

@Alex它是一個單一的全雙工通道。 「簡化」是可以的,但是你實際上在做什麼會更好地描述爲「製造事物」。 – EJP