版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第09章 傳輸層一 傳輸層概述AP1 AP2 1 AP3 AP4 2 3 4 5 1 2 3 4 5 AP1 AP2 AP4 AP3 router router LAN WAN LAN 運(yùn)輸層提供進(jìn)程到進(jìn)程的交付服務(wù) IP的作用范圍 運(yùn)輸層協(xié)議TCP / UDP的作用范圍 主機(jī)A 主機(jī)B 1 傳輸層的功能n 提供端到端的交付服務(wù)n 分段和重組n 提供端到端的可靠通信保證(檢錯(cuò)機(jī)制、應(yīng)答機(jī)制、超時(shí)重發(fā)機(jī)制)n 按序交付(緩沖機(jī)制)n 流量控制(窗口機(jī)制)n 擁塞控制2 什么是端到端的交付端到端的交付實(shí)際是一個(gè)多路復(fù)用和多路分解的過程,下面的例子有助于我們理解傳輸層的多路復(fù)用和多路分解功能我們先考
2、察公司之間通過郵政系統(tǒng)互發(fā)信件的情景:公司的收發(fā)室為每個(gè)部門分配了一個(gè)信箱,各個(gè)部門都把要發(fā)出去的信件放到各自的信箱里,并從信箱里取走發(fā)給本部門的信件;收發(fā)室的工作人員負(fù)責(zé)從各部門的信箱里收集要發(fā)出去的信件,然后交給每天到家門口來的郵政車,以及從郵政車上取下發(fā)往本公司各部門的信件并分投到各部門的信箱之中主機(jī)之間通信的情景跟公司間通信的情景很相似:主機(jī)中各個(gè)應(yīng)用進(jìn)程將要發(fā)出去的數(shù)據(jù)塊放到各自的傳輸層服務(wù)訪問點(diǎn)(TSAP)中,并從各自的TSAP中取走發(fā)給本進(jìn)程的數(shù)據(jù)塊;傳輸層從各個(gè)進(jìn)程的TSAP中收集要發(fā)出去的數(shù)據(jù)塊,給它們加上傳輸層首部,構(gòu)成報(bào)文段,交給網(wǎng)絡(luò)層(這叫做多路復(fù)用);傳輸層接收來自網(wǎng)
3、絡(luò)層的報(bào)文段,根據(jù)報(bào)文段的首部信息將它們分別定向各到目標(biāo)進(jìn)程的TSAP(這叫做多路分解)公司 = 主機(jī)部門 = 應(yīng)用進(jìn)程收發(fā)室 = 運(yùn)輸層郵政系統(tǒng) = 網(wǎng)絡(luò)層信箱 = 傳輸層服務(wù)訪問點(diǎn)TSAP3 端口(Port)和套接字(Socket)2TFTP客戶進(jìn)程 2TPDU TFTP服務(wù)器進(jìn)程 端口 51000 端口 69 應(yīng)用層 出隊(duì)列 入隊(duì)列 出隊(duì)列 入隊(duì)列 n 端口就是傳輸層服務(wù)訪問點(diǎn)TSAP,每個(gè)網(wǎng)絡(luò)應(yīng)用進(jìn)程都有1到多個(gè)端口,其作用相當(dāng)于信箱:網(wǎng)絡(luò)應(yīng)用進(jìn)程將要發(fā)送的數(shù)據(jù)塊放在各自的端口中;傳輸層從各網(wǎng)絡(luò)應(yīng)用進(jìn)程的端口中收集數(shù)據(jù)塊,給它們加上源、目端口號(hào)等控制字段,構(gòu)成報(bào)文段,然后交網(wǎng)絡(luò)層傳送;
4、傳輸層接收來自網(wǎng)絡(luò)層的數(shù)據(jù)報(bào),根據(jù)它們的目的端口號(hào)字段將它們包含的數(shù)據(jù)定向到恰當(dāng)?shù)亩丝谥校痪W(wǎng)絡(luò)應(yīng)用進(jìn)程從各自的端口中取走發(fā)給它們的數(shù)據(jù)塊;端口通常就是報(bào)文隊(duì)列,如上圖所示n 端口號(hào) 在一個(gè)端系統(tǒng)內(nèi)有多個(gè)端口,端口號(hào)就是端口標(biāo)識(shí),也就是傳輸層地址n 端系統(tǒng)中的端口總是和運(yùn)行于其上的一個(gè)網(wǎng)絡(luò)應(yīng)用進(jìn)程相關(guān)聯(lián),從這個(gè)意義上講,在一個(gè)端系統(tǒng)內(nèi),端口號(hào)同時(shí)也是網(wǎng)絡(luò)應(yīng)用進(jìn)程的標(biāo)識(shí)n 有兩類端口號(hào) :一類是周知端口號(hào),編號(hào)范圍是0 1023,每當(dāng)開發(fā)一種新的網(wǎng)絡(luò)服務(wù)程序,必須給它分配一個(gè)周知端口號(hào),比如FTP服務(wù)器的端口號(hào)是21,HTTP服務(wù)器的端口號(hào)是80,等等;另一類是一般端口號(hào),用來隨時(shí)分配給請(qǐng)求通信的
5、客戶進(jìn)程n 端口號(hào)僅具有本地意義,在一個(gè)端系統(tǒng)上運(yùn)行的多個(gè)網(wǎng)絡(luò)應(yīng)用進(jìn)程的端口號(hào)不能重疊,運(yùn)行在不同的端系統(tǒng)上的網(wǎng)絡(luò)應(yīng)用進(jìn)程的端口號(hào)可以重疊,比如運(yùn)行在多個(gè)端系統(tǒng)上的HTTP服務(wù)器進(jìn)程的端口號(hào)都是80。為了唯一地標(biāo)識(shí)一個(gè)網(wǎng)絡(luò)應(yīng)用進(jìn)程的端口,除端口號(hào)外,還必須加上IP地址,IP地址加端口號(hào)就是所謂的套接字;在TCP / IP協(xié)議中,UDP套接字是一個(gè)2元組:(IP地址,端口號(hào));TCP套接字是一個(gè)4元組:(源IP地址,源端口號(hào),目的IP地址,目的端口號(hào))二 互聯(lián)網(wǎng)的傳輸層協(xié)議1 互聯(lián)網(wǎng)的兩個(gè)傳輸層協(xié)議互聯(lián)網(wǎng)的傳輸層協(xié)議 網(wǎng)絡(luò)接口層網(wǎng)絡(luò)層傳輸層應(yīng)用層TCP UDP 互聯(lián)網(wǎng)的傳輸層協(xié)議有兩個(gè)傳輸控制協(xié)
6、議TCP和用戶數(shù)據(jù)報(bào)協(xié)議UDP。TCP提供可靠的、面向連接的運(yùn)輸服務(wù),UDP提供不可靠的、無連接的運(yùn)輸服務(wù)兩個(gè)對(duì)等的傳輸層實(shí)體在通信時(shí)傳送的數(shù)據(jù)單元叫作傳輸層協(xié)議數(shù)據(jù)單元 TPDU;TCP傳送的協(xié)議數(shù)據(jù)單元是 TCP 報(bào)文段;UDP 傳送的協(xié)議數(shù)據(jù)單元是 UDP 報(bào)文或用戶數(shù)據(jù)報(bào)2 用戶數(shù)據(jù)報(bào)協(xié)議UDP1)UDP概述n UDP提供不可靠的、無連接的運(yùn)輸服務(wù)n UDP 只在 IP 的數(shù)據(jù)報(bào)服務(wù)之上增加了很少一點(diǎn)的功能,也就是端口的功能和差錯(cuò)檢測(cè)的功能。UDP不提供差錯(cuò)恢復(fù)、流量控制和擁塞控制功能,不保證按序交付n 發(fā)送數(shù)據(jù)時(shí)無須事先建立連接,收到一個(gè)UDP報(bào)文時(shí)無須應(yīng)答n UDP的優(yōu)點(diǎn):UDP的
7、主機(jī)無須維護(hù)復(fù)雜的連接狀態(tài)表;UDP用戶數(shù)據(jù)報(bào)只有8字節(jié)的首部開銷;網(wǎng)絡(luò)出現(xiàn)擁塞時(shí)不會(huì)使源主機(jī)的發(fā)送速率降低。這對(duì)某些實(shí)時(shí)應(yīng)用是很重要的2)UDP用戶數(shù)據(jù)報(bào)的格式目的端口號(hào) 源端口號(hào) 長(zhǎng)度 檢查和 應(yīng)用層報(bào)文 UDP用戶數(shù)據(jù)報(bào)格式 3 傳輸控制協(xié)議TCP1)TCP概述TCP 發(fā)送緩存 端口 應(yīng)用進(jìn)程1 TCP 接收緩存 端口 應(yīng)用進(jìn)程2 報(bào)文段 報(bào)文段 報(bào)文段 n TCP是面向連接的協(xié)議,即位于兩個(gè)端系統(tǒng)中的一對(duì)應(yīng)用進(jìn)程在交換數(shù)據(jù)前,這兩個(gè)端系統(tǒng)中的TCP必需事先交換一系列用于控制目的的報(bào)文段,目的是為那一對(duì)進(jìn)程建立一個(gè)TCP連接。建立TCP連接實(shí)質(zhì)就是兩個(gè)端系統(tǒng)中的TCP為連接的雙方分配資源
8、,初始化若干狀態(tài)變量n 一個(gè)TCP連接包含以下要素:一臺(tái)主機(jī)上的緩存、一組變量、與一個(gè)進(jìn)程關(guān)聯(lián)的套接字,以及另一臺(tái)主機(jī)上的緩存、一組變量、與一個(gè)進(jìn)程關(guān)聯(lián)的套接字n TCP連接既不是電路交換網(wǎng)絡(luò)中的端到端TDM或FDM電路,也不是一條虛電路,原因在于TCP連接狀態(tài)僅保存在端系統(tǒng)中,中繼結(jié)點(diǎn)不會(huì)維持TCP連接狀態(tài)n TCP連接的雙方以全雙工方式通信,圖中為了簡(jiǎn)潔只表現(xiàn)了一個(gè)方向上的數(shù)據(jù)流。TCP連接僅支持點(diǎn)對(duì)點(diǎn)方式,不支持多點(diǎn)方式,因此TCP不支持廣播和多播n 一旦建立起TCP連接,兩個(gè)應(yīng)用進(jìn)程就可以交換數(shù)據(jù)了,大致的過程如上圖所示,同樣是為了簡(jiǎn)潔沒有表現(xiàn)出IP和鏈路層的動(dòng)作n 發(fā)送進(jìn)程發(fā)送數(shù)據(jù)的
9、速度和接收進(jìn)程接收數(shù)據(jù)的速度不相同,TCP需要緩存暫存數(shù)據(jù)。每個(gè)方向上都有兩個(gè)緩存,發(fā)送緩存和接收緩存,緩存的數(shù)據(jù)結(jié)構(gòu)可能是環(huán)形字節(jié)隊(duì)列,如下圖所示。發(fā)送緩存中的的位置分為3類:白色為空位置,發(fā)送進(jìn)程可以將數(shù)據(jù)填入到空位置;淺灰色位置存放的是TCP將要要發(fā)送的字節(jié);深灰色位置存放的字節(jié)已發(fā)送出去,但還沒被確認(rèn),一旦其中的字節(jié)被確認(rèn),存放被確認(rèn)字節(jié)的位置即可被發(fā)送進(jìn)程再利用。接收緩存中的位置分為2類:白色表示空閑位置,從網(wǎng)絡(luò)接收的數(shù)據(jù)存放到這個(gè)區(qū)域;灰色位置存放已接收的字節(jié),這些字節(jié)可以被接收進(jìn)程讀取,當(dāng)其中的字節(jié)接收進(jìn)程被讀取后,其位置可被再利用發(fā)送進(jìn)程 TCP 接收進(jìn)程 TCP 字節(jié)流 發(fā)送
10、 緩存 接收 緩存 下一個(gè)要 寫入的字節(jié) 下一個(gè)要 發(fā)送的字節(jié) 未發(fā)送 未讀取 已發(fā)送等待確認(rèn)的字節(jié) 下一個(gè)要 讀取的字節(jié) 下一個(gè)要 接收的字節(jié) 2)TCP報(bào)文段首部格式源端口號(hào)目的端口號(hào)序號(hào)確認(rèn)號(hào)數(shù)據(jù)偏移保留 URG ACK PSH RST SYN FIN 窗口檢驗(yàn)和緊急指針選項(xiàng)(長(zhǎng)度可變)填充n 源端口號(hào)(2B)和目的端口號(hào)(2B) 源端口號(hào)就是發(fā)放方進(jìn)程的端口號(hào),目的端口號(hào)就是接收方進(jìn)程的端口號(hào)。TCP借助于這兩個(gè)字段實(shí)現(xiàn)多路復(fù)用和多路分解功能n 序號(hào)(4B) 序號(hào)字段的值指示本報(bào)文段所攜帶的數(shù)據(jù)的首字節(jié)序號(hào)。比如A、B兩個(gè)進(jìn)程建立了TCP連接,A通過該連接向B發(fā)送了500000B,假設(shè)
11、TCP這50000B數(shù)據(jù)分成500個(gè)片段,每個(gè)片段段長(zhǎng)度為1000B,第一個(gè)片段的首字節(jié)編號(hào)為0,第二個(gè)片段的首字節(jié)編號(hào)為1000,第三個(gè)片段的首字節(jié)編號(hào)為2000,。然后TCP會(huì)將這500個(gè)片段封裝成500個(gè)報(bào)文段交網(wǎng)絡(luò)層發(fā)送,則第一個(gè)報(bào)文段的序號(hào)字段填入0,第二個(gè)報(bào)文段的序號(hào)字段填入1000,第三個(gè)報(bào)文段的序號(hào)字段填入2000 ,n 確認(rèn)號(hào)(4B) 期望收到對(duì)方的下一個(gè)報(bào)文段的數(shù)據(jù)的首字節(jié)序號(hào)n 首部長(zhǎng)度(4b) 由于存在選項(xiàng)字段,所以要設(shè)首部長(zhǎng)度字段指示TCP首部的字節(jié)數(shù)。需要強(qiáng)調(diào)的是該字段的單位是32比特字n 保留(6b) 留著以后使用,目前應(yīng)置為0n 緊急比特URG(1b) 為1表示
12、緊急指針字段有效。它告訴系統(tǒng)此報(bào)文段中有緊急數(shù)據(jù)(相當(dāng)于高優(yōu)先級(jí)數(shù)據(jù))應(yīng)盡快傳送n 確認(rèn)比特ACK(1b) 為1表示確認(rèn)號(hào)字段有效n 急迫比特PSH(1b) 接收方TCP收到PSH位置1的報(bào)文段后,會(huì)立即交付接收方應(yīng)用進(jìn)程,而不是等接收緩存滿后再上交n 復(fù)位比特RST(1b) 為1表示TCP連接出現(xiàn)嚴(yán)重錯(cuò)誤,需立即釋放連接,然后重建TCP連接n 同步比特SYN(1b) 為1表示是一個(gè)連接請(qǐng)求或連接接受報(bào)文段n 終止比特FIN(1b) 為1表示此報(bào)文段的發(fā)送方已發(fā)完數(shù)據(jù),請(qǐng)求釋放連接n 窗口(2B) 用來控制對(duì)方發(fā)送的數(shù)據(jù)量,單位是字節(jié)。TCP 連接的一端根據(jù)設(shè)置的緩存空間大小確定自己的接收窗口
13、大小,然后通知對(duì)方以確定對(duì)方的發(fā)送窗口的上限n 檢查和(2B) 檢驗(yàn)和字段檢驗(yàn)的范圍包括首部和數(shù)據(jù)這兩部分n 緊急指針(2B) 指出本報(bào)文段中緊急數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)n 選項(xiàng) TCP 只規(guī)定了一種選項(xiàng),即最大報(bào)文段長(zhǎng)度 MSS ,該字段旨在告訴對(duì)方 TCP,我的緩存所能接收的報(bào)文段的數(shù)據(jù)字段的最大長(zhǎng)度是 MSS 個(gè)字節(jié)3)TCP如何確保傳輸?shù)目煽啃訲CP確保傳輸可靠性的措施包括計(jì)算校驗(yàn)和、給要發(fā)送的數(shù)據(jù)以字節(jié)為單位編號(hào)、在報(bào)文段中捎帶確認(rèn)信息、重傳TCP如何計(jì)算檢查和?TCP通過計(jì)算檢查和提供檢錯(cuò)功能,校驗(yàn)的范圍包括首部、數(shù)據(jù)和偽首部;偽首部長(zhǎng)度為12B,其中包括了源IP地址(4B)、目的
14、IP地址(4B)、協(xié)議號(hào)、報(bào)文段長(zhǎng)度等字段,偽首部?jī)H僅用于計(jì)算檢查和;在計(jì)算檢查和時(shí),臨時(shí)將TCP首部中的檢查和字段置0;如果數(shù)據(jù)部分的長(zhǎng)度是奇數(shù)個(gè)字節(jié),則在其后臨時(shí)補(bǔ)一個(gè)全0字節(jié),計(jì)算完檢查和后刪除該字節(jié);將偽首部、首部、數(shù)據(jù)看成是一個(gè)16位長(zhǎng)的字序列,將所有的字進(jìn)行二進(jìn)制反碼求和,即最高位上有進(jìn)位時(shí)不進(jìn)位,而是在和的最低位上加1,然后將求和的結(jié)果取反,得到的結(jié)果就是檢查和TCP如何給要發(fā)送的數(shù)據(jù)編號(hào)?TCP把一個(gè)連接中發(fā)送的所有數(shù)據(jù)字節(jié)都編了號(hào),且兩個(gè)方向上的數(shù)據(jù)流中的字節(jié)編號(hào)是彼此獨(dú)立的。編號(hào)不一定總是從0開始,TCP生成一個(gè)0232-1之間的隨機(jī)數(shù)作為第一個(gè)字節(jié)的編號(hào)。比如主機(jī)A中的進(jìn)
15、程1通過TCP連接向主機(jī)B中的進(jìn)程2一共發(fā)送了50000字節(jié)的數(shù)據(jù),這些數(shù)據(jù)被主機(jī)A中的TCP看成是一個(gè)字節(jié)流,字節(jié)流的首字節(jié)序號(hào)是0,其后的字節(jié)序號(hào)依次是1、2、3、49999假設(shè)主機(jī)A中的TCP將這50000B數(shù)據(jù)等分成500個(gè)的數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊的大小是1000B,則第一個(gè)數(shù)據(jù)塊的首字節(jié)序號(hào)是0,第二個(gè)數(shù)據(jù)塊的首字節(jié)序號(hào)是1000,第三個(gè)數(shù)據(jù)塊的首字節(jié)序號(hào)是2000,依次類推主機(jī)A中的TCP將這500個(gè)數(shù)據(jù)塊封裝成500個(gè)報(bào)文段交網(wǎng)絡(luò)層發(fā)送,它將在第一個(gè)報(bào)文段的序號(hào)字段填入0,在第二個(gè)報(bào)文段的序號(hào)字段填入1000,在第3個(gè)報(bào)文段的序號(hào)字段中填入2000,依次類推。一言蔽之,報(bào)文段中的序號(hào)
16、字段的值就是它所攜帶的數(shù)據(jù)塊的首字節(jié)序號(hào)TCP如何對(duì)收到的數(shù)據(jù)進(jìn)行確認(rèn)?規(guī)則1 一方向另一方發(fā)送報(bào)文段時(shí),通過報(bào)文段的確認(rèn)號(hào)字段告訴對(duì)方它期待的下一個(gè)數(shù)據(jù)字節(jié)的序號(hào)是多少。比如主機(jī)A中的進(jìn)程1和主機(jī)B中的進(jìn)程2通過TCP連接交換數(shù)據(jù),在某一時(shí)刻,主機(jī)B中的TCP收到一個(gè)報(bào)文段,其中包含了進(jìn)程1發(fā)給進(jìn)程2的數(shù)據(jù),假設(shè)該報(bào)文段的確認(rèn)號(hào)字段的值為ACKN,于是主機(jī)B中的TCP就明白了:進(jìn)程2發(fā)給進(jìn)程1的數(shù)據(jù)中,序號(hào)為ACKN -1的字節(jié)以及在它之前的字節(jié)已經(jīng)被主機(jī)A中的TCP收到,正期待接收序號(hào)為ACKN的字節(jié)規(guī)則2 如果一方?jīng)]有數(shù)據(jù)要發(fā)送,并且它接收到對(duì)方一個(gè)按序到達(dá)的報(bào)文段,同時(shí)前一個(gè)按序到達(dá)的
17、報(bào)文段已經(jīng)確認(rèn)過了,它會(huì)等待500毫秒,如果500毫秒內(nèi)沒有收到對(duì)方下一個(gè)按序到達(dá)的報(bào)文段,它會(huì)向?qū)Ψ桨l(fā)一個(gè)不包含數(shù)據(jù)的ACK報(bào)文段,通過其中的確認(rèn)號(hào)字段告訴對(duì)方它期待的下一個(gè)數(shù)據(jù)字節(jié)的序號(hào);ACK報(bào)文段不攜帶數(shù)據(jù),不消耗序號(hào),也不用確認(rèn)規(guī)則3 如果一方收到按序到達(dá)的報(bào)文段,前一個(gè)按序到達(dá)報(bào)文段還沒有確認(rèn),它立即向?qū)Ψ桨l(fā)送ACK報(bào)文段Seq = 1201, 1201 1400, Ack =4001 Seq = 4001, 4001 5000, Ack =1401 Ack =5001 Seq = 5001, 50016000, Ack =1401 Seq = 6001, 60017000, Ac
18、k =1401 Ack =7001 客戶機(jī) 服務(wù)器 <500ms 規(guī)則1、2、3的圖示500ms 規(guī)則4 接收端收到一個(gè)失序到達(dá)的報(bào)文段,使得接收到的數(shù)據(jù)中產(chǎn)生空隙,接收端立即發(fā)送ACK報(bào)文段,以告訴對(duì)方它期待收到的下一個(gè)數(shù)據(jù)字節(jié)的序號(hào)規(guī)則5 接收端收到一個(gè)能補(bǔ)空隙的報(bào)文段,接收端立即發(fā)送ACK報(bào)文段,以告訴對(duì)方它期待的下一個(gè)數(shù)據(jù)字節(jié)的序號(hào)規(guī)則6 接收端收到一個(gè)重復(fù)到達(dá)的報(bào)文段,接收端立即發(fā)送ACK報(bào)文段,以告訴對(duì)方它期待的下一個(gè)數(shù)據(jù)字節(jié)的序號(hào)Seq =501, 501 600, Ack =xAck =701 發(fā)送方 接收方 超時(shí) Seq =601, 601 700, Ack =xSeq
19、 =701, 701 800, Ack =xSeq =801, 801 900, Ack =xAck =701 接收方緩存Seq =701, 701 800, Ack =xAck =901 規(guī)則4和規(guī)則5的圖示 Seq =501, 501 600, Ack =xAck =701 發(fā)送方 接收方 Seq =601, 601 700, Ack =xSeq =501, 501 600, Ack =xAck =701 超時(shí) 規(guī)則6圖示 TCP的重傳機(jī)制TCP設(shè)置了一個(gè)定時(shí)器和最久未被確認(rèn)的報(bào)文段關(guān)聯(lián),另外TCP設(shè)置了一個(gè)SendBase變量記錄最久未被確認(rèn)的、最小的字節(jié)序號(hào);TCP會(huì)重傳引發(fā)超時(shí)的報(bào)文
20、段,以期糾正傳輸錯(cuò)誤;我們通過一個(gè)簡(jiǎn)化的TCP發(fā)送方進(jìn)程理解TCP的超時(shí)重傳機(jī)制NextSeqNum = InitiaSeqNumberSendBase = InitialSeqNumberLoop(forever)Switch(event)event :data received from Application above create TCP segment with sequence number NextSeqNumif (timer currently not running)start timerpass segment to IPNextSeqNum = NextSeqNum
21、+ length(data)break;event :timer timeoutretransmit not-yet-acknowledged segment with smallest sequence numberstart timerbreak;event :ACK received,with ACK field value of yif(y > SendBase)SendBase = yif(there are currently not-yet-acknowledged segment)start timer break;Seq =101, 101 200, Ack =xAck
22、 =301 發(fā)送方 接收方 Seq =201, 201 300, Ack =xSeq =301, 301 400, Ack =xSeq =401, 401 500, Ack =x接收方緩存Ack =301 Seq =501, 501 600, Ack =xAck =301 Seq =601, 601 700, Ack =xAck =301 Seq =601, 601 700, Ack =xAck =701 快速重傳圖示 除了超時(shí)引發(fā)重傳外,還有一種情況會(huì)引發(fā)重傳,即當(dāng)發(fā)送方收到3個(gè)重復(fù)的ACK報(bào)文段時(shí),發(fā)送方會(huì)立即重傳跟在被重復(fù)確認(rèn)的報(bào)文段之后的報(bào)文段,而不用等到計(jì)時(shí)器超時(shí),這種情況叫快速重傳
23、。如上圖所示5)TCP的流量控制機(jī)制n-1n n+1m m+1m+2 m-1合攏展開窗口大小左沿右沿?cái)?shù)據(jù)字節(jié)序號(hào) 回縮流量控制就是接收方對(duì)發(fā)送方發(fā)送數(shù)據(jù)的速率進(jìn)行控制,目的是為了避免發(fā)送方發(fā)送數(shù)據(jù)太快以至于使接收方的緩存溢出TCP采用滑動(dòng)窗口機(jī)制提供流量控制功能。TCP為建立了TCP連接的兩個(gè)進(jìn)程分別設(shè)置了一個(gè)名為發(fā)送窗口的變量,可以把發(fā)送窗口理解為一個(gè)序號(hào)集合,序號(hào)落在窗口內(nèi)的數(shù)據(jù)字節(jié)允許發(fā)送,序號(hào)落在窗口之外的數(shù)據(jù)字節(jié)不允許發(fā)送。如上圖所示窗口可以合攏、展開以及回縮 :合攏指窗口左沿向右移動(dòng),這意味著某些已發(fā)送的字節(jié)得到確認(rèn);展開指窗口右沿向右移動(dòng),這意味著可以從發(fā)送緩存中取更多新的字節(jié)發(fā)
24、送;回縮右沿向左移動(dòng),這意味著本來可以發(fā)送的字節(jié)現(xiàn)在不允許發(fā)送了,這是最不希望出現(xiàn)的一方的發(fā)送窗口的大小為MIN(對(duì)方接收窗口的大小rwnd,擁塞窗口的大小cwnd);對(duì)方接收窗口的大小通常代表對(duì)方還有多少接收緩存可用;一方向另一方發(fā)送報(bào)文段時(shí),通過窗口字段告訴對(duì)方我的接收窗口的大小是多少,窗口的工作機(jī)制如下圖所示SEQ = 1 SEQ = 101 SEQ = 201 ACK = 201 , WIN = 300 SEQ = 301 SEQ = 401 ACK = 501 , WIN = 200 SEQ = 201 SEQ = 501 ACK = 601 , WIN = 0 服務(wù)器客戶機(jī)服務(wù)器還
25、能發(fā)300B服務(wù)器還能發(fā)200B允許服務(wù)器再發(fā)300B,序號(hào)201至500服務(wù)器還能發(fā)100B,序號(hào)401至500發(fā)送窗口已滿,不允許再發(fā)送500以后的數(shù)據(jù)服務(wù)器超時(shí)重發(fā),不允許再發(fā)送500以后的數(shù)據(jù)允許服務(wù)器再發(fā)200B,序號(hào)501至700服務(wù)器還能發(fā)100B,序號(hào)601至700窗口關(guān)閉,不允許服務(wù)器再發(fā)送利用可變窗口大小進(jìn)行流量控制,雙方事先確定的窗口大小為400B6)TCP的擁塞控制機(jī)制當(dāng)網(wǎng)絡(luò)中的端系統(tǒng)向網(wǎng)絡(luò)中注入了太多的分組,以至于網(wǎng)絡(luò)中交換機(jī)和路由器的緩沖區(qū)溢出,擁塞便發(fā)生了。當(dāng)發(fā)生擁塞時(shí),分組時(shí)延會(huì)急劇增加,而網(wǎng)絡(luò)的吞吐量會(huì)急劇下降擁塞控制機(jī)制分為兩大類:開環(huán)擁塞控制和閉環(huán)擁塞控制
26、開環(huán)擁塞控制技術(shù)用于預(yù)防擁塞,包括n 在端系統(tǒng)中應(yīng)用能預(yù)防擁塞的重傳策略n 在端系統(tǒng)中應(yīng)用能預(yù)防擁塞的確認(rèn)策略n 在中繼結(jié)點(diǎn)上應(yīng)用恰當(dāng)?shù)膩G包策略等閉環(huán)控制技術(shù)用于消除擁塞,包括n 當(dāng)一個(gè)路由器發(fā)生擁塞時(shí),通知其上游路由器降低分組發(fā)送速率n 當(dāng)路由器發(fā)生擁塞時(shí),向源端系統(tǒng)發(fā)一個(gè)分組,告知源點(diǎn)發(fā)生了擁塞n 讓端系統(tǒng)能感知擁塞的發(fā)生的征兆,如端系統(tǒng)推遲收到已發(fā)分組的確認(rèn),從而降低發(fā)送分組的速率n 中繼結(jié)點(diǎn)將分組中的某些位置1,以此告知發(fā)送方或接收方發(fā)生了擁塞TCP的擁塞控制機(jī)制分為3個(gè)階段:慢開始、擁塞避免和擁塞檢測(cè)n 慢開始 指數(shù)增加 開始時(shí)擁塞窗口為1個(gè)MSS,在收到確認(rèn)前僅能發(fā)送一個(gè)報(bào)文段;在
27、超時(shí)發(fā)生前收到第一個(gè)報(bào)文段的確認(rèn)后,擁塞窗口增至2個(gè)MSS,即在收到確認(rèn)前允許發(fā)送2個(gè)報(bào)文段;在超時(shí)發(fā)生前收到第2、3個(gè)報(bào)文段的確認(rèn)后,擁塞窗口增至4個(gè)MSS,即在收到確認(rèn)前允許發(fā)送4個(gè)報(bào)文段;在超時(shí)發(fā)生前收到第4、5、6、7個(gè)報(bào)文段的確認(rèn)后,擁塞窗口增至8個(gè)MSS; ;即擁塞窗口以指數(shù)方式增長(zhǎng);當(dāng)擁塞窗口達(dá)到慢開始門限值時(shí),便進(jìn)入到擁塞避免階段n 擁塞避免 加法增加 進(jìn)入擁塞避免階段后,擁塞窗口以線性方式增長(zhǎng),即當(dāng)窗口中的報(bào)文段的確認(rèn)全部收到后,擁塞窗口加1個(gè)MSSn 擁塞檢測(cè) 乘法減少 端系統(tǒng)是在要重發(fā)一個(gè)報(bào)文段時(shí)意識(shí)到擁塞發(fā)生了;重發(fā)報(bào)文段有兩種情況,一種是發(fā)生超時(shí),另一種是收到3個(gè)重復(fù)
28、的ACK;如果發(fā)生超時(shí),TCP將慢開始門限值設(shè)為發(fā)送窗口的一半,擁塞窗口設(shè)為1,重新進(jìn)入慢開始階段;如果收到3個(gè)重復(fù)的ACK,TCP將慢開始門限值設(shè)為發(fā)送窗口的一半,擁塞窗口設(shè)為慢開始門限值,進(jìn)入擁塞避免階段7)TCP的連接管理傳輸層的連接有3個(gè)階段:連接建立、數(shù)據(jù)傳輸和連接釋放之所以要有連接建立過程,目的在于n 使連接的雙方知道對(duì)方的存在n 使得雙方能協(xié)商一些參數(shù),如最大報(bào)文長(zhǎng)度、窗口大小、服務(wù)質(zhì)量等n 對(duì)運(yùn)輸層實(shí)體的資源進(jìn)行分配,如緩存、連接表中的項(xiàng)目等。連接表包含以下字段:連接號(hào)、連接狀態(tài)、本地IP、本地端口號(hào)、遠(yuǎn)端IP、遠(yuǎn)端端口號(hào)使用TCP協(xié)議進(jìn)行通信的兩個(gè)網(wǎng)絡(luò)應(yīng)用進(jìn)程通常采用客戶機(jī)/服務(wù)器架構(gòu),即其中的一個(gè)進(jìn)程充當(dāng)客戶機(jī)的角色,另一個(gè)進(jìn)程充當(dāng)服務(wù)器的角色??蛻魴C(jī)進(jìn)程主動(dòng)發(fā)起連接建立請(qǐng)求,服務(wù)器進(jìn)程監(jiān)聽并響應(yīng)來自客戶進(jìn)程的連接建立請(qǐng)求客戶端的TCP 服務(wù)器端的TCP SYN,SEQ=XSYN,ACK,SEQ=Y,ACK=X+1ACK ,ACK=Y+1FIN,SEQ=UACK=U+1FIN,ACK,SEQ=V,ACK=U+1ACK,SEQ=U+1,ACK=V+1雙向的數(shù)據(jù)傳輸SYN_SENTESTABLISHEDESTAB
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程維修突發(fā)事件應(yīng)急方案
- 防范化解重大風(fēng)險(xiǎn)工作實(shí)施方案
- 2023年紹興銀行社會(huì)招聘筆試真題
- 2023年湖州市教育局招聘筆試真題
- 學(xué)校國(guó)有資產(chǎn)管理制度
- 支部主題黨日制度
- 夜間值班管理制度
- 教師專業(yè)發(fā)展實(shí)施方案
- 第六章 集體兒童保健課件
- 磚砌排水溝施工工藝方案
- 低壓斷路器課件
- 24春國(guó)家開放大學(xué)《金融基礎(chǔ)》形考任務(wù)題庫參考答案
- 區(qū)塊鏈技術(shù)在發(fā)票管理中的應(yīng)用
- JJG 693-2011可燃?xì)怏w檢測(cè)報(bào)警器
- 農(nóng)村夜校班國(guó)語試卷完整版
- 賣場(chǎng)布局與陳列智慧樹知到期末考試答案2024年
- 鄉(xiāng)鎮(zhèn)平安建設(shè)培訓(xùn)課件
- 2022年4月自考00409美育基礎(chǔ)試題及答案含解析
- 山東省菏澤市2023-2024學(xué)年高一年級(jí)上冊(cè)11月期中英語試題
- 自然拼讀法對(duì)提高初中學(xué)生英語詞匯拼寫和拼讀能力的研究
- 廣東省珠海市2024年春季高考模擬考試數(shù)學(xué)試卷含答案
評(píng)論
0/150
提交評(píng)論