數(shù)據(jù)通信-8章-運(yùn)輸層_第1頁
數(shù)據(jù)通信-8章-運(yùn)輸層_第2頁
數(shù)據(jù)通信-8章-運(yùn)輸層_第3頁
數(shù)據(jù)通信-8章-運(yùn)輸層_第4頁
數(shù)據(jù)通信-8章-運(yùn)輸層_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、計(jì)算機(jī)網(wǎng)絡(luò)第 8 章 運(yùn)輸層運(yùn)輸層是整個網(wǎng)絡(luò)體系結(jié)構(gòu)中的關(guān)鍵層次之一。這層協(xié)議的作用是監(jiān)視數(shù)據(jù)從一個設(shè)備的應(yīng)用程序傳輸?shù)搅硪粋€設(shè)備的應(yīng)用程序。更重要的是:該層在上層協(xié)議和低層協(xié)議提供的服務(wù)間擔(dān)當(dāng)聯(lián)絡(luò)工作。上層使用運(yùn)輸層提供的服務(wù)和網(wǎng)絡(luò)層交互,而不必與直接與低層打交道。運(yùn)輸層的主要功能是:差錯控制,流量控制,擁塞控制。在TCP/IP體系結(jié)構(gòu)中運(yùn)輸層是TCP層,即傳輸控制層8.1 運(yùn)輸層協(xié)議概述8.1.1 進(jìn)程之間的通信n從通信和信息處理的角度看,運(yùn)輸層向它上面的應(yīng)用層提供通信服務(wù),它屬于面向通信部分的最高層,同時(shí)也是用戶功能中的最低層。n當(dāng)網(wǎng)絡(luò)的邊緣部分中的兩個主機(jī)使用網(wǎng)絡(luò)的核心部分的功能進(jìn)行端

2、到端的通信時(shí),只有位于網(wǎng)絡(luò)邊緣部分的主機(jī)的協(xié)議棧才有運(yùn)輸層,而網(wǎng)絡(luò)核心部分中的路由器在轉(zhuǎn)發(fā)分組時(shí)都只用到下三層的功能。 運(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復(fù)用和分用n 復(fù)用(Multiplexing)指在發(fā)送方不同的應(yīng)用進(jìn)程都可以使用同一個運(yùn)輸層協(xié)議傳送數(shù)據(jù)(當(dāng)然要加上適當(dāng)?shù)氖撞浚﹏ 分用(Demultiplexing)指接收方的運(yùn)輸層在剝

3、離報(bào)文的首部后能夠把這些數(shù)據(jù)正確交付到目的應(yīng)用程序應(yīng)用進(jìn)程之間的通信n兩個主機(jī)進(jìn)行通信實(shí)際上就是兩個主機(jī)中的應(yīng)用進(jìn)程互相通信。 n應(yīng)用進(jìn)程之間的通信又稱為端到端的通信。 n運(yùn)輸層的一個很重要的功能就是復(fù)用和分用。應(yīng)用層不同進(jìn)程的報(bào)文通過不同的端口向下交到運(yùn)輸層,再往下就共用網(wǎng)絡(luò)層提供的服務(wù)。n“運(yùn)輸層提供應(yīng)用進(jìn)程間的邏輯通信”。“邏輯通信”的意思是:運(yùn)輸層之間的通信好像是沿水平方向傳送數(shù)據(jù)。但事實(shí)上這兩個運(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)程之間的邏輯通

4、信)因 特 網(wǎng)運(yùn)輸層的主要功能 n運(yùn)輸層為應(yīng)用進(jìn)程之間提供端到端的邏輯通信(但網(wǎng)絡(luò)層是為主機(jī)之間提供邏輯通信)。n運(yùn)輸層還要對收到的報(bào)文進(jìn)行差錯檢測。n運(yùn)輸層需要有兩種不同的運(yùn)輸協(xié)議,即面向連接的 TCP 和無連接的 UDP。 兩種不同的運(yùn)輸協(xié)議n運(yùn)輸層向高層用戶屏蔽了下面網(wǎng)絡(luò)核心的細(xì)節(jié)(如網(wǎng)絡(luò)拓?fù)?、所采用的路由選擇協(xié)議等),它使應(yīng)用進(jìn)程看見的就是好像在兩個運(yùn)輸層實(shí)體之間有一條端到端的邏輯通信信道。n當(dāng)運(yùn)輸層采用面向連接的 TCP 協(xié)議時(shí),盡管下面的網(wǎng)絡(luò)是不可靠的(只提供盡最大努力服務(wù)),但這種邏輯通信信道就相當(dāng)于一條全雙工的可靠信道。n當(dāng)運(yùn)輸層采用無連接的 UDP 協(xié)議時(shí),這種邏輯通信信道是

