CH5-(微課版)運(yùn)輸層_第1頁(yè)
CH5-(微課版)運(yùn)輸層_第2頁(yè)
CH5-(微課版)運(yùn)輸層_第3頁(yè)
CH5-(微課版)運(yùn)輸層_第4頁(yè)
CH5-(微課版)運(yùn)輸層_第5頁(yè)
已閱讀5頁(yè),還剩99頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

《計(jì)算機(jī)網(wǎng)絡(luò)教程(第5版)》第五章運(yùn)輸層人民郵電出版社ComputerNetworkTutorial謝鈞謝希仁編著用戶數(shù)據(jù)報(bào)協(xié)議UDP運(yùn)輸層協(xié)議概述傳輸控制協(xié)議TCP擁塞控制5.15.2內(nèi)容導(dǎo)航CONTENTS5.35.45.1.1進(jìn)程之間的通信從通信和信息處理的角度看,運(yùn)輸層向它上面的應(yīng)用層提供通信服務(wù),它屬于面向通信部分的最高層,同時(shí)也是用戶功能中的最低層。課件制作人:謝鈞謝希仁物理層網(wǎng)絡(luò)層運(yùn)輸層應(yīng)用層數(shù)據(jù)鏈路層面向信息處理面向通信用戶功能網(wǎng)絡(luò)功能運(yùn)輸層為相互通信的應(yīng)用進(jìn)程提供了邏輯通信課件制作人:謝鈞謝希仁54321運(yùn)輸層提供應(yīng)用進(jìn)程間的邏輯通信主機(jī)A主機(jī)B應(yīng)用進(jìn)程應(yīng)用進(jìn)程路由器1路由器2AP1LAN2WANAP2AP3AP4IP層LAN1AP1AP2AP4端口端口54321IP協(xié)議的作用范圍運(yùn)輸層協(xié)議TCP和UDP的作用范圍AP3應(yīng)用進(jìn)程之間的通信兩個(gè)主機(jī)進(jìn)行通信實(shí)際上就是兩個(gè)主機(jī)中的應(yīng)用進(jìn)程互相通信。應(yīng)用進(jìn)程之間的通信又稱為端到端的通信。運(yùn)輸層的一個(gè)很重要的功能就是復(fù)用和分用。應(yīng)用層不同進(jìn)程的報(bào)文通過(guò)不同的端口向下交到運(yùn)輸層,再往下就共用網(wǎng)絡(luò)層提供的服務(wù)。“運(yùn)輸層提供應(yīng)用進(jìn)程間的邏輯通信”。“邏輯通信”的意思是:運(yùn)輸層之間的通信好像是沿水平方向傳送數(shù)據(jù)。但事實(shí)上這兩個(gè)運(yùn)輸層之間并沒有一條水平方向的物理連接。課件制作人:謝鈞謝希仁運(yùn)輸層協(xié)議和網(wǎng)絡(luò)層協(xié)議的主要區(qū)別課件制作人:謝鈞謝希仁

應(yīng)用進(jìn)程…

應(yīng)用進(jìn)程…

IP協(xié)議的作用范圍(提供主機(jī)之間的邏輯通信)TCP和UDP協(xié)議的作用范圍(提供進(jìn)程之間的邏輯通信)因特網(wǎng)運(yùn)輸層的主要功能運(yùn)輸層為應(yīng)用進(jìn)程之間提供端到端的邏輯通信(但網(wǎng)絡(luò)層是為主機(jī)之間提供邏輯通信)。運(yùn)輸層還要對(duì)收到的報(bào)文進(jìn)行差錯(cuò)檢測(cè)。運(yùn)輸層可選的功能:課件制作人:謝鈞謝希仁01OPTION可靠數(shù)據(jù)傳輸02OPTION流量控制03OPTION擁塞控制5.1.2因特網(wǎng)的運(yùn)輸層協(xié)議因特網(wǎng)的運(yùn)輸層有兩個(gè)不同的協(xié)議:(1)用戶數(shù)據(jù)報(bào)協(xié)議UDP(UserDatagramProtocol)(2)傳輸控制協(xié)議TCP(TransmissionControlProtocol)課件制作人:謝鈞謝希仁TCP與UDPMIME和SMTP的關(guān)系兩個(gè)對(duì)等運(yùn)輸實(shí)體在通信時(shí)傳送的數(shù)據(jù)單位叫作運(yùn)輸協(xié)議數(shù)據(jù)單元TPDU(TransportProtocolDataUnit)。TCP傳送的協(xié)議數(shù)據(jù)單元稱為TCP報(bào)文段(segment)UDP傳送的協(xié)議數(shù)據(jù)單元稱為UDP報(bào)文或用戶數(shù)據(jù)報(bào)。TCPUDPIP應(yīng)用層與各種網(wǎng)絡(luò)接口運(yùn)輸層TCP與UDPUDP在傳送數(shù)據(jù)之前不需要先建立連接。對(duì)方的運(yùn)輸層在收到UDP報(bào)文后,不需要給出任何確認(rèn)。雖然UDP不提供可靠交付,但在某些情況下UDP是一種最有效的工作方式。TCP則提供面向連接的服務(wù)。TCP不提供廣播或多播服務(wù)。由于TCP要提供可靠的、面向連接的運(yùn)輸服務(wù),因此不可避免地增加了許多的開銷。這不僅使協(xié)議數(shù)據(jù)單元的首部增大很多,還要占用許多的處理機(jī)資源。課件制作人:謝鈞謝希仁還要強(qiáng)調(diào)兩點(diǎn)運(yùn)輸層的

UDP

用戶數(shù)據(jù)報(bào)與網(wǎng)際層的IP數(shù)據(jù)報(bào)有很大區(qū)別。IP

數(shù)據(jù)報(bào)要經(jīng)過(guò)互連網(wǎng)中許多路由器的存儲(chǔ)轉(zhuǎn)發(fā),但

UDP

用戶數(shù)據(jù)報(bào)是在運(yùn)輸層的端到端抽象的邏輯信道中傳送的。TCP

