售前電話
135-3656-7657
售前電話 : 135-3656-7657
TCP擁塞控制
TCP擁塞控制也采用窗口機(jī)制,稱為擁塞窗口,窗口大小根據(jù)網(wǎng)絡(luò)擁塞情況動(dòng)態(tài)調(diào)整。由于目前通信線路大都采用光纖,誤碼率極低,報(bào)文段重發(fā)的原因基本上是傳輸時(shí)延過長,因此可以用超時(shí)重發(fā)作為網(wǎng)絡(luò)擁塞的檢測標(biāo)志。
擁塞窗口調(diào)整有兩種常用算法:
1.慢速起動(dòng)算法
擁塞窗口初值置為連接的最大段長。發(fā)送方一開始就發(fā)送一個(gè)最大報(bào)文段。如果在定時(shí)器到時(shí)前收到確認(rèn),則擁塞窗口大小加倍、發(fā)送方再發(fā)送兩個(gè)最大報(bào)文段。一般來說,如果擁塞窗口為n個(gè)最大段長,發(fā)出n個(gè)最大報(bào)文段都收到正常確認(rèn),則擁塞窗口大小增加為2n;接若如果發(fā)出2n個(gè)最大報(bào)文段后發(fā)生超時(shí)重傳,則擁塞窗口退回n。該算法名為慢速起動(dòng),實(shí)際上窗口大小呈幾何級(jí)數(shù)增長,速度非常快。這是所有TCP實(shí)現(xiàn)必須支持的基本算法。
2.門限算法
在慢速算法的基礎(chǔ)上增加一個(gè)門限參數(shù)。門限初值為64kB。當(dāng)發(fā)生超時(shí)重傳時(shí),門限值減為當(dāng)前擁塞窗口的一半,擁塞窗口復(fù)位到一個(gè)最大段長。然后用慢速起動(dòng)算法逐漸加大擁塞窗口。當(dāng)擁塞窗口大小達(dá)到門限值后,轉(zhuǎn)為線性增長,也就是每發(fā)出一組長度等于擁塞窗口的報(bào)文并正常確認(rèn)后,擁塞窗口增加一個(gè)最大段長。
圖2.40說明這一過程:
設(shè),連接的最大段長為1KB,擁塞窗口初值為64kB,發(fā)生超時(shí)重傳,于是門限減半為32kB,擁塞窗口退為1KB,按慢速起動(dòng)法兒何增長。至第6次發(fā)送時(shí)擁塞窗口到達(dá)32kB,其后改為線性增長。至第13次發(fā)送40kB報(bào)文后發(fā)生重傳,于是門限又減半為16kB,擁塞窗口重新回到1KB,重復(fù)以上過程。
需要指出的是,考慮到擁塞控制后,TCP層有兩個(gè)窗口:傳輸滑功窗口和擁塞窗口,前者由接收方根據(jù)緩沖區(qū)可用空間動(dòng)態(tài)調(diào)整,后者由發(fā)送方根據(jù)重傳情況自適應(yīng)調(diào)整。TCP實(shí)際允許發(fā)送的字節(jié)數(shù)為兩個(gè)窗口中的較小值。
用戶數(shù)據(jù)協(xié)議(UDP)
UDP提供的是無連接的運(yùn)輸層服務(wù),過程簡單,但不可靠。許多只包含一次請求和一次響應(yīng)的客戶-服務(wù)器應(yīng)用都采用UDP,因?yàn)樗鼰o需建連和拆連。話音、視頻等實(shí)時(shí)信號(hào)傳送只能U用DP,因?yàn)樗鼈儫o法重傳。
UDP的頭部結(jié)構(gòu)如圖2.41所示:
其長度為8個(gè)字節(jié)。源和目的端口的意義和TCP相同。由于它們是兩個(gè)不同的協(xié)議(NSAP),因此可以獨(dú)立分配各自的端口號(hào)。如果一個(gè)進(jìn)程既能使用TCP,也能使用UDP服務(wù),一般傾向于在兩個(gè)協(xié)議中分配相同的端口號(hào)。UDP長UDP段的頭部結(jié)構(gòu)度包括頭部和數(shù)據(jù)部分。UDP校驗(yàn)和的計(jì)算和TCP相同,校驗(yàn)對(duì)象包括段頭部、數(shù)據(jù)部分和圖2.33所示的偽頭部。