5、一條不可靠信道。 TCP/IP 的運(yùn)輸層有兩個不同的協(xié)議:(1) 用戶數(shù)據(jù)報(bào)協(xié)議 UDP (User Datagram Protocol)(2) 傳輸控制協(xié)議 TCP (Transmission Control Protocol)8.1.2 運(yùn)輸層的兩個主要協(xié)議 n兩個對等運(yùn)輸實(shí)體在通信時(shí)傳送的數(shù)據(jù)單位叫作運(yùn)輸協(xié)議數(shù)據(jù)單元 TPDU (Transport Protocol Data Unit)。nTCP 傳送的數(shù)據(jù)單位協(xié)議是 TCP 報(bào)文段(segment)n UDP 傳送的數(shù)據(jù)單位協(xié)議是 UDP 報(bào)文或用戶數(shù)據(jù)報(bào)。 TCP 與 UDP TCP/IP 體系中的運(yùn)輸層協(xié)議 TCPUDPIP應(yīng)用層

6、與各種網(wǎng)絡(luò)接口運(yùn)輸層應(yīng)用層協(xié)議使用到的TCP或UDP 應(yīng)用應(yīng)用應(yīng)用層協(xié)議應(yīng)用層協(xié)議運(yùn)輸層協(xié)議運(yùn)輸層協(xié)議名字轉(zhuǎn)換DNSUDP文件傳輸TFTPUDP路由選擇協(xié)議RIPUDPIP地址配置BOOTP DHCPUDP網(wǎng)絡(luò)管理SNMPUDP遠(yuǎn)程文件服務(wù)器NFSUDPIP電話專用協(xié)議UDP流式多媒體通信專用協(xié)議UDP電子郵件SMTPTCP遠(yuǎn)程終端服務(wù)TELNETTCP萬維網(wǎng)HTTPTCP文件傳送FTPTCP 4 字節(jié)RIP 報(bào)文附. RIP2 協(xié)議的報(bào)文格式 路由信息(20 字節(jié)/路由)可重復(fù)出現(xiàn)最多 25 個IP 數(shù)據(jù)報(bào)路由標(biāo)記網(wǎng)絡(luò)地址地址族標(biāo)識符距離 (1-16) IP 首部UDP 首部首部路由部分必為

7、 0版本命令 4 字節(jié)子網(wǎng)掩碼下一跳路由器地址UDP 用戶數(shù)據(jù)報(bào)TCP 與 UDP nUDP 在傳送數(shù)據(jù)之前不需要先建立連接。對方的運(yùn)輸層在收到 UDP 報(bào)文后,不需要給出任何確認(rèn)。雖然 UDP 不提供可靠交付,但在某些情況下 UDP 是一種最有效的工作方式。nTCP 則提供面向連接的服務(wù)。TCP 不提供廣播或多播服務(wù)。由于 TCP 要提供可靠的、面向連接的運(yùn)輸服務(wù),因此不可避免地增加了許多的開銷。這不僅使協(xié)議數(shù)據(jù)單元的首部增大很多,還要占用許多的處理機(jī)資源。 還要強(qiáng)調(diào)兩點(diǎn) n運(yùn)輸層的 UDP 用戶數(shù)據(jù)報(bào)與網(wǎng)際層的IP數(shù)據(jù)報(bào)有很大區(qū)別。IP 數(shù)據(jù)報(bào)要經(jīng)過互連網(wǎng)中許多路由器的存儲轉(zhuǎn)發(fā),但 UDP