報(bào)文段是在運(yùn)輸層抽象的端到端邏輯信道中傳送,這種信道是可靠的全雙工信道。但這樣的信道卻不知道究竟經(jīng)過(guò)了哪些路由器,而這些路由器也根本不知道上面的運(yùn)輸層是否建立了TCP連接。課件制作人:謝鈞謝希仁5.1.3運(yùn)輸層的復(fù)用與分用復(fù)用是指在發(fā)送方不同的應(yīng)用進(jìn)程都可以使用同一個(gè)運(yùn)輸層協(xié)議傳送數(shù)據(jù)(當(dāng)然需要加上適當(dāng)?shù)氖撞浚?;而分用是指接收方的運(yùn)輸層在剝?nèi)?bào)文的首部后能夠把這些數(shù)據(jù)正確交付到目的應(yīng)用進(jìn)程。要能正確地將數(shù)據(jù)交付給指定應(yīng)用進(jìn)程,就必須給每個(gè)應(yīng)用進(jìn)程賦予一個(gè)明確的標(biāo)志。在TCP/IP網(wǎng)絡(luò)中,使用一種與操作系統(tǒng)無(wú)關(guān)的協(xié)議端口號(hào)(protocolportnumber)(簡(jiǎn)稱端口號(hào))來(lái)實(shí)現(xiàn)對(duì)通信的應(yīng)用進(jìn)程的標(biāo)志。課件制作人:謝鈞謝希仁運(yùn)輸層端口的概念端口就是應(yīng)用進(jìn)程的運(yùn)輸層地址。端口的作用就是讓應(yīng)用層的各種應(yīng)用進(jìn)程都能將其數(shù)據(jù)通過(guò)端口向下交付給運(yùn)輸層,以及讓運(yùn)輸層知道應(yīng)當(dāng)將其報(bào)文段中的數(shù)據(jù)向上通過(guò)端口交付給應(yīng)用層相應(yīng)的進(jìn)程。從這個(gè)意義上講,端口是用來(lái)標(biāo)志應(yīng)用層的進(jìn)程。課件制作人:謝鈞謝希仁端口在進(jìn)程之間的通信中所起的作用課件制作人:謝鈞謝希仁應(yīng)用層運(yùn)輸層網(wǎng)絡(luò)層TCP報(bào)文段UDP用戶數(shù)據(jù)報(bào)應(yīng)用進(jìn)程TCP復(fù)用

IP復(fù)用UDP復(fù)用

TCP報(bào)文段UDP用戶數(shù)據(jù)報(bào)

應(yīng)用進(jìn)程端口端口TCP分用UDP分用IP分用IP數(shù)據(jù)報(bào)IP數(shù)據(jù)報(bào)發(fā)送方接收方端口課件制作人:謝鈞謝希仁MIME和SMTP的關(guān)系端口用一個(gè)16位端口號(hào)進(jìn)行標(biāo)志。端口號(hào)只具有本地意義,即端口號(hào)只是為了標(biāo)志本計(jì)算機(jī)應(yīng)用層中的各進(jìn)程。在因特網(wǎng)中不同計(jì)算機(jī)的相同端口號(hào)是沒有聯(lián)系的。并且TCP和UDP端口號(hào)之間也沒有必然聯(lián)系熟知端口其數(shù)值一般為0~1023。當(dāng)一種新的應(yīng)用程序出現(xiàn)時(shí),必須為它指派一個(gè)熟知端口。登記端口

其數(shù)值為1024~49151。這類端口是ICANN控制的,使用這個(gè)范圍的端口必須在ICANN登記,以防止重復(fù)。動(dòng)態(tài)端口

其數(shù)值為49152~65535。這類端口是留給客戶進(jìn)程選擇作為臨時(shí)端口。用戶數(shù)據(jù)報(bào)協(xié)議UDP運(yùn)輸層協(xié)議概述傳輸控制協(xié)議TCP擁塞控制5.15.2內(nèi)容導(dǎo)航CONTENTS5.35.45.2.1UDP概述課件制作人:謝鈞謝希仁UDP只在IP的數(shù)據(jù)報(bào)服務(wù)之上增加了很少一點(diǎn)的功能,即端口的功能和差錯(cuò)檢測(cè)的功能。雖然UDP用戶數(shù)據(jù)報(bào)只能提供不可靠的交付,但UDP在某些方面有其特殊的優(yōu)點(diǎn)。發(fā)送數(shù)據(jù)之前不需要建立連接UDP的主機(jī)不需要維持復(fù)雜的連接狀態(tài)表。UDP用戶數(shù)據(jù)報(bào)只有8個(gè)字節(jié)的首部開銷。網(wǎng)絡(luò)出現(xiàn)的擁塞不會(huì)使源主機(jī)的發(fā)送速率降低。這對(duì)某些實(shí)時(shí)應(yīng)用是很重要的。

UDP的特點(diǎn)UDP是無(wú)連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接(當(dāng)然發(fā)送數(shù)據(jù)結(jié)束時(shí)也沒有連接可釋放),因此減少了開銷和發(fā)送數(shù)據(jù)之前的時(shí)延。UDP使用盡最大努力交付,即不保證可靠交付,同時(shí)也不使用擁塞控制,因此主機(jī)不需要維持具有許多參數(shù)的、復(fù)雜的連接狀態(tài)表。由于UDP沒有擁塞控制,因此網(wǎng)絡(luò)出現(xiàn)的擁塞不會(huì)使源主機(jī)的發(fā)送速率降低。這對(duì)某些實(shí)時(shí)應(yīng)用是很重要的。很多的實(shí)時(shí)應(yīng)用(如IP電話、實(shí)時(shí)視頻會(huì)議等)要求源主機(jī)以恒定的速率發(fā)送數(shù)據(jù),并且允許在網(wǎng)絡(luò)發(fā)生擁塞時(shí)丟失一些數(shù)據(jù),但卻不允許數(shù)據(jù)有太大的時(shí)延。UDP正好適合這種要求。UDP的特點(diǎn)UDP是面向報(bào)文的。這就是說(shuō),UDP對(duì)應(yīng)用程序交下來(lái)的報(bào)文不再劃分為若干個(gè)分組來(lái)發(fā)送,也不把收到的若干個(gè)報(bào)文合并后再交付給應(yīng)用程序。應(yīng)用程序交給UDP一個(gè)報(bào)文,UDP就發(fā)送這個(gè)報(bào)文;而UDP收到一個(gè)報(bào)文,就把它交付給應(yīng)用程序。應(yīng)用程序必須選擇合適大小的報(bào)文。UDP支持一對(duì)一、一對(duì)多、多對(duì)一和多對(duì)多的交互通信。用戶數(shù)據(jù)報(bào)只有8個(gè)字節(jié)的首部開銷,比TCP的20個(gè)字節(jié)的首部要短。UDP的問(wèn)題雖然某些實(shí)時(shí)應(yīng)用需要使用沒有擁塞控制的UDP,但當(dāng)很多的源主機(jī)同時(shí)都向網(wǎng)絡(luò)發(fā)送高速率的實(shí)時(shí)視頻流時(shí),網(wǎng)絡(luò)就有可能發(fā)生擁塞,結(jié)果大家都無(wú)法正常接收。還有一些使用UDP的實(shí)時(shí)應(yīng)用需要對(duì)UDP的不可靠的傳輸進(jìn)行適當(dāng)?shù)母倪M(jìn)以減少數(shù)據(jù)的丟失。課件制作人:謝鈞謝希仁5.2.2UDP的首部格式課件制作人:謝鈞謝希仁偽首部源端口目的端口長(zhǎng)度檢驗(yàn)和數(shù)據(jù)首部UDP長(zhǎng)度源IP地址目的IP地址017IP數(shù)據(jù)報(bào)字節(jié)44112122222字節(jié)發(fā)送在前數(shù)據(jù)首部UDP用戶數(shù)據(jù)報(bào)偽首部源端口目的端口長(zhǎng)度檢驗(yàn)和數(shù)據(jù)首部UDP長(zhǎng)度源IP地址目的IP地址017IP數(shù)據(jù)報(bào)字節(jié)44112122222字節(jié)發(fā)送在前數(shù)據(jù)首部UDP用戶數(shù)據(jù)報(bào)5.2.2UDP的首部格式用戶數(shù)據(jù)報(bào)UDP有兩個(gè)字段:數(shù)據(jù)字段和首部字段。首部字段有8個(gè)字節(jié),由4個(gè)字段組成,每個(gè)字段都是兩個(gè)字節(jié)。課件制作人:謝鈞謝希仁偽首部源端口目的端口長(zhǎng)度檢驗(yàn)和數(shù)據(jù)首部UDP長(zhǎng)度源IP地址目的IP地址017IP數(shù)據(jù)報(bào)字節(jié)44112122222字節(jié)發(fā)送在前數(shù)據(jù)首部UDP用戶數(shù)據(jù)報(bào)5.2.2UDP的首部格式在計(jì)算檢驗(yàn)和時(shí),臨時(shí)把“偽首部”和UDP用戶數(shù)據(jù)報(bào)連接在一起。偽首部?jī)H僅是為了計(jì)算檢驗(yàn)和。課件制作人:謝鈞謝希仁UDP的多路分用模型課件制作人:謝鈞謝希仁端口UDP應(yīng)用進(jìn)程應(yīng)用進(jìn)程應(yīng)用進(jìn)程隊(duì)列報(bào)文報(bào)文到達(dá)IP層用戶數(shù)據(jù)報(bào)協(xié)議UDP運(yùn)輸層協(xié)議概述傳輸控制協(xié)議TCP擁塞控制5.15.2內(nèi)容導(dǎo)航CONTENTS5.35.45.3.1TCP的主要特點(diǎn)TCP是面向連接的運(yùn)輸層協(xié)議。每一條TCP連接只能有兩個(gè)端點(diǎn)(endpoint),每一條TCP連接只能是點(diǎn)對(duì)點(diǎn)的(一對(duì)一)。TCP提供可靠交付的服務(wù)。

