最后更新時間:2010-08-13 06:43:46
?TCP采用“帶重傳的肯定確認”技術來實現(xiàn)傳輸的可靠性。簡單的“帶重傳的肯定確認”是指與發(fā)送方通信的接收者,每接收一次數據,就送回一個確認報文,發(fā)送者對每個發(fā)出去的報留一份記錄,等到收到確認之后再發(fā)出下一報文分組。發(fā)送者發(fā)出一個報文分組時,啟動一個計時器,若計時器計數完畢,確認還未到達,則發(fā)送者重新送該報文分組。
簡單的確認重傳嚴重浪費帶寬,TCP還采用一種稱之為“滑動窗口”的流量控制機制來提高網絡的吞吐量,窗口的范圍決定了發(fā)送方發(fā)送的但未被接收方確認的數據報的數量。每當接收方正確收到一則報文時,窗口便向前滑動,這種機制使網絡中未被確認的數據報數量增加,提高了網絡的吞吐量。
TCP通信建立在面向連接的基礎上,實現(xiàn)了一種“虛電路”的概念。雙方通信之前,先建立一條連接,然后雙方就可以在其上發(fā)送數據流。這種數據交換方式能提高效率,但事先建立連接和事后拆除連接需要開銷。TCP連接的建立采用三次握手的過程,整個過程由發(fā)送方請求連接、接收方再發(fā)送一則關于確認的確認三個過程組成。
TCP的擁塞控制和流量控制是一個比較復雜的問題,它包括發(fā)送端發(fā)送報文的大小和報文的時機,接收端發(fā)送確認和窗口大小的策略。同時還要兼顧不同網絡的具體情況,算法要具有一定的自適應性,在保證可靠傳輸的同時,盡量提高傳輸效率。
這里主要對目前公認的比較行之有效的一些擁塞控制和流量控制算法進行介紹和驗證。主要有:TCP的滑動窗口機制、TCP的糊涂窗口綜合癥和Nagle算法分析、網絡擁塞的處理、TCP的超時與重傳、TCP的窗口探查技術、TCP的快重傳和快恢復。
TCP的滑動窗口機制
為了提高報文段的傳輸速率,TCP采用大小可變的滑動窗口進行流量控制。窗口大小的單位是字節(jié)。發(fā)送窗口在連接建立時由雙方商定,但在通信過程中,接收端可根據自己的接收緩存的大小,隨時動態(tài)地調整發(fā)送端的發(fā)送窗口的上限值。這就是接收端窗口rwnd(receiverwindow),這個值被放在接收端發(fā)送的TCP報文段首部的窗口字段中。
同時,發(fā)送端根據其對當前網絡擁塞程度的估計而確定的窗口值,叫做擁塞窗口cwnd(congestionwindow)。其大小與網絡的帶寬和時延密切相關。
發(fā)送端設置的當前能夠發(fā)送數據量的大小叫做發(fā)送窗口,發(fā)送窗口的上限值由下面公式確定:
發(fā)送窗口的上限值=Min[cwnd,rwnd]
rwnd由接收端根據其接收緩存確定,發(fā)送端確定cwnd比較復雜,詳細情況在慢啟動和擁塞避免一節(jié)中敘述。