8、 用戶數(shù)據(jù)報(bào)是在運(yùn)輸層的端到端抽象的邏輯信道中傳送的。nTCP 報(bào)文段是在運(yùn)輸層抽象的端到端邏輯信道中傳送,這種信道是可靠的全雙工信道。但這樣的信道卻不知道究竟經(jīng)過了哪些路由器,而這些路由器也根本不知道上面的運(yùn)輸層是否建立了 TCP 連接。 8.1.3 運(yùn)輸層的端口 n運(yùn)行在計(jì)算機(jī)中的進(jìn)程是用進(jìn)程標(biāo)識符來標(biāo)志的。n運(yùn)行在應(yīng)用層的各種應(yīng)用進(jìn)程卻不應(yīng)當(dāng)讓計(jì)算機(jī)操作系統(tǒng)指派它的進(jìn)程標(biāo)識符。這是因?yàn)樵谝蛱鼐W(wǎng)上使用的計(jì)算機(jī)的操作系統(tǒng)種類很多,而不同的操作系統(tǒng)又使用不同格式的進(jìn)程標(biāo)識符。n為了使運(yùn)行不同操作系統(tǒng)的計(jì)算機(jī)的應(yīng)用進(jìn)程能夠互相通信,就必須用統(tǒng)一的方法對 TCP/IP 體系的應(yīng)用進(jìn)程進(jìn)行標(biāo)志。 需

9、要解決的問題 n由于進(jìn)程的創(chuàng)建和撤銷都是動態(tài)的,發(fā)送方幾乎無法識別其他機(jī)器上的進(jìn)程。n有時(shí)我們會改換接收報(bào)文的進(jìn)程,但并不需要通知所有發(fā)送方。n我們往往需要利用目的主機(jī)提供的功能來識別終點(diǎn),而不需要知道實(shí)現(xiàn)這個功能的進(jìn)程。端口號(protocol port number)簡稱為端口(port)n解決這個問題的方法就是在運(yùn)輸層使用協(xié)議端口號(protocol port number),或通常簡稱為端口(port)。n雖然通信的終點(diǎn)是應(yīng)用進(jìn)程,但我們可以把端口想象是通信的終點(diǎn),因?yàn)槲覀冎灰岩獋魉偷膱?bào)文交到目的主機(jī)的某一個合適的目的端口,剩下的工作(即最后交付目的進(jìn)程)就由 TCP 來完成。軟件端

10、口與硬件端口n在協(xié)議棧層間的抽象的協(xié)議端口是軟件端口。n路由器或交換機(jī)上的端口是硬件端口。n硬件端口是不同硬件設(shè)備進(jìn)行交互的接口,而軟件端口是應(yīng)用層的各種協(xié)議進(jìn)程與運(yùn)輸實(shí)體進(jìn)行層間交互的一種地址。 TCP 的端口 n端口用一個 16 位端口號進(jìn)行標(biāo)志。n端口號只具有本地意義,即端口號只是為了標(biāo)志本計(jì)算機(jī)應(yīng)用層中的各進(jìn)程。在因特網(wǎng)中不同計(jì)算機(jī)的相同端口號是沒有聯(lián)系的。三類端口 n熟知端口,數(shù)值一般為 01023。n登記端口號,數(shù)值為102449151,為沒有熟知端口號的應(yīng)用程序使用的。使用這個范圍的端口號必須在 IANA 登記,以防止重復(fù)。n客戶端口號或短暫端口號,數(shù)值為4915265535,留

11、給客戶進(jìn)程選擇暫時(shí)使用。當(dāng)服務(wù)器進(jìn)程收到客戶進(jìn)程的報(bào)文時(shí),就知道了客戶進(jìn)程所使用的動態(tài)端口號。通信結(jié)束后,這個端口號可供其他客戶進(jìn)程以后使用。 8.2 用戶數(shù)據(jù)報(bào)協(xié)議 UDP 8.2.1 UDP 概述 nUDP 只在 IP 的數(shù)據(jù)報(bào)服務(wù)之上增加了很少一點(diǎn)的功能,即端口的功能和差錯檢測的功能。n雖然 UDP 用戶數(shù)據(jù)報(bào)只能提供不可靠的交付,但 UDP 在某些方面有其特殊的優(yōu)點(diǎn)。UDP 的主要特點(diǎn) nUDP 是無連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接。nUDP 使用盡最大努力交付,即不保證可靠交付,同時(shí)也不使用擁塞控制。nUDP 是面向報(bào)文的。UDP 沒有擁塞控制,很適合多媒體通信的要求。 nUDP