TCP提供全雙工通信。面向字節(jié)流。課件制作人:謝鈞謝希仁TCP面向流的概念課件制作人:謝鈞謝希仁

端口…發(fā)送

TCP

報(bào)文段TCP…TCP接收緩存發(fā)送緩存報(bào)文段…報(bào)文段報(bào)文段端口發(fā)送方接收方向發(fā)送緩存寫入數(shù)據(jù)塊從接收緩存讀取數(shù)據(jù)塊應(yīng)用進(jìn)程應(yīng)用進(jìn)程

應(yīng)當(dāng)注意TCP連接是一條虛連接而不是一條真正的物理連接。TCP對(duì)應(yīng)用進(jìn)程一次把多長(zhǎng)的報(bào)文發(fā)送到TCP的緩存中是不關(guān)心的。TCP根據(jù)網(wǎng)絡(luò)的具體情況來(lái)決定一個(gè)報(bào)文段應(yīng)包含多少個(gè)字節(jié)(UDP發(fā)送的報(bào)文長(zhǎng)度是應(yīng)用進(jìn)程給出的)。TCP可把太長(zhǎng)的數(shù)據(jù)塊劃分短一些再傳送。TCP也可等待積累有足夠多的字節(jié)后再構(gòu)成報(bào)文段發(fā)送出去。課件制作人:謝鈞謝希仁TCP連接的任何一方都能夠發(fā)送和接收數(shù)據(jù)通信是全雙工方式。發(fā)送方的應(yīng)用進(jìn)程按照自己產(chǎn)生數(shù)據(jù)的規(guī)律,不斷地把數(shù)據(jù)塊陸續(xù)寫入到TCP的發(fā)送緩存中。TCP再?gòu)陌l(fā)送緩存中取出一定數(shù)量的數(shù)據(jù),將其組成TCP報(bào)文段(segment)逐個(gè)傳送給IP層,然后發(fā)送出去。接收方從IP層收到TCP報(bào)文段后,先把它暫存在接收緩存中,然后讓接收方的應(yīng)用進(jìn)程從接收緩存中將數(shù)據(jù)塊逐個(gè)讀取。課件制作人:謝鈞謝希仁TCP的連接一對(duì)一的通信由于運(yùn)輸層的通信是面向連接的,因此TCP每一條連接上的通信只能是一對(duì)一的,而不可能是一對(duì)多、多對(duì)一或多對(duì)多的。課件制作人:謝鈞謝希仁TCP把連接作為最基本的抽象。每一條TCP連接唯一地被通信兩端的兩個(gè)端點(diǎn)所確定。即:TCP連接

::={(IP1:port1),(IP2:port2)}UDP與TCP復(fù)用的區(qū)別課件制作人:謝鈞謝希仁應(yīng)用進(jìn)程緩存目的地址/端口相同應(yīng)用進(jìn)程應(yīng)用進(jìn)程應(yīng)用進(jìn)程

進(jìn)程緩存同一源/目的地址/端口號(hào)應(yīng)用進(jìn)程應(yīng)用進(jìn)程應(yīng)用進(jìn)程緩存緩存進(jìn)程進(jìn)程可以是不同進(jìn)程同一端口號(hào)UDPTCP5.3.2TCP報(bào)文段結(jié)構(gòu)TCP報(bào)文段分為首部和數(shù)據(jù)兩部分。TCP的全部功能都體現(xiàn)在它首部中各字段的作用。TCP報(bào)文段首部的前20個(gè)字節(jié)是固定的,后面有4N字節(jié)是根據(jù)需要而增加的選項(xiàng)(N必須是整數(shù))。因此TCP首部的最小長(zhǎng)度是20字節(jié)。課件制作人:謝鈞謝希仁TCP首部20字節(jié)的固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FIN32位SYNRSTPSHACKURG位08162431填充TCP數(shù)據(jù)部分TCP首部TCP報(bào)文段IP數(shù)據(jù)部分IP首部發(fā)送在前課件制作人:謝鈞謝希仁TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充源端口和目的端口字段——各占2字節(jié)。端口是運(yùn)輸層與應(yīng)用層的服務(wù)接口。運(yùn)輸層的復(fù)用和分用功能都要通過(guò)端口才能實(shí)現(xiàn)。課件制作人:謝鈞謝希仁TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充序號(hào)字段——占4字節(jié)。TCP連接中傳送的數(shù)據(jù)流中的每一個(gè)字節(jié)都編上一個(gè)序號(hào)。序號(hào)字段的值則指的是本報(bào)文段所發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。課件制作人:謝鈞謝希仁TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充確認(rèn)號(hào)字段——占4字節(jié),是期望收到對(duì)方的下一個(gè)報(bào)文段的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。課件制作人:謝鈞謝希仁TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充數(shù)據(jù)偏移——占4位,它指出TCP報(bào)文段的數(shù)據(jù)起始處距離TCP報(bào)文段的起始處有多遠(yuǎn)。“數(shù)據(jù)偏移”的單位不是字節(jié)而是32位字(4字節(jié)為計(jì)算單位)。課件制作人:謝鈞謝希仁TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充保留字段——占6位,保留為今后使用,但目前應(yīng)置為0。課件制作人:謝鈞謝希仁TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充緊急位URG——當(dāng)URG

