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