12、 支持一對一、一對多、多對一和多對多的交互通信。nUDP 的首部開銷小,只有 8 個字節(jié)。 面向報(bào)文的 UDPn發(fā)送方 UDP 對應(yīng)用程序交下來的報(bào)文,在添加首部后就向下交付 IP 層。UDP 對應(yīng)用層交下來的報(bào)文,既不合并,也不拆分,而是保留這些報(bào)文的邊界。n應(yīng)用層交給 UDP 多長的報(bào)文,UDP 就照樣發(fā)送,即一次發(fā)送一個報(bào)文。n接收方 UDP 對 IP 層交上來的 UDP 用戶數(shù)據(jù)報(bào),在去除首部后就原封不動地交付上層的應(yīng)用進(jìn)程,一次交付一個完整的報(bào)文。n應(yīng)用程序必須選擇合適大小的報(bào)文。UDP 是面向報(bào)文的 IP 數(shù)據(jù)報(bào)的數(shù)據(jù)部分IP 首部IP 層UDP 首部UDP 用戶數(shù)據(jù)報(bào)的數(shù)據(jù)部分運(yùn)

13、輸層應(yīng)用層報(bào)文應(yīng)用層8.2.2 UDP 的首部格式 偽首部源端口目的端口長 度檢驗(yàn)和數(shù) 據(jù)首 部UDP長度源 IP 地址目的 IP 地址017IP 數(shù)據(jù)報(bào)字節(jié)44112122222字節(jié)發(fā)送在前數(shù) 據(jù)首 部UDP 用戶數(shù)據(jù)報(bào)UDP 基于端口的分用 IP 層UDP 數(shù)據(jù)報(bào)到達(dá)端口 2端口 3端口 1UDP 分用偽首部源端口目的端口長 度檢驗(yàn)和數(shù) 據(jù)首 部UDP長度源 IP 地址目的 IP 地址017IP 數(shù)據(jù)報(bào)字節(jié)44112122222字節(jié)發(fā)送在前數(shù) 據(jù)首 部UDP 用戶數(shù)據(jù)報(bào)用戶數(shù)據(jù)報(bào) UDP 有兩個字段:數(shù)據(jù)字段和首部字段。首部字段有 8 個字節(jié),由 4 個字段組成,每個字段都是兩個字節(jié)。 偽

14、首部源端口目的端口長 度檢驗(yàn)和數(shù) 據(jù)首 部UDP長度源 IP 地址目的 IP 地址017IP 數(shù)據(jù)報(bào)字節(jié)44112122222字節(jié)發(fā)送在前數(shù) 據(jù)首 部UDP 用戶數(shù)據(jù)報(bào)在計(jì)算檢驗(yàn)和時(shí),臨時(shí)把“偽首部”和 UDP 用戶數(shù)據(jù)報(bào)連接在一起。偽首部僅僅是為了計(jì)算檢驗(yàn)和。計(jì)算 UDP 檢驗(yàn)和的例子 10011001 00010011 153.1900001000 01101000 8.10410101011 00000011 171.300001110 00001011 14.1100000000 00010001 0 和 1700000000 00001111 1500000100 00111111

15、108700000000 00001101 1300000000 00001111 1500000000 00000000 0(檢驗(yàn)和)01010100 01000101 數(shù)據(jù)01010011 01010100 數(shù)據(jù)01001001 01001110 數(shù)據(jù)01000111 00000000 數(shù)據(jù)和 0(填充)10010110 11101101 求和得出的結(jié)果01101001 00010010 檢驗(yàn)和 04112 字節(jié)偽首部8 字節(jié)UDP 首部7 字節(jié)數(shù)據(jù)填充按二進(jìn)制反碼運(yùn)算求和將得出的結(jié)果求反碼全 0 17 15 1087 13 15 全 0數(shù)據(jù) 數(shù)據(jù)

16、數(shù)據(jù) 數(shù)據(jù)數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù) 全 0UDP編程 1、雙邊創(chuàng)建套接字2、服務(wù)器調(diào)用bind()函數(shù),給套接字分配一個公認(rèn)端口3、客戶機(jī)就能使用sendto()函數(shù)向服務(wù)器發(fā)送數(shù)據(jù)、信息;同樣客戶機(jī)和服務(wù)器都能使用sendto()和recvfrom()來傳送數(shù)據(jù)報(bào)直到完成傳遞4、傳完后各自調(diào)用closesocket()來關(guān)閉套接字?jǐn)?shù)據(jù)報(bào)套接字的使用方法8.3 傳輸控制協(xié)議 TCP 概述 8.3.1 TCP 最主要的特點(diǎn) nTCP 是面向連接的運(yùn)輸層協(xié)議。n每一條 TCP 連接只能有兩個端點(diǎn)(endpoint),每一條 TCP 連接只能是點(diǎn)對點(diǎn)的(一對一)。 nTCP 提供可靠交付的服務(wù)。n TCP