1時(shí),表明緊急指針字段有效。它告訴系統(tǒng)此報(bào)文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級(jí)的數(shù)據(jù))。課件制作人:謝鈞謝希仁TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充確認(rèn)位ACK——只有當(dāng)ACK

1時(shí)確認(rèn)號(hào)字段才有效。當(dāng)ACK

0時(shí),確認(rèn)號(hào)無(wú)效。課件制作人:謝鈞謝希仁TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充推送位PSH(PuSH)——接收TCP收到PSH=1的報(bào)文段,就盡快地交付給接收應(yīng)用進(jìn)程,而不再等到整個(gè)緩存都填滿了后再向上交付。課件制作人:謝鈞謝希仁TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充復(fù)位位RST(ReSeT)——當(dāng)RST

1時(shí),表明TCP連接中出現(xiàn)嚴(yán)重差錯(cuò)(如由于主機(jī)崩潰或其他原因),必須釋放連接,然后再重新建立運(yùn)輸連接。課件制作人:謝鈞謝希仁TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充同步位SYN——當(dāng)SYN=1時(shí),表示這是一個(gè)連接請(qǐng)求或連接接受報(bào)文。課件制作人:謝鈞謝希仁TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充終止位FIN(FINal)——用來(lái)釋放連接。當(dāng)FIN

1時(shí),表明此報(bào)文段的發(fā)送方的數(shù)據(jù)已發(fā)送完畢,并要求釋放運(yùn)輸連接。課件制作人:謝鈞謝希仁TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充窗口字段——占2字節(jié)。窗口字段用來(lái)控制對(duì)方發(fā)送的數(shù)據(jù)量,單位為字節(jié)。TCP連接的一端根據(jù)設(shè)置的緩存空間大小確定自己的接收窗口大小,然后通知對(duì)方以確定對(duì)方的發(fā)送窗口的上限。課件制作人:謝鈞謝希仁TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充檢驗(yàn)和——占2字節(jié)。檢驗(yàn)和字段檢驗(yàn)的范圍包括首部和數(shù)據(jù)這兩部分。在計(jì)算檢驗(yàn)和時(shí),要在TCP報(bào)文段的前面加上12字節(jié)的偽首部。課件制作人:謝鈞謝希仁TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充緊急指針字段——占16位。緊急指針指出在本報(bào)文段中的緊急數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)。課件制作人:謝鈞謝希仁TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充選項(xiàng)字段——長(zhǎng)度可變。TCP只規(guī)定了一種選項(xiàng),即最大報(bào)文段長(zhǎng)度MSS(MaximumSegmentSize)。MSS告訴對(duì)方TCP:“我的緩存所能接收的報(bào)文段的數(shù)據(jù)字段的最大長(zhǎng)度是MSS個(gè)字節(jié)?!盡SS是TCP報(bào)文段中的數(shù)據(jù)字段的最大長(zhǎng)度。數(shù)據(jù)字段加上TCP首部才等于整個(gè)的TCP報(bào)文段。課件制作人:謝鈞謝希仁TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充填充字段——這是為了使整個(gè)首部長(zhǎng)度是4字節(jié)的整數(shù)倍。課件制作人:謝鈞謝希仁5.3.3TCP的可靠傳輸我們知道因特網(wǎng)的網(wǎng)絡(luò)層服務(wù)是不可靠的,即通過(guò)IP傳送的數(shù)據(jù)可能出現(xiàn)差錯(cuò)、丟失、亂序或重復(fù)。TCP在IP的不可靠的盡最大努力服務(wù)的基礎(chǔ)上實(shí)現(xiàn)了一種可靠數(shù)據(jù)傳輸服務(wù),保證數(shù)據(jù)無(wú)差錯(cuò)、無(wú)丟失、按序和無(wú)重復(fù)的交付。由于TCP下面的傳輸數(shù)據(jù)的互聯(lián)網(wǎng)的結(jié)構(gòu)非常復(fù)雜,因此不能采用最簡(jiǎn)單的停止等待協(xié)議來(lái)實(shí)現(xiàn)可靠傳輸。課件制作人:謝鈞謝希仁1.數(shù)據(jù)編號(hào)與確認(rèn)TCP協(xié)議是面向字節(jié)的。TCP將所要傳送的報(bào)文看成是字節(jié)組成的數(shù)據(jù)流,并使每一個(gè)字節(jié)對(duì)應(yīng)于一個(gè)序號(hào)。在連接建立時(shí),雙方要商定初始序號(hào)。TCP每次發(fā)送的報(bào)文段的首部中的序號(hào)字段數(shù)值表示該報(bào)文段中的數(shù)據(jù)部分的第一個(gè)字節(jié)的序號(hào)。

