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