17、提供全雙工通信。n面向字節(jié)流。 7 68HTCP 面向流的概念 發(fā)送 TCP 報(bào)文段發(fā)送方接收方把字節(jié)寫入發(fā)送緩存從接收緩存讀取字節(jié)應(yīng)用進(jìn)程應(yīng)用進(jìn)程1230181716151419202145131211H109 H加上 TCP 首部構(gòu)成 TCP 報(bào)文段TCPTCP字節(jié)流字節(jié)流H表示 TCP 報(bào)文段的首部x表示序號為 x 的數(shù)據(jù)字節(jié)TCP 連接應(yīng)當(dāng)注意nTCP 連接是一條虛連接而不是一條真正的物理連接。nTCP 對應(yīng)用進(jìn)程一次把多長的報(bào)文發(fā)送到TCP 的緩存中是不關(guān)心的。nTCP 根據(jù)對方給出的窗口值和當(dāng)前網(wǎng)絡(luò)擁塞的程度來決定一個報(bào)文段應(yīng)包含多少個字節(jié)(UDP 發(fā)送的報(bào)文長度是應(yīng)用進(jìn)程給出的)

18、。nTCP 可把太長的數(shù)據(jù)塊劃分短一些再傳送。TCP 也可等待積累有足夠多的字節(jié)后再構(gòu)成報(bào)文段發(fā)送出去。 8.3.2 TCP 的連接 nTCP 把連接作為最基本的抽象。n每一條 TCP 連接有兩個端點(diǎn)。nTCP 連接的端點(diǎn)不是主機(jī),不是主機(jī)的IP 地址,不是應(yīng)用進(jìn)程,也不是運(yùn)輸層的協(xié)議端口。TCP 連接的端點(diǎn)叫做套接字(socket)或插口。n端口號拼接到(contatenated with) IP 地址即構(gòu)成了套接字。 套接字 (socket) 套接字 socket = (IP地址: 端口號) (5-1)n每一條 TCP 連接唯一地被通信兩端的兩個端點(diǎn)(即兩個套接字)所確定。即: TCP 連

19、接 := socket1, socket2 = (IP1: port1), (IP2: port2) (5-2)同一個名詞 socket有多種不同的意思 n應(yīng)用編程接口 API 稱為 socket API, 簡稱為 socket。nsocket API 中使用的一個函數(shù)名也叫作 socket。n調(diào)用 socket 函數(shù)的端點(diǎn)稱為 socket。n調(diào)用 socket 函數(shù)時(shí)其返回值稱為 socket 描述符,可簡稱為 socket。n在操作系統(tǒng)內(nèi)核中連網(wǎng)協(xié)議的 Berkeley 實(shí)現(xiàn),稱為 socket 實(shí)現(xiàn)。 TCP套接字編程 1、服務(wù)器創(chuàng)建一個用于偵聽的套接字,為該套接字分配地址2、調(diào)用li

20、sten()函數(shù)使他處于偵聽狀態(tài)3、客戶機(jī)在創(chuàng)建完套接字后,為套接字分配地址4、調(diào)用connect()函數(shù),請求與服務(wù)器套接字連接5、服務(wù)器收到請求連接后,調(diào)用accept()函數(shù),該函數(shù)用于連接套接字,應(yīng)用該套接字與客戶機(jī)上的連接套接字,客戶就可以在服務(wù)器和客戶之間進(jìn)行數(shù)據(jù)傳輸6、結(jié)束數(shù)據(jù)傳輸,調(diào)用closesocket()關(guān)閉套接字8.4 TCP的擁塞控制8.4.1 擁塞控制的一般原理 n在某段時(shí)間,若對網(wǎng)絡(luò)中某資源的需求超過了該資源所能提供的可用部分,網(wǎng)絡(luò)的性能就要變壞產(chǎn)生擁塞(congestion)。n出現(xiàn)資源擁塞的條件: 對資源需求的總和 可用資源 (5-7) n若網(wǎng)絡(luò)中有許多資源同