TCP的確認(rèn)是對(duì)接收到的數(shù)據(jù)的最高序號(hào)表示確認(rèn)。接收方返回的確認(rèn)號(hào)是已收到的數(shù)據(jù)的最高序號(hào)加1。因此確認(rèn)號(hào)表示接收方期望下次收到的數(shù)據(jù)中的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)。由于TCP連接能提供全雙工通信,因此通信中的每一方都不必專門發(fā)送確認(rèn)報(bào)文段,而可以在傳送數(shù)據(jù)時(shí)順便把確認(rèn)信息捎帶傳送。課件制作人:謝鈞謝希仁1.數(shù)據(jù)編號(hào)與確認(rèn)為此,接收方在正確接收到數(shù)據(jù)時(shí)可能要等待一小段時(shí)間(不能超過(guò)0.5秒)再發(fā)送確認(rèn),若這段時(shí)間內(nèi)有數(shù)據(jù)要發(fā)送給對(duì)方,則采用捎帶確認(rèn)。這樣做可以提高傳輸效率。接收方若收到有差錯(cuò)的報(bào)文段就丟棄(不發(fā)送否認(rèn)信息)。若收到重復(fù)的報(bào)文段,也要丟棄,但要發(fā)回(或捎帶發(fā)回)確認(rèn)信息。若收到失序的報(bào)文段,可選擇將失序報(bào)文段丟棄,或者先將其暫存于接收緩存內(nèi),待所缺序號(hào)的報(bào)文段收齊后再一起上交應(yīng)用層。注意,不論采用哪種方法,接收方都要對(duì)已按序接收到的數(shù)據(jù)進(jìn)行確認(rèn)。課件制作人:謝鈞謝希仁2.以字節(jié)為單位的滑動(dòng)窗口TCP采用大小可變的滑動(dòng)窗口進(jìn)行流量控制。窗口大小的單位是字節(jié)。在TCP報(bào)文段首部的窗口字段寫入的數(shù)值就是當(dāng)前給對(duì)方設(shè)置的發(fā)送窗口數(shù)值的上限。發(fā)送窗口在連接建立時(shí)由雙方商定。但在通信的過(guò)程中,接收方可根據(jù)自己的資源情況,隨時(shí)動(dòng)態(tài)地調(diào)整對(duì)方的發(fā)送窗口上限值(可增大或減小)。課件制作人:謝鈞謝希仁收到確認(rèn)即可前移1002003004005006007008009001012013014015016017018011發(fā)送窗口可發(fā)送不可發(fā)送指針發(fā)送方要發(fā)送900字節(jié)長(zhǎng)的數(shù)據(jù),劃分為9個(gè)100字節(jié)長(zhǎng)的報(bào)文段,而發(fā)送窗口確定為500字節(jié)。發(fā)送方只要收到了對(duì)方的確認(rèn),發(fā)送窗口就可前移。發(fā)送TCP要維護(hù)一個(gè)指針。每發(fā)送一個(gè)報(bào)文段,指針就向前移動(dòng)一個(gè)報(bào)文段的距離。課件制作人:謝鈞謝希仁2.以字節(jié)為單位的滑動(dòng)窗口1002003004005006007008009001012013014015016017018011可發(fā)送不可發(fā)送指針發(fā)送窗口前移發(fā)送方已發(fā)送了400字節(jié)的數(shù)據(jù),但只收到對(duì)前200字節(jié)數(shù)據(jù)的確認(rèn),同時(shí)窗口大小不變。現(xiàn)在發(fā)送方還可發(fā)送300字節(jié)。課件制作人:謝鈞謝希仁已發(fā)送并被確認(rèn)已發(fā)送但未被確認(rèn)收到確認(rèn)即可前移1002003004005006007008009001012013014015016017018011發(fā)送窗口可發(fā)送不可發(fā)送指針2.以字節(jié)為單位的滑動(dòng)窗口1002003004005006007008009001012013014015016017018011已發(fā)送并被確認(rèn)已發(fā)送但未被確認(rèn)可發(fā)送不可發(fā)送指針1002003004005006007008009001012013014015016017018011已發(fā)送并被確認(rèn)可發(fā)送不可發(fā)送指針發(fā)送窗口前移發(fā)送窗口縮小發(fā)送方收到了對(duì)方對(duì)前400字節(jié)數(shù)據(jù)的確認(rèn),但對(duì)方通知發(fā)送方必須把窗口減小到400字節(jié)?,F(xiàn)在發(fā)送方最多還可發(fā)送400字節(jié)的數(shù)據(jù)。課件制作人:謝鈞謝希仁2.以字節(jié)為單位的滑動(dòng)窗口發(fā)送緩存課件制作人:謝鈞謝希仁最后被確認(rèn)的字節(jié)發(fā)送應(yīng)用程序發(fā)送緩存最后發(fā)送的字節(jié)發(fā)送窗口已發(fā)送TCP序號(hào)增大接收緩存課件制作人:謝鈞謝希仁接收應(yīng)用程序已收到接收窗口TCP接收緩存下一個(gè)讀取的字節(jié)序號(hào)增大下一個(gè)期望收到的字節(jié)(確認(rèn)號(hào))數(shù)字信號(hào)通過(guò)實(shí)際的信道3.超時(shí)重傳時(shí)間的選擇重傳機(jī)制是TCP中最重要和最復(fù)雜的問(wèn)題之一。TCP每發(fā)送一個(gè)報(bào)文段,就對(duì)這個(gè)報(bào)文段設(shè)置一次計(jì)時(shí)器。只要計(jì)時(shí)器設(shè)置的重傳時(shí)間到但還沒有收到確認(rèn),就要重傳這一報(bào)文段。課件制作人:謝鈞謝希仁由于TCP的下層是一個(gè)互聯(lián)網(wǎng)環(huán)境,IP數(shù)據(jù)報(bào)所選擇的路由變化很大。因而運(yùn)輸層的往返時(shí)間的方差也很大。往返時(shí)間數(shù)據(jù)鏈路層運(yùn)輸層T1T2T3概率指數(shù)加權(quán)移動(dòng)平均往返時(shí)間TCP用指數(shù)加權(quán)移動(dòng)平均往返時(shí)間

RTTS(這又稱為平滑的往返時(shí)間)來(lái)估計(jì)當(dāng)前RTT。第一次測(cè)量到RTT樣本時(shí),RTTS值就取為所測(cè)量到的RTT樣本值。以后每測(cè)量到一個(gè)新的RTT樣本,就按下式重新計(jì)算一次RTTS:

新的RTTS

(1

)

(舊的RTTS)

(新的RTT樣本)(5-1)式中,0

1。若

很接近于零,表示RTT值更新較慢。若選擇

接近于1,則表示RTT值更新較快。RFC2988推薦的

值為1/8,即0.125。課件制作人:謝鈞謝希仁超時(shí)重傳時(shí)間RTO(RetransmissionTime-Out)RTO應(yīng)略大于上面得出的加權(quán)平均往返時(shí)間RTTS。RFC2988建議使用下式計(jì)算RTO:

RTO

RTTS+4

RTTD

(5-2)RTTD是RTT的偏差的加權(quán)平均值。RFC2988建議這樣計(jì)算RTTD。第一次測(cè)量時(shí),RTTD值取為測(cè)量到的RTT樣本值的一半。在以后的測(cè)量中,則使用下式計(jì)算加權(quán)平均的RTTD:新的RTTD=(1

)

(舊的RTTD)+

RTTS

新的RTT樣本

(5-3)

是個(gè)小于1的系數(shù),其推薦值是1/4,即0.25。課件制作人:謝鈞謝希仁往返時(shí)間的測(cè)量相當(dāng)復(fù)雜TCP報(bào)文段1沒有收到確認(rèn)。重傳(即報(bào)文段2)后,收到了確認(rèn)報(bào)文段ACK。如何判定此確認(rèn)報(bào)文段是對(duì)原來(lái)的報(bào)文段1的確認(rèn),還是對(duì)重傳的報(bào)文段2的確認(rèn)?課件制作人:謝鈞謝希仁往返時(shí)間RTT?發(fā)送一個(gè)TCP報(bào)文段超時(shí)重傳TCP報(bào)文段收到ACK時(shí)間12往返時(shí)間RTT?是對(duì)哪一個(gè)報(bào)文段的確認(rèn)?Karn算法在計(jì)算平均往返時(shí)間RTT時(shí),只要報(bào)文段重傳了,就不采用其往返時(shí)間樣本。這樣得出的加權(quán)平均平均往返時(shí)間RTTS

和超時(shí)重傳時(shí)間RTO就較準(zhǔn)確。課件制作人:謝鈞謝希仁修正的Karn算法報(bào)文段每重傳一次,就把RTO增大一些:新的RTO

(舊的RTO)系數(shù)

的典型值是2。當(dāng)不再發(fā)生報(bào)文段的重傳時(shí),才根據(jù)報(bào)文段的往返時(shí)延更新平均往返時(shí)延RTT和超時(shí)重傳時(shí)間RTO的數(shù)值。實(shí)踐證明,這種策略較為合理。4.快速重傳快要求接收方每收到一個(gè)失序的報(bào)文段后就立即發(fā)出重復(fù)確認(rèn)。發(fā)送方只要一連收到三個(gè)重復(fù)確認(rèn)就應(yīng)當(dāng)立即重傳對(duì)方尚未收到的報(bào)文段。不難看出,快重傳并非取消重傳計(jì)時(shí)器,而是在某些情況下可更早地重傳丟失的報(bào)文段。課件制作人:謝鈞謝希仁.快速重傳舉例發(fā)送方接收方發(fā)送M1

確認(rèn)M1t

