TCP傳輸控制協議的連接管理和擁塞控制
對于TCP傳輸控制協議的基本知識和結構我們已經有所了解了。現在我們來講述一下有關于它的連接管理和擁塞控制的相關問題。首先讓我們來了解一下什么是TCP傳輸控制協議的連接管理:
1,客戶機端向服務器端TCP發送一個特殊的TCP報文段,這個報文段不包含任何應用層數據。但是在報文段首部中的SYN比特被置為1(這個報文段叫SYN報文段).客戶機會隨機選擇一個起始序號,并將這個編號放置入首部中的相應字段;
2,當包含TCPSYN報文段的IP數據報傳到服務器主機,服務器會從該數據報中讀出TCPSYN報文段,為該TCP連接分配TCP緩存和變量,并向客戶機TCP發送允許連接的報文段(這個報文段也不包含應用層數據)。另外該報文段中填有對客戶機端報文段的確認號,以及在報文段中填充上相應的自己希望的初始序號。
3,客戶機端收到SYNACK報文段,也要給該TCP連接分配緩存和變量,客戶機還會向服務器端發送一個報文段,設置SYN為0,同時填有相應的確認號。
4,客戶機端和服務器端任意一端都可以提出終止連接。提出終止的一方,向另一方發送報文段,其中FIN字段設置為1,等待另一方ACK確認,之后,等待另一方發送的FIN報文段,確認之后,再等待一定時間,即可關閉連接。
TCP傳輸控制協議的擁塞控制:
1.考慮多個發送方,具有無限緩存的路由器;
2.考慮多個發送方,具有有限緩存的路由器;
3.考慮多個發送方,具有有限緩存的路由器,且在多跳路徑的條件下。
第1種情況,在分組速率接近鏈路容量時,分組經理的巨大排隊時延;
第2種情況,發送方在遇到大的時延情況下,還會因為不必要的重傳,引起路由器利用其鏈路帶寬來轉發不必要的分組拷貝;第3種情況,導致一個分組沿一條路徑被丟棄時,每個上游路由器用于轉發該分組到丟棄該分組而使用的傳輸容量最終被浪費掉了。
擁塞控制的方法有兩種,其1是端到端擁塞控制;其2是網絡輔助的擁塞控制。第1種方案是端系統由于網絡層沒有為運輸層擁塞控制提供顯示的支持。即使在網絡中存在擁塞,端系統也需要通過對網絡行為的觀察,才能予以確定。第2種方案是通過網絡層顯示的通知發送方。這個也是現在建議TCP協議采用的一種方案。目前用于的是ATMABR(可用比特率)擁塞控制方案。
端到端擁塞控制中,TCP發送方感知發生擁塞是通過有丟棄事件發生(丟棄事件是指,1.發送超時;2.連續收到3個ACK報文段)。
TCP傳輸控制協議擁塞控制算法主要包括以下三部分:
1)加性增,乘性減
2)慢啟動
3)對超時事件作出反應
TCP通過維持一個閾值(Threshold)的變量來管理這些較復雜的動態過程,它是用來確定慢啟動將結束,且避免擁塞將開始的窗口長度。
第1,加性增是指TCP發送方在如果沒有檢測到擁塞,則可能有可用的帶寬可被TCP利用,因此在TCP發送方每再收到一個連續的ACK報文段后,使得擁塞窗口增加1,直至擁塞出現。乘性減是指在TCP發送方連續收到3個重復的ACK報文段后,認為有報文段丟失,傳輸路徑可能發生了擁塞,這時迅速將擁塞窗口減半,如果還發生丟包,則繼續減半。
第2,慢啟動是指TCP發送方,在初始化階段,以很慢的速率開始傳輸,但是以指數速率快速增加其發送速率。每當一個傳輸的報文段被確認,擁塞窗口值就增加一倍,直至增加到閾值,然后采用加性增,乘性減的策略。第3,對因超時而檢測到的丟包事件和連續收到3個ACK報文段所作出的反應是不同的。對超時而檢測到的丟包事件,則是采用慢啟動的策略,連續收到3個ACK報文段則是采用乘性減的策略。因為此時,在丟包之后,但是仍然有報文段被接收端接受,這至少表明網絡仍然有接付能力。因此在連續收到三個ACK報文段后,會取消慢啟動階段的行為被稱為快速恢復。
當前大多數的TCP傳輸控制協議實現都是采用的Reno算法,及其變種。目前所提出的TCPVegas算法則是試圖在維持較好的吞吐量時避免擁塞。
基本思想
1.在分組丟失前,檢測在源端與目的地間的路由器中的擁塞情況。
2.當檢測出快要發生丟失時,線性的降低發送速率。這個通過觀察往返時延來預測。