21、時(shí)產(chǎn)生擁塞,網(wǎng)絡(luò)的性能就要明顯變壞,整個網(wǎng)絡(luò)的吞吐量將隨輸入負(fù)荷的增大而下降。 擁塞控制與流量控制的關(guān)系 n擁塞控制所要做的都有一個前提,就是網(wǎng)絡(luò)能夠承受現(xiàn)有的網(wǎng)絡(luò)負(fù)荷。n擁塞控制是一個全局性的過程,涉及到所有的主機(jī)、所有的路由器,以及與降低網(wǎng)絡(luò)傳輸性能有關(guān)的所有因素。 n流量控制往往指在給定的發(fā)送端和接收端之間的點(diǎn)對點(diǎn)通信量的控制。 n流量控制所要做的就是抑制發(fā)送端發(fā)送數(shù)據(jù)的速率,以便使接收端來得及接收。 擁塞控制所起的作用 提供的負(fù)載吞吐量理想的擁塞控制實(shí)際的擁塞控制0死鎖(吞吐量 = 0)無擁塞控制擁塞輕度擁塞擁塞控制的一般原理 n擁塞控制是很難設(shè)計(jì)的,因?yàn)樗且粋€動態(tài)的(而不是靜態(tài)的)

22、問題。n當(dāng)前網(wǎng)絡(luò)正朝著高速化的方向發(fā)展,這很容易出現(xiàn)緩存不夠大而造成分組的丟失。但分組的丟失是網(wǎng)絡(luò)發(fā)生擁塞的征兆而不是原因。n在許多情況下,甚至正是擁塞控制本身成為引起網(wǎng)絡(luò)性能惡化甚至發(fā)生死鎖的原因。這點(diǎn)應(yīng)特別引起重視。 開環(huán)控制和閉環(huán)控制 n開環(huán)控制方法就是在設(shè)計(jì)網(wǎng)絡(luò)時(shí)事先將有關(guān)發(fā)生擁塞的因素考慮周到,力求網(wǎng)絡(luò)在工作時(shí)不產(chǎn)生擁塞。 n閉環(huán)控制是基于反饋環(huán)路的概念。屬于閉環(huán)控制的有以下幾種措施: n監(jiān)測網(wǎng)絡(luò)系統(tǒng)以便檢測到擁塞在何時(shí)、何處發(fā)生。n將擁塞發(fā)生的信息傳送到可采取行動的地方。n調(diào)整網(wǎng)絡(luò)系統(tǒng)的運(yùn)行以解決出現(xiàn)的問題。8.4.2 幾種擁塞控制方法1. 慢開始和擁塞避免n發(fā)送方維持一個叫做擁塞

23、窗口 cwnd (congestion window)的狀態(tài)變量。擁塞窗口的大小取決于網(wǎng)絡(luò)的擁塞程度,并且動態(tài)地在變化。發(fā)送方讓自己的發(fā)送窗口等于擁塞窗口。如再考慮到接收方的接收能力,則發(fā)送窗口還可能小于擁塞窗口。n發(fā)送方控制擁塞窗口的原則是:只要網(wǎng)絡(luò)沒有出現(xiàn)擁塞,擁塞窗口就再增大一些,以便把更多的分組發(fā)送出去。但只要網(wǎng)絡(luò)出現(xiàn)擁塞,擁塞窗口就減小一些,以減少注入到網(wǎng)絡(luò)中的分組數(shù)。 慢開始算法的原理 n在主機(jī)剛剛開始發(fā)送報(bào)文段時(shí)可先設(shè)置擁塞窗口 cwnd = 1,即設(shè)置為一個最大報(bào)文段 MSS 的數(shù)值。n在每收到一個對新的報(bào)文段的確認(rèn)后,將擁塞窗口加 1,即增加一個 MSS 的數(shù)值。n用這樣的方

24、法逐步增大發(fā)送端的擁塞窗口 cwnd,可以使分組注入到網(wǎng)絡(luò)的速率更加合理。 發(fā)送方接收方發(fā)送 M1 確認(rèn) M1發(fā)送 M2M3 確認(rèn) M2M3 發(fā)送 M4M7 確認(rèn) M4M7 cwnd = 1 cwnd = 2 cwnd = 4 發(fā)送 M8M15cwnd = 8 tt發(fā)送方每收到一個對新報(bào)文段的確認(rèn)(重傳的不算在內(nèi))就使 cwnd 加 1。 輪次 1輪次 2輪次 3傳輸輪次(transmission round)n使用慢開始算法后,每經(jīng)過一個傳輸輪次,擁塞窗口 cwnd 就加倍。 n一個傳輸輪次所經(jīng)歷的時(shí)間其實(shí)就是往返時(shí)間 RTT。n“傳輸輪次”更加強(qiáng)調(diào):把擁塞窗口 cwnd 所允許發(fā)送的報(bào)文段