確認(rèn)M2發(fā)送M2發(fā)送M3發(fā)送M4發(fā)送M5發(fā)送M6

重復(fù)確認(rèn)M2立即重傳M3

重復(fù)確認(rèn)M2

重復(fù)確認(rèn)M2t發(fā)送M7收到三個(gè)連續(xù)的對(duì)M2

的重復(fù)確認(rèn)立即重傳M3丟失5.選擇確認(rèn)選擇確認(rèn)SACK(SelectiveACK)允許接收方通知發(fā)送方所有正確接收了的但是失序的字節(jié)塊,發(fā)送方可以根據(jù)這些信息只重傳那些接收方還沒有收到的字節(jié)塊,這很像前面介紹的選擇重傳SR的工作方式。TCP在首部中提供了一個(gè)可變長(zhǎng)的“SACK選項(xiàng)字段”來(lái)存放接收到的失序字節(jié)塊的信息在建立TCP連接時(shí),通過(guò)添加“允許SACK選項(xiàng)字段”首部選項(xiàng),表示都支持選擇確認(rèn)功能課件制作人:謝鈞謝希仁1

1000

1501

2000

2501

4000確認(rèn)號(hào)=1001L1=1501L2=2501R1=2001R1=4001……連續(xù)的字節(jié)流………第一個(gè)字節(jié)塊第二個(gè)字節(jié)塊接收緩存5.3.4流量控制如果發(fā)送方把數(shù)據(jù)發(fā)送得過(guò)快,接收方就可能來(lái)不及接收,這就會(huì)造成數(shù)據(jù)的丟失。流量控制(flowcontrol)就是讓發(fā)送方的發(fā)送速率不要太快,既要讓接收方來(lái)得及接收。利用滑動(dòng)窗口機(jī)制可以很方便地在TCP連接上實(shí)現(xiàn)流量控制。課件制作人:謝鈞謝希仁接收應(yīng)用程序已收到接收窗口TCP接收緩存下一個(gè)讀取的字節(jié)序號(hào)增大下一個(gè)期望收到的字節(jié)(確認(rèn)號(hào))發(fā)送方的發(fā)送窗口大小不能超過(guò)接收方的接收窗口的大小!每段100字節(jié),初始窗口和接收緩存為400課件制作人:謝鈞謝希仁SEQ=1SEQ=201SEQ=401SEQ=301SEQ=101SEQ=501ACK=201,WIN=300ACK=601,WIN=0ACK=501,WIN=100主機(jī)A主機(jī)B允許A再發(fā)送300字節(jié)(序號(hào)201至500)A還能發(fā)送200字節(jié)A還能發(fā)送100字節(jié)(序號(hào)401至500)A還能發(fā)送300字節(jié)A不能再發(fā)送500以后的數(shù)據(jù)A超時(shí)重傳,但不能繼續(xù)發(fā)送允許A再發(fā)送100字節(jié)(序號(hào)501至600)A不能再發(fā)送600以后的數(shù)據(jù)不允許A再發(fā)送(到序號(hào)600的數(shù)據(jù)都已收到)SEQ=201丟失!應(yīng)用程序取走100字節(jié)應(yīng)用程序取走100字節(jié)5.3.5TCP的連接管理運(yùn)輸連接就有三個(gè)階段,即:連接建立、數(shù)據(jù)傳送和連接釋放。運(yùn)輸連接的管理就是使運(yùn)輸連接的建立和釋放都能正常地進(jìn)行。連接建立過(guò)程中要解決以下三個(gè)問(wèn)題:要使每一方能夠確知對(duì)方的存在。要允許雙方協(xié)商一些參數(shù)(如最大報(bào)文段長(zhǎng)度,最大窗口大小,服務(wù)質(zhì)量等)。能夠?qū)\(yùn)輸實(shí)體資源(如緩存大小,連接表中的項(xiàng)目等)進(jìn)行分配。1.TCP的連接建立客戶服務(wù)器方式TCP的連接和建立都是采用客戶服務(wù)器方式。主動(dòng)發(fā)起連接建立的應(yīng)用進(jìn)程叫做客戶(client)。被動(dòng)等待連接建立的應(yīng)用進(jìn)程叫做服務(wù)器(server)。課件制作人:謝鈞謝希仁用三次握手建立TCP連接SYN=1,seq=x主機(jī)BSYN=1,ACK=1,seq=y,ack=x

1ACK=1,seq=x+1,ack=y

1被動(dòng)打開主動(dòng)打開B發(fā)送確認(rèn)A發(fā)送確認(rèn)主機(jī)A連接請(qǐng)求連接建立狀態(tài)建立TCP連接A的TCP向B發(fā)出連接請(qǐng)求報(bào)文段,其首部中的同步位SYN=1,并選擇序號(hào)x,表明下一個(gè)報(bào)文段的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)是x+1。B的TCP收到連接請(qǐng)求報(bào)文段后,如同意,則發(fā)回確認(rèn),在確認(rèn)報(bào)文段中使SYN=1和ACK=1,其確認(rèn)號(hào)應(yīng)為ack=x

1,并選擇序號(hào)seq=y。A收到此報(bào)文段后,向B給出確認(rèn),其ACK=1,序號(hào)應(yīng)為seq=x+1,確認(rèn)號(hào)應(yīng)為ack=y

1。A的TCP通知上層應(yīng)用進(jìn)程,連接已經(jīng)建立。當(dāng)運(yùn)行服務(wù)器進(jìn)程的主機(jī)B的TCP收到主機(jī)A的確認(rèn)后,也通知其上層應(yīng)用進(jìn)程,連接已經(jīng)建立。課件制作人:謝鈞謝希仁三次握手或三次聯(lián)絡(luò)(three-wayhandshake)防止已失效的連接請(qǐng)求報(bào)文段又傳送到B,因而產(chǎn)生錯(cuò)誤。A發(fā)出連接請(qǐng)求,但因未收到確認(rèn)而再重傳一次。后來(lái)收到了確認(rèn),建立了連接。數(shù)據(jù)傳輸完畢后釋放了連接。A共發(fā)送了兩個(gè)連接請(qǐng)求報(bào)文段,其中的第二個(gè)到達(dá)了B。A發(fā)出的第一個(gè)連接請(qǐng)求報(bào)文段以后又傳送到B。B誤認(rèn)為是A又發(fā)出一次新的連接請(qǐng)求。于是就向A發(fā)出確認(rèn)報(bào)文段,同意建立連接。

A不會(huì)理睬B的確認(rèn)。但B卻以為運(yùn)輸連接就這樣建立了,并一直等待A發(fā)來(lái)數(shù)據(jù)。B的許多資源就這樣白白浪費(fèi)了。課件制作人:謝鈞謝希仁2.TCP的連接釋放FIN=1,seq=xACK=1,seq=y,ack=x

1ACK=1,seq=x+1,ack=z

1應(yīng)用進(jìn)程釋放連接A不再發(fā)送報(bào)文主機(jī)B主機(jī)A①通知主機(jī)應(yīng)用進(jìn)程FIN=1,ACK=1,seq=z,ack=x+1應(yīng)用進(jìn)程釋放連接B不再發(fā)送報(bào)文②發(fā)送確認(rèn)確認(rèn)半關(guān)閉狀態(tài)關(guān)閉狀態(tài)從A到B的連接就釋放了,連接處于半關(guān)閉狀態(tài)。A不能再向B發(fā)送數(shù)據(jù)了,但B有可能還有數(shù)據(jù)發(fā)送給A,A需要對(duì)B發(fā)送的數(shù)據(jù)進(jìn)行確認(rèn)。至此,整個(gè)連接已經(jīng)全部釋放?!?.TCP的有限狀態(tài)機(jī)課件制作人:謝鈞謝希仁CLOSEDESTABLISHEDLISTENCLOSE_WAITFIN_WAIT_1SYN_RCVDFIN_WAIT_2CLOSINGTIME_WAITSYN_SENTLAST_ACK主動(dòng)打開被動(dòng)打開被動(dòng)關(guān)閉主動(dòng)關(guān)閉起點(diǎn)被動(dòng)打開主動(dòng)打開發(fā)送SYN同時(shí)打開收到SYN,發(fā)送SYN,ACK收到ACK數(shù)據(jù)傳送階段

關(guān)閉發(fā)送FIN

關(guān)閉發(fā)送FIN

關(guān)閉發(fā)送FIN收到RST

收到SYN發(fā)送SYN,ACK

關(guān)閉或超時(shí)收到ACK

收到SYN,ACK發(fā)送ACK收到ACK收到ACK收到FIN發(fā)送ACK收到FIN,ACK

發(fā)送ACK收到FIN發(fā)送ACK同時(shí)關(guān)閉收到FIN發(fā)送ACK發(fā)送SYN定時(shí)經(jīng)過(guò)兩倍報(bào)文段壽命后關(guān)閉用戶數(shù)據(jù)報(bào)協(xié)議UDP運(yùn)輸層協(xié)議概述傳輸控制協(xié)議TCP擁塞控制5.15.2內(nèi)容導(dǎo)航CONTENTS5.35.45.4.1擁塞的原因與危害5.4擁塞控制如果網(wǎng)絡(luò)中的負(fù)載(load),即發(fā)送到網(wǎng)絡(luò)中的分組數(shù)量,超過(guò)了網(wǎng)絡(luò)的容量,即網(wǎng)絡(luò)中能處理的分組數(shù)量,那么在網(wǎng)絡(luò)中就會(huì)發(fā)生擁塞(congestion)。所謂擁塞控制(congestioncontrol)就是防止過(guò)多的數(shù)據(jù)注入到網(wǎng)絡(luò)中,這樣可以使網(wǎng)絡(luò)中的路由器或鏈路不致過(guò)載。課件制作人:謝鈞謝希仁提供的負(fù)載吞吐量理想的擁塞控制實(shí)際的擁塞控制0死鎖(吞吐量=0)無(wú)擁塞控制擁塞輕度擁塞一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)擁塞例子理想吞吐量為100Mb/s不加任何控制只能達(dá)到60Mb/s當(dāng)分組丟失時(shí),任何用于傳輸該分組的上游傳輸能力都被浪費(fèi)!課件制作人:謝鈞謝希仁10Mbit/s100Mbit/s100Mbit/s100Mbit/s100Mbit/sADBCR1R2擁塞控制與流量控制的區(qū)別5.4.2擁塞控制的基本方法課件制作人:謝鈞謝希仁流量控制往往指在給定的發(fā)送端和接收端之間的點(diǎn)對(duì)點(diǎn)通信量的控制。流量控制所要做的就是抑制發(fā)送端發(fā)送數(shù)據(jù)的速率,以便使接收端來(lái)得及接收。擁塞控制是一個(gè)全局性的過(guò)程,涉及到所有的主機(jī)、所有的路由器,以及與降低網(wǎng)絡(luò)傳輸性能有關(guān)的所有因素。擁塞控制流量控制開環(huán)控制和閉環(huán)控制開環(huán)控制方法就是在設(shè)計(jì)網(wǎng)絡(luò)時(shí)事先將有關(guān)發(fā)生擁塞的因素考慮周到,力求網(wǎng)絡(luò)在工作時(shí)不產(chǎn)生擁塞。閉環(huán)控制是基于反饋環(huán)路的概念。屬于閉環(huán)控制的有以下幾種措施:監(jiān)測(cè)網(wǎng)絡(luò)系統(tǒng)以便檢測(cè)到擁塞在何時(shí)、何處發(fā)生。將擁塞發(fā)生的信息傳送到可采取行動(dòng)的地方。調(diào)整網(wǎng)絡(luò)系統(tǒng)的運(yùn)行以解決出現(xiàn)的問(wèn)題。課件制作人:謝鈞謝希仁顯式反饋和隱式反饋根據(jù)擁塞反饋信息的形式又可以將閉環(huán)擁塞控制算法分為顯式反饋算法和隱式反饋算法。在顯式反饋算法中,從擁塞點(diǎn)(即路由器)向源端提供關(guān)于網(wǎng)絡(luò)中擁塞狀態(tài)的顯式反饋信息。在隱式反饋算法中,源端通過(guò)對(duì)網(wǎng)絡(luò)行為的觀察(如分組丟失與往返時(shí)延)來(lái)推斷網(wǎng)絡(luò)是否發(fā)生了擁塞。TCP采用的就是隱式反饋算法。課件制作人:謝鈞謝希仁5.4.3TCP的擁塞控制發(fā)送方維持一個(gè)叫做擁塞窗口cwnd(congestionwindow)的狀態(tài)變量。擁塞窗口的大小取決于網(wǎng)絡(luò)的擁塞程度,并且動(dòng)態(tài)地在變化。發(fā)送方讓自己的發(fā)送窗口等于擁塞窗口。如再考慮到接收方的接收能力,則發(fā)送窗口還可能小于擁塞窗口。發(fā)送方控制擁塞窗口的原則是:只要網(wǎng)絡(luò)沒有出現(xiàn)擁塞,擁塞窗口就再增大一些,以便把更多的分組發(fā)送出去。但只要網(wǎng)絡(luò)出現(xiàn)擁塞,擁塞窗口就減小一些,以減少注入到網(wǎng)絡(luò)中的分組數(shù)。課件制作人:謝鈞謝希仁接收方窗口rwnd和擁塞窗口cwnd課件制作人:謝鈞謝希仁擁塞窗口cwnd(congestionwindow)是發(fā)送方根據(jù)自己估計(jì)的網(wǎng)絡(luò)擁塞程度而設(shè)置的窗口值,是來(lái)自發(fā)送方的流量控制。接收方窗口rwnd這是接收方根據(jù)其目前的接收緩存大小所許諾的最新的窗口值,是來(lái)自接收方的流量控制。接收方將此窗口值放在TCP報(bào)文的首部中的窗口字段,傳送給發(fā)送方。接收方窗口擁塞窗口發(fā)送窗口的上限值發(fā)送方的發(fā)送窗口的上限值應(yīng)當(dāng)取為接收方窗口rwnd和擁塞窗口cwnd這兩個(gè)變量中較小的一個(gè),即應(yīng)按以下公式確定:發(fā)送窗口的上限值