25、都連續(xù)發(fā)送出去,并收到了對已發(fā)送的最后一個字節(jié)的確認(rèn)。n例如,擁塞窗口 cwnd = 4,這時(shí)的往返時(shí)間 RTT 就是發(fā)送方連續(xù)發(fā)送 4 個報(bào)文段,并收到這 4 個報(bào)文段的確認(rèn),總共經(jīng)歷的時(shí)間。 設(shè)置慢開始門限狀態(tài)變量ssthreshn慢開始門限 ssthresh 的用法如下:n當(dāng) cwnd ssthresh 時(shí),停止使用慢開始算法而改用擁塞避免算法。n當(dāng) cwnd = ssthresh 時(shí),既可使用慢開始算法,也可使用擁塞避免算法。n擁塞避免算法的思路是讓擁塞窗口 cwnd 緩慢地增大,即每經(jīng)過一個往返時(shí)間 RTT 就把發(fā)送方的擁塞窗口 cwnd 加 1,而不是加倍,使擁塞窗口 cwnd 按

26、線性規(guī)律緩慢增長。當(dāng)網(wǎng)絡(luò)出現(xiàn)擁塞時(shí)n無論在慢開始階段還是在擁塞避免階段,只要發(fā)送方判斷網(wǎng)絡(luò)出現(xiàn)擁塞(其根據(jù)就是沒有按時(shí)收到確認(rèn)),就要把慢開始門限 ssthresh 設(shè)置為出現(xiàn)擁塞時(shí)的發(fā)送方窗口值的一半(但不能小于2)。n然后把擁塞窗口 cwnd 重新設(shè)置為 1,執(zhí)行慢開始算法。n這樣做的目的就是要迅速減少主機(jī)發(fā)送到網(wǎng)絡(luò)中的分組數(shù),使得發(fā)生擁塞的路由器有足夠時(shí)間把隊(duì)列中積壓的分組處理完畢。 2216慢開始和擁塞避免算法的實(shí)現(xiàn)舉例 當(dāng) TCP 連接進(jìn)行初始化時(shí),將擁塞窗口置為 1。圖中的窗口單位不使用字節(jié)而使用報(bào)文段。慢開始門限的初始值設(shè)置為 16 個報(bào)文段,即 ssthresh = 16?!俺?/p>

27、法減小”24681012141618200048122024擁塞窗口 cwnd新的 ssthresh 值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh 的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次慢開始和擁塞避免算法的實(shí)現(xiàn)舉例 發(fā)送端的發(fā)送窗口不能超過擁塞窗口 cwnd 和接收端窗口 rwnd 中的最小值。我們假定接收端窗口足夠大,因此現(xiàn)在發(fā)送窗口的數(shù)值等于擁塞窗口的數(shù)值。2216“乘法減小”24681012141618200048122024擁塞窗口 cwnd新的 ssthresh 值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh 的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞

28、避免“加法增大”傳輸輪次慢開始和擁塞避免算法的實(shí)現(xiàn)舉例 在執(zhí)行慢開始算法時(shí),擁塞窗口 cwnd 的初始值為 1,發(fā)送第一個報(bào)文段 M0。 2216“乘法減小”24681012141618200048122024擁塞窗口 cwnd新的 ssthresh 值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh 的初始值慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次慢開始和擁塞避免算法的實(shí)現(xiàn)舉例 發(fā)送端每收到一個確認(rèn) ,就把 cwnd 加 1。于是發(fā)送端可以接著發(fā)送 M1 和 M2 兩個報(bào)文段。 2216“乘法減小”24681012141618200048122024擁塞窗口 cwnd新的 ssthr

29、esh 值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh 的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次慢開始和擁塞避免算法的實(shí)現(xiàn)舉例 接收端共發(fā)回兩個確認(rèn)。發(fā)送端每收到一個對新報(bào)文段的確認(rèn),就把發(fā)送端的 cwnd 加 1。現(xiàn)在 cwnd 從 2 增大到 4,并可接著發(fā)送后面的 4 個報(bào)文段。 2216“乘法減小”24681012141618200048122024擁塞窗口 cwnd新的 ssthresh 值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh 的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次慢開始和擁塞避免算法的實(shí)現(xiàn)舉例 發(fā)送端每收到一個對新報(bào)文段

30、的確認(rèn),就把發(fā)送端的擁塞窗口加 1,因此擁塞窗口 cwnd 隨著傳輸輪次按指數(shù)規(guī)律增長。 2216“乘法減小”24681012141618200048122024擁塞窗口 cwnd新的 ssthresh 值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh 的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次慢開始和擁塞避免算法的實(shí)現(xiàn)舉例 當(dāng)擁塞窗口 cwnd 增長到慢開始門限值 ssthresh 時(shí)(即當(dāng) cwnd = 16 時(shí)),就改為執(zhí)行擁塞避免算法,擁塞窗口按線性規(guī)律增長。 2216“乘法減小”24681012141618200048122024擁塞窗口 cwnd新的 ssth

31、resh 值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh 的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次2216“乘法減小”24681012141618200048122024擁塞窗口 cwnd新的 ssthresh 值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh 的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”慢開始和擁塞避免算法的實(shí)現(xiàn)舉例 假定擁塞窗口的數(shù)值增長到 24 時(shí),網(wǎng)絡(luò)出現(xiàn)超時(shí),表明網(wǎng)絡(luò)擁塞了。 傳輸輪次2216“乘法減小”24681012141618200048122024擁塞窗口 cwnd新的 ssthresh 值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthre

32、sh 的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”慢開始和擁塞避免算法的實(shí)現(xiàn)舉例 更新后的 ssthresh 值變?yōu)?12(即發(fā)送窗口數(shù)值 24 的一半),擁塞窗口再重新設(shè)置為 1,并執(zhí)行慢開始算法。 傳輸輪次2216“乘法減小”24681012141618200048122024擁塞窗口 cwnd新的 ssthresh 值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh 的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”慢開始和擁塞避免算法的實(shí)現(xiàn)舉例 當(dāng) cwnd = 12 時(shí)改為執(zhí)行擁塞避免算法,擁塞窗口按按線性規(guī)律增長,每經(jīng)過一個往返時(shí)延就增加一個 MSS 的大

33、小。 傳輸輪次乘法減小(multiplicative decrease) n“乘法減小“是指不論在慢開始階段還是擁塞避免階段,只要出現(xiàn)一次超時(shí)(即出現(xiàn)一次網(wǎng)絡(luò)擁塞),就把慢開始門限值 ssthresh 設(shè)置為當(dāng)前的擁塞窗口值乘以 0.5。n當(dāng)網(wǎng)絡(luò)頻繁出現(xiàn)擁塞時(shí),ssthresh 值就下降得很快,以大大減少注入到網(wǎng)絡(luò)中的分組數(shù)。 加法增大(additive increase) n“加法增大”是指執(zhí)行擁塞避免算法后,在收到對所有報(bào)文段的確認(rèn)后(即經(jīng)過一個往返時(shí)間),就把擁塞窗口 cwnd增加一個 MSS 大小,使擁塞窗口緩慢增大,以防止網(wǎng)絡(luò)過早出現(xiàn)擁塞。 必須強(qiáng)調(diào)指出 n“擁塞避免”并非指完全能夠避免了擁塞。利用以上的措施要完全避免網(wǎng)絡(luò)擁塞還是不可能的。n“擁塞避免”是說在擁塞避免階段把擁塞窗口控制為按線性規(guī)律增長,使網(wǎng)絡(luò)比較不容易出現(xiàn)擁塞。 2. 快重傳和快恢復(fù)n快重傳算法首先要求接收方每收到一個失序的報(bào)文段后就立即發(fā)出重復(fù)確認(rèn)。這樣做可以讓發(fā)送方及早知道有報(bào)文段沒有到達(dá)接收方。 n發(fā)送方只要一連收到三個重復(fù)確認(rèn)就應(yīng)當(dāng)立即重傳對方尚未收到的報(bào)文段。 n不難看出,快重傳并非取消重傳計(jì)時(shí)器,而是在某些情況下可更早地重傳丟失的報(bào)文段。 快重傳舉例發(fā)送方接收方發(fā)送 M1 確認(rèn) M1t 確認(rèn) M2 發(fā)送 M2發(fā)送 M3發(fā)送 M4 ?發(fā)送 M5發(fā)送 M

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論