Min[rwnd,cwnd](5-4)當(dāng)rwnd<cwnd時(shí),是接收方的接收能力限制發(fā)送窗口的最大值。當(dāng)cwnd<rwnd時(shí),則是網(wǎng)絡(luò)的擁塞限制發(fā)送窗口的最大值。

課件制作人:謝鈞謝希仁1.慢啟動(dòng)和擁塞避免在主機(jī)剛剛開始發(fā)送報(bào)文段時(shí)可先將擁塞窗口cwnd設(shè)置為一個(gè)最大報(bào)文段MSS的數(shù)值。在每收到一個(gè)對(duì)新的報(bào)文段的確認(rèn)后,將擁塞窗口增加至多一個(gè)MSS的數(shù)值。用這樣的方法逐步增大發(fā)送方的擁塞窗口cwnd,可以使分組注入到網(wǎng)絡(luò)的速率更加合理。課件制作人:謝鈞謝希仁用例子說(shuō)明慢啟動(dòng)算法的原理用報(bào)文段的個(gè)數(shù)作為窗口大小的單位。還假定接收方窗口rwnd足夠大,因此發(fā)送窗口只受發(fā)送方的擁塞窗口的制約。發(fā)送方先設(shè)置cwnd=1,發(fā)送M0,接收方收到后發(fā)回ACK1。發(fā)送方收到ACK1后,把cwnd從1增大到2,發(fā)送方接著發(fā)送M1和M2兩個(gè)報(bào)文段。接收方收到后發(fā)回ACK2和ACK3。發(fā)送方每收到一個(gè)對(duì)新報(bào)文段的確認(rèn)ACK,就使發(fā)送方的擁塞窗口加1,因此現(xiàn)在發(fā)送方的cwnd又從2增大到4,并可發(fā)送M3~M6共4個(gè)報(bào)文段。課件制作人:謝鈞謝希仁發(fā)送方每收到一個(gè)對(duì)新報(bào)文段的確認(rèn)(重傳的不算在內(nèi))就使cwnd加1。用例子說(shuō)明慢啟動(dòng)算法的原理課件制作人:謝鈞謝希仁發(fā)送方接收方發(fā)送M1

確認(rèn)M1cwnd=1發(fā)送方每收到一個(gè)對(duì)新報(bào)文段的確認(rèn)(重傳的不算在內(nèi))就使cwnd加1。用例子說(shuō)明慢啟動(dòng)算法的原理課件制作人:謝鈞謝希仁發(fā)送方接收方發(fā)送M1

確認(rèn)M1發(fā)送M2~M3

確認(rèn)M2~M3cwnd=1cwnd=2發(fā)送方每收到一個(gè)對(duì)新報(bào)文段的確認(rèn)(重傳的不算在內(nèi))就使cwnd加1。用例子說(shuō)明慢啟動(dòng)算法的原理課件制作人:謝鈞謝希仁發(fā)送方接收方發(fā)送M1

確認(rèn)M1發(fā)送M2~M3

確認(rèn)M2~M3發(fā)送M4~M7

確認(rèn)M4~M7cwnd=1cwnd=2cwnd=4發(fā)送方每收到一個(gè)對(duì)新報(bào)文段的確認(rèn)(重傳的不算在內(nèi))就使cwnd加1。用例子說(shuō)明慢啟動(dòng)算法的原理課件制作人:謝鈞謝希仁輪次1輪次2輪次3發(fā)送方接收方發(fā)送M1

確認(rèn)M1發(fā)送M2~M3

確認(rèn)M2~M3發(fā)送M4~M7

確認(rèn)M4~M7cwnd=1cwnd=2cwnd=4發(fā)送M8~M15…cwnd=8慢啟動(dòng)的作用可見慢啟動(dòng)的“慢”并不是指cwnd的增長(zhǎng)速率慢,而是指在開始時(shí)發(fā)送速率“慢”(cwnd=1)。使用慢啟動(dòng)算法可以使發(fā)送方在開始發(fā)送時(shí)向網(wǎng)絡(luò)注入的分組數(shù)大大減少。這對(duì)防止網(wǎng)絡(luò)出現(xiàn)擁塞是非個(gè)常有力的措施。課件制作人:謝鈞謝希仁開始門限ssthresh為了防止擁塞窗口cwnd的增長(zhǎng)引起網(wǎng)絡(luò)擁塞,還需要另一個(gè)狀態(tài)變量,即慢啟動(dòng)門限ssthresh,其用法如下:當(dāng)cwnd<ssthresh時(shí),使用上述的慢啟動(dòng)算法。當(dāng)cwnd>ssthresh時(shí),停止使用慢啟動(dòng)算法而改用擁塞避免算法。當(dāng)cwnd=ssthresh時(shí),既可使用慢啟動(dòng)算法,也可使用擁塞避免算法。課件制作人:謝鈞謝希仁擁塞避免算法擁塞避免算法使發(fā)送方的擁塞窗口cwnd每經(jīng)過(guò)一個(gè)往返時(shí)延RTT就增加一個(gè)MSS的大?。ǘ还茉跁r(shí)間RTT內(nèi)收到了幾個(gè)ACK)。擁塞窗口cwnd按線性規(guī)律緩慢增長(zhǎng),比慢啟動(dòng)算法的擁塞窗口增長(zhǎng)速率緩慢得多。課件制作人:謝鈞謝希仁當(dāng)網(wǎng)絡(luò)出現(xiàn)擁塞時(shí)隨著cwnd增大,發(fā)送方的發(fā)送速率會(huì)超過(guò)網(wǎng)絡(luò)可用帶寬,導(dǎo)致分組丟失,即出現(xiàn)網(wǎng)絡(luò)擁塞。為是網(wǎng)絡(luò)迅速?gòu)膿砣麪顟B(tài)恢復(fù)到正常,發(fā)送方把擁塞窗口cwnd重新設(shè)置為1,慢啟動(dòng)門限ssthresh設(shè)置為出現(xiàn)擁塞時(shí)的發(fā)送窗口值的一半,又執(zhí)行慢開始算法。這樣做的目的就是要迅速減少主機(jī)發(fā)送到網(wǎng)絡(luò)中的分組數(shù),使得發(fā)生擁塞的路由器有足夠時(shí)間把隊(duì)列中積壓的分組處理完畢。課件制作人:謝鈞謝希仁222424681012141618200048121620擁塞窗口cwnd新的ssthresh值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長(zhǎng)ssthresh的初始值慢啟動(dòng)慢啟動(dòng)慢啟動(dòng)擁塞避免加法增大擁塞避免加法增大傳輸輪次乘法減小當(dāng)TCP連接進(jìn)行初始化時(shí),將擁塞窗口置為1。為便于理解,圖中的窗口單位不使用字節(jié)而使用報(bào)文段。慢啟動(dòng)門限的初始值設(shè)置為16個(gè)報(bào)文段,即ssthresh=16。慢啟動(dòng)和擁塞避免算法的實(shí)現(xiàn)舉例課件制作人:謝鈞謝希仁222424681012141618200048121620擁塞窗口cwnd新的ssthresh值網(wǎng)絡(luò)擁塞指

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論