第5章 運輸層_第1頁
第5章 運輸層_第2頁
第5章 運輸層_第3頁
第5章 運輸層_第4頁
第5章 運輸層_第5頁
已閱讀5頁,還剩147頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1計算機網(wǎng)絡(第 5 版)第 5 章 運輸層2n術(shù)語:n節(jié)點:主機和路由器。n鏈路:連接相鄰節(jié)點的信道n無線鏈路、有線鏈路、局域網(wǎng)。n幀:鏈路層分組,封裝數(shù)據(jù)報(datagrame)n鏈路層協(xié)議:定義了在鏈路兩端的節(jié)點之間交互的分組格式,以及當發(fā)送和接收分組時這些節(jié)點采取的動作。n鏈路層協(xié)議所采取的動作包括差錯檢測、鏈路訪問、重傳和流量控制。鏈路層概念回顧2n數(shù)據(jù)鏈路層的任務:n通過一條鏈路把把數(shù)據(jù)報從一個節(jié)點傳送到相鄰節(jié)點。n不同的鏈路上可以使用不同的鏈路層協(xié)議傳輸數(shù)據(jù)報。ne.g.,在第一段鏈路應用以太網(wǎng)協(xié)議,在最后一段鏈路上應用802.11協(xié)議n每個鏈路層協(xié)議提供不同的服務ne.g.,是

2、否在鏈路上提供可靠數(shù)據(jù)傳輸n例子:從合肥到美國某城市An合肥到南京:汽車n南京到上海:火車n上海到美國城市A:飛機類比:n 乘客:datagramn 旅行階段:信道n 傳輸模式:鏈路協(xié)議n 旅游社:路由算法34網(wǎng)絡層概念回顧n網(wǎng)絡層向傳輸層提供發(fā)送主網(wǎng)絡層向傳輸層提供發(fā)送主機到接收主機的通信服務機到接收主機的通信服務n發(fā)送端把報文段發(fā)送端把報文段(segment)封封裝成數(shù)據(jù)報裝成數(shù)據(jù)報(datagrame),并并將其發(fā)送給相鄰路由器;將其發(fā)送給相鄰路由器;n路由器將路由器將datagrame從入鏈從入鏈路路轉(zhuǎn)發(fā)轉(zhuǎn)發(fā)到出鏈路;到出鏈路;n接收端提取接收端提取segment,并傳遞并傳遞給傳輸層

3、。給傳輸層。applicationtransportnetworkdata linkphysicalapplicationtransportnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata li

4、nkphysicalnetworkdata linkphysicalnetworkdata linkphysical45本章學習重點n運輸層(transport layer)提供的服務 (1) 分用/復用(2) 可靠傳輸(3) 流量控制(4) 擁塞控制nTCP/IP 的運輸層的兩個協(xié)議:(1) 用戶數(shù)據(jù)報協(xié)議 UDP (User Datagram Protocol)(2) 傳輸控制協(xié)議 TCP (Transmission Control Protocol)6導航n5.1 概述n5.1.1 進程通信n5.1.2 進程尋址n5.1.3 兩種運輸層協(xié)議n5.1.4 分用與復用75.1 運輸層協(xié)議概述

5、5.1.1 進程通信n進程:運行在主機上的程序;n同一主機上的進程使用進程間通信機制(由操作系統(tǒng)定義)互相通信。n不同主機上的進程通過交換報文(message)相互通信。n在給定的一對進程之間通信的會話中n客戶機(client):發(fā)起通信的進程。n服務器(Server):在會話開始時等待聯(lián)系的進程n運輸層提供應用進程間的邏輯通信運輸層協(xié)議和網(wǎng)絡層協(xié)議的主要區(qū)別 應用進程應用進程IP 協(xié)議的作用范圍(提供主機之間的邏輯通信)TCP 和 UDP 協(xié)議的作用范圍(提供進程之間的邏輯通信)因 特 網(wǎng)類比:n假定教師的信件通過收發(fā)室人員送到學校郵局。n教師的信件由收發(fā)室人員從學校郵局統(tǒng)一領(lǐng)取,并交到各教

6、師信箱。n進程:?n應用報文:?n主機:?n傳輸協(xié)議:?n網(wǎng)絡層協(xié)議:?n注意,收發(fā)室人員只在本校工作。n傳輸層協(xié)議運行在端系統(tǒng)n運輸層協(xié)議所能提供的服務受到了底層網(wǎng)絡協(xié)議的服務模型的限制。n如果網(wǎng)絡層協(xié)議不能為主機之間發(fā)送的segment提供時延和帶寬保證,則傳輸層也不能為進程之間發(fā)送的報文提供時延和帶寬保證。n但網(wǎng)絡層協(xié)議不提供的某些服務,傳輸層協(xié)議也能夠提供。n如,可靠傳輸服務。105.1.2 進程尋址運輸層的端口 p182n為了使源主機上的發(fā)送進程能夠識別目的主機上的接收進程,需要定義:n該主機的名稱或地址。n目的主機上接收進程的標識。n進程標識符n不同的操作系統(tǒng)使用不同格式的進程標識

7、符。n必須用統(tǒng)一的方法對進程進行標志。 n在運輸層使用協(xié)議端口號(protocol port number),簡稱為端口(port)。n兩個主機的進程進行通信,不止要指明IP地址,還必須知道端口號。11TCP/IP 的端口 n端口用一個 16 位端口號進行標志。n端口號只具有本地意義,即只標志本計算機應用進程。n三類端口n熟知端口,數(shù)值一般為 01023。留給熟知應用層協(xié)議的。n登記端口號,數(shù)值為102449151,使用這個范圍的端口號必須在 IANA 登記,以防止重復。n客戶端口號或短暫端口號,數(shù)值為4915265535,留給客戶進程選擇暫時使用。通信結(jié)束后,這個端口號可供其他客戶進程以后使

8、用。 125.1.3 兩種不同的運輸協(xié)議n運輸層屏蔽了下面網(wǎng)絡核心的細節(jié), 在應用進程看來,兩個運輸層實體之間似乎有一條端到端的邏輯通信信道。n不同的傳輸層協(xié)議為應用進程提供不同的服務:nTCP,全雙工的可靠信道。nUDP,不可靠信道。 面向連接服務:通信實體在傳輸數(shù)據(jù)前需要執(zhí)行握手過程;面向連接服務可能會具有以下特性:可靠傳輸:無差錯的、按序傳遞所有數(shù)據(jù);流量控制:協(xié)調(diào)兩端通信實體的發(fā)送速率和接收速率。擁塞控制:迫使端系統(tǒng)在網(wǎng)絡擁塞時降低其發(fā)送分組的速率,避免網(wǎng)絡核心(即路由器)出現(xiàn)緩存溢出和分組丟失現(xiàn)象。無連接的服務:通信實體在數(shù)據(jù)傳輸前沒有握手過程;13TCP/IP 的運輸層有兩個不同的

9、協(xié)議:(1) 用戶數(shù)據(jù)報協(xié)議 UDP (User Datagram Protocol)(2) 傳輸控制協(xié)議 TCP (Transmission Control Protocol)nTCP 傳送的分組稱為 TCP 報文段(segment)n UDP傳送的分組稱為UDP 報文或用戶數(shù)據(jù)報。n為避免混淆,我們可以將傳輸層分組統(tǒng)稱為segment。 TCP 與 UDP TCPUDPIP應用層與各種網(wǎng)絡接口TCP/IP 體系中的運輸層協(xié)議體系中的運輸層協(xié)議5.1.4 分用(demultiplexing)與復用(multiplexing)每個應用進程有1個或多個socket;運輸層通過socket將數(shù)據(jù)交

10、付給進程;同一時刻一臺主機上有多個套接字,每個套接字都有唯一的標識符。接收端使用同一個運輸層根據(jù)segement首部信息將應用層報文交付到目的應用進程(通過 correct socket)。分用:發(fā)送端使用同一個運輸層從多個應用進程(通過 correct socket)收集數(shù)據(jù)塊,并為其封裝首信息,生成segment傳遞到網(wǎng)絡層復用:applicationtransportnetworklinkphysicalP1applicationtransportnetworklinkphysicalapplicationtransportnetworklinkphysicalP2P3P4P1host

11、1host 2host 3套接字(socket)n進程通過套接字在網(wǎng)絡上發(fā)送和接收報文。nSocket類似于門戶nSocket也叫應用程序編程接口( Application Programming Interface - API )。process具有緩存變量的TCPsockethost orserverprocess具有緩存變量的TCPsockethost orserverInternetControlled by OS一旦應用程序開發(fā)者選擇了一個運輸層協(xié)議,則該應用程序就建立在由該協(xié)議提供的運輸層服務上。controlled byapp developer應用程序開發(fā)者可以控制套接字在應用

12、端的 所有東西:如,選擇傳輸協(xié)議,設(shè)置傳輸層參數(shù).Socket是同一臺主機內(nèi)應用層與傳輸層之間的接口。分用的實現(xiàn)n一個IP datagramen含有源IP地址和目的IP地址。n封裝segment,其首部含有源端口號和目的端口號。n主機根據(jù)IP地址和端口號將segment定位到合適的socketsource port #dest port #32 bitsapplicationdata (message)other header fieldsTCP/UDP segment formatUDP協(xié)議的分用方式n即UDP如何定位一個SocketnSocket由二元組唯一標識。n(目的 IP 地址, 目

13、的端口號)ClientIP:BP2client IP: AP1P1P3serverIP: CSP: 6428DP: 9157SP: 9157DP: 6428SP: 6428DP: 5775SP: 5775DP: 6428SP provides “return address”18導航n5.1 概述n5.2 用戶數(shù)據(jù)報協(xié)議 UDP n5.2.1 UDP 概述 n5.2.2 UDP 的首部格式 195.2 用戶數(shù)據(jù)報協(xié)議 UDP 5.2.1 UDP 概述 nUDP 只在 IP 的數(shù)據(jù)報服務之上增加了很少一點的功能:n復用和分用n差錯檢測n“盡最大努力的交付”,使得UDP 報文可能:n丟失n交付給應

14、用進程的報文失序。nUDP 用戶數(shù)據(jù)報只能提供不可靠的交付。20nUDP 是無連接的:n通信雙方?jīng)]有握手過程。nUDP是面向報文的 :nUDP 對應用層交下來的報文,既不合并,也不拆分,而是保留這些報文的邊界( message boundaries )。n接收方 UDP 對 IP 層交上來的 UDP 用戶數(shù)據(jù)報,在去除首部后就原封不動地交付上層的應用進程,一次交付一個完整的報文。n應用程序必須選擇合適大小的報文。n太長:需要分割n太短:IP報文有效長度小UDP的特點:為什么使用UDP協(xié)議? n通信前不需要建立連接,因此不會引起建立連接的時延。nTCP在開始傳輸數(shù)據(jù)前要經(jīng)過三次握手。n簡單,不需

15、要維護連接狀態(tài)n可以支持更多的客戶機。n首部開銷?。簄8個字節(jié);TCP20字節(jié)。n無擁塞控制225.2.2 UDP 的首部格式 偽首部源端口目的端口長 度檢驗和數(shù) 據(jù)首 部UDP長度源 IP 地址目的 IP 地址017IP 數(shù)據(jù)報字節(jié)44112122222字節(jié)發(fā)送在前數(shù) 據(jù)(如果有) 首 部UDP 用戶數(shù)據(jù)報偽首部源端口目的端口長 度檢驗和數(shù) 據(jù)首 部UDP長度源 IP 地址目的 IP 地址017IP 數(shù)據(jù)報字節(jié)44112122222字節(jié)發(fā)送在前數(shù) 據(jù)首 部UDP 用戶數(shù)據(jù)報lUDP和TCP首部都包含一個12字節(jié)的偽首部,包含了IP首部和自身的一些字段,主要是為了計算檢驗和而設(shè)置的,不占實際空

16、間。 l因此,即檢查了UDP數(shù)據(jù)報部分,又檢查了IP地址。IP首部的協(xié)議字段值計算 UDP 檢驗和的例子 10011001 00010011 153.1900001000 01101000 8.10410101011 00000011 171.300001110 00001011 14.1100000000 00010001 0 和 1700000000 00001111 1500000100 00111111 108700000000 00001101 1300000000 00001111 1500000000 00000000 0(檢驗和)01010100 01000101 數(shù)據(jù)0101

17、0011 01010100 數(shù)據(jù)01001001 01001110 數(shù)據(jù)01000111 00000000 數(shù)據(jù)和 0(填充)10010110 11101101 求和得出的結(jié)果01101001 00010010 檢驗和 153.19.8.104171.3.14.1112 字節(jié)偽首部8 字節(jié)UDP 首部7 字節(jié)數(shù)據(jù)若UDP報文長度非偶數(shù),則進行填充,填充字段不發(fā)送。按二進制反碼運算求和將得出的結(jié)果求反碼全 0 17 15 1087 13 15 全 0數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù)數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù) 全 025練習n一個UDP數(shù)據(jù)報首部的16進制標識為:00 44 00 43 01 34 73 2f。求數(shù)據(jù)

18、包的源端口號、目的端口號、用戶數(shù)據(jù)報的總長度、數(shù)據(jù)部分長度。26導航n5.1 概述n5.2 用戶數(shù)據(jù)報協(xié)議 UDP n5.3 傳輸控制協(xié)議 TCP 概述 n5.3.1 TCP 最主要的特點 n5.3.2 TCP 連接 n5.3.4 TCP協(xié)議的分用275.3 傳輸控制協(xié)議 TCP 概述 5.3.1 TCP 最主要的特點 nTCP 是面向連接的運輸層協(xié)議。l數(shù)據(jù)傳輸前要建立連接;l數(shù)據(jù)傳輸后要釋放連接;l連接狀態(tài)保存在端系統(tǒng)中。”面向”連接。nTCP 連接只能是點對點的(一對一)。l一個發(fā)送方對應一個接收方n一個發(fā)送方對應多個接收方的情況在TCP連接中不存在;反之亦然。 nTCP 提供可靠交付的

19、服務。l數(shù)據(jù)無差錯、不丟失、不重復、按序到達n TCP 提供全雙工通信。l通信雙方的進程在任何時候都能發(fā)送數(shù)據(jù)。lTCP連接兩端都有發(fā)送緩存和接收緩存7 68H發(fā)送 TCP 報文段發(fā)送方接收方把字節(jié)寫入發(fā)送緩存從接收緩存讀取字節(jié)應用進程應用進程1230181716151419202145131211H109 H加上 TCP 首部構(gòu)成 TCP 報文段TCP發(fā)發(fā)送緩存送緩存TCP接接收緩存收緩存字節(jié)流字節(jié)流H表示 TCP 報文段的首部x表示序號為 x 的數(shù)據(jù)字節(jié)TCP 連接5. 面向字節(jié)流nTCP中,“流”(stream)指流入或流出進程的字節(jié)序列。n“面向字節(jié)流”:TCP不保存報文邊界;nTCP

20、從發(fā)送緩存中取出的數(shù)據(jù)量受MTU限制。nTCP將segment中的數(shù)據(jù)放在接收緩存中,進程在合適的時候通過socket讀取數(shù)據(jù),并不以原始的報文為單位。socketsocketUDP是面向報文的 :發(fā)送方 UDP 對應用程序交下來的報文,在添加首部后就向下交付 IP 層。 1.1 UDP 對應用層交下來的報文,既不合并,也不拆分,而是保留這些報文的邊界( message boundaries )。 1.2應用層交給 UDP 多長的報文,UDP 就照樣發(fā)送,即一次發(fā)送一個報文。接收方 UDP 對 IP 層交上來的 UDP 用戶數(shù)據(jù)報,在去除首部后就原封不動地交付上層的應用進程,一次交付一個完整的

21、報文。應用程序應根據(jù)MTU選擇合適大小的報文。29TCP 連接 := socket1, socket2 = (IP1: port1), (IP2: port2)5.3.2 TCP 的連接 n每一條 TCP 連接有兩個端點。nTCP 連接的端點叫做套接字(socket)或插口。n每一條 TCP 連接唯一地被通信兩端的兩個端點(即兩個套接字)所確定。即: 305.3.4 TCP協(xié)議的分用n與UDP不同,TCP 的Socket是通過4元組:(源IP地址,源端口號,目的IP地址,目的端口號)標識的。ClientIP:BP1client IP: AP1P2P4serverIP: CSP: 9157DP:

22、 80SP: 9157DP: 80P5P6P3D-IP:CS-IP: AD-IP:CS-IP: BSP: 5775DP: 80D-IP:CS-IP: B31導航n5.1 概述n5.2 用戶數(shù)據(jù)報協(xié)議 UDP n5.3 傳輸控制協(xié)議 TCP 概述 n5.4 可靠傳輸?shù)墓ぷ髟韓5.4.1 停止等待協(xié)議n5.4.2 連續(xù) ARQ 協(xié)議5.4 可靠傳輸?shù)墓ぷ髟?.4.1 停止等待協(xié)議 確認 M1確認 M2確認 M3n“停止等待”:n每發(fā)送一個分組就停止發(fā)送,等待對方確認;n在收到確認后再發(fā)送下一個分組。BttA發(fā)送 M1發(fā)送 M2發(fā)送 M31、無差錯情況A發(fā)送 M1B發(fā)送 M2發(fā)送 M3tt確認

23、M1確認 M2確認 M3A發(fā)送 M1B超時重傳 M1發(fā)送 M2確認 M1丟棄有差錯的報文;2、 超時重傳ttA超過一段時間沒有收到確認,重傳M1B什么也不做每發(fā)送完一個分組,設(shè)置一個重傳計時器;計時器超時之前收到確認,則撤銷計時器。3、確認丟失和確認遲到 A發(fā)送 M1B超時重傳 M1發(fā)送 M2丟棄重復的 M1重傳確認 M1(a) 確認丟失確認 M1A發(fā)送 M1B超時重傳 M1發(fā)送 M2丟棄重復的 M1重傳確認M1(b) 確認遲到確認 M1收下遲到的確認但什么也不做tttt36注意n在發(fā)送完一個分組后,必須暫時保留已發(fā)送的分組的副本。n分組和確認分組都必須進行編號。n超時計時器的重傳時間應當比數(shù)

24、據(jù)在分組傳輸?shù)钠骄禃r間更長一些。37自動重傳請求ARQ (Automatic Repeat reQuest)nARQ 表明重傳的請求是自動進行的。接收方不需要請求發(fā)送方重傳某個出錯的分組 。38問: n信道失序時,僅使用一位序號的停止等待協(xié)議能否實現(xiàn)可靠傳輸?n停止等待協(xié)議中,收到重復報文什么都不做,是否可行?信道利用率 n停止等待協(xié)議的優(yōu)點是簡單,但缺點是信道利用率太低。 TDRTTATD + RTT + TAB分組確認tt分組確認ADDTTTURTT(5-3)假定沒有重傳假定沒有重傳忽略A處理確認分組的時間假設(shè)B收到分組后立刻發(fā)回確認當RTT遠大于發(fā)送時間TD時,信道利用率會非常低。n

25、例:假定1200km的信道,往返時間RTT=20ms;分組長度為1200b,發(fā)送速率為1Mb/s;忽略處理時間。nU=0.0566n發(fā)送方只在5.66%的時間是忙的;n從另一角度看,發(fā)送方發(fā)送數(shù)據(jù)的速率僅為56.6kbn若出現(xiàn)重傳,則發(fā)送方信道利用率還要下降;流水線傳輸(pipelining) n流水線傳輸對可靠傳輸協(xié)議的影響:n增加序列號范圍n滑動窗口協(xié)議滑動窗口協(xié)議。n差錯恢復方法: Go-back-N(GBN);選擇重傳(selcective repeat)B分組ttAACKn發(fā)送方可連續(xù)發(fā)送多個分組,不必每發(fā)完一個分組就停頓下來等待對方的確認。425.4.2 連續(xù) ARQ 協(xié)議 123

26、456789101112 發(fā)送方維持發(fā)送窗口(發(fā)送窗口是 5)表示位于發(fā)送窗中的5個分組可以連續(xù)發(fā)送發(fā)送窗口(b) 每收到一個確認后發(fā)送窗口向前滑動現(xiàn)在可以發(fā)送第6個分組向前123456789101112發(fā)送窗口43nGo-back-N(GBN)協(xié)議:n接收方采用累積確認的方式。n丟棄不按序到達的分組nGo-back-N(GBN,回退 N)n當通信線路質(zhì)量不好時,連續(xù) ARQ 協(xié)議會帶來負面的影響。一種連續(xù) ARQ 協(xié)議 45一種連續(xù) ARQ 協(xié)議n選擇重傳(Selcective Repeat)n接收方逐個確認正確接收的分組n發(fā)送方僅重傳未被確認的分組n每個分組需要為自己設(shè)置一個計時器4647

27、48練習:n試證明:當用 n 個比特進行編號時,若接收窗口的大小為,則只有在發(fā)送窗口的大小Wt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer /* end of loop forever */ 簡化的TCP sender定時器管理過程RFC2988僅使用唯一 的重傳定時器假定發(fā)送方不受TCP流量和擁塞控制的限制80重傳情形分析Host ASeq=100, 20 bytes dataACK=100time過早超時Host BSeq=92, 8 bytes data

28、ACK=120Seq=92, 8 bytes dataSeq=92 timeoutACK=?Host ASeq=92, 8 bytes dataACK=100losstimeout由于丟失確認的重傳Host BXSeq=92, 8 bytes dataACK=100timeSeq=92 timeoutSendBase= 100SendBase= 120SendBase= 120Sendbase= 10081Host ASeq=92, 8 bytes dataACK=100losstimeout累計確認:避免了第一個segment的重傳Host BXSeq=100, 20 bytes dataA

29、CK=?timeSendBase= 12082快重傳n超時重傳的超時周期往往太長。這種長超時周期迫使發(fā)送方等待很長時間才重發(fā)丟失的分組。因而增加端到端時延。n快重傳算法首先要求接收方每收到一個失序的報文段后就立即發(fā)出重復確認(冗余確認,即以前已發(fā)送過的確認)。n發(fā)送方只要一連收到三個重復確認就應當立即重傳對方尚未收到的報文段。 83快重傳舉例發(fā)送方接收方發(fā)送 M1 確認 M1t 確認 M2 發(fā)送 M2發(fā)送 M3發(fā)送 M4 ?發(fā)送 M5發(fā)送 M6 重復確認 M2 立即重傳 M3 重復確認 M2 重復確認 M2 t發(fā)送 M7收到三個連續(xù)的對 M2 的重復確認立即重傳 M3丟失84 /Initial

30、SeqNum 是初始序號,可由通信雙方隨機選擇是初始序號,可由通信雙方隨機選擇 NextSeqNum = InitialSeqNum / NextSeqNum是下一個要發(fā)送字節(jié)的序號;是下一個要發(fā)送字節(jié)的序號; SendBase = InitialSeqNum / SendBase是最小未被確認的字節(jié)的序號。是最小未被確認的字節(jié)的序號。 loop (forever) switch(event) event: data received from application above create TCP segment with sequence number NextSeqNum if (ti

31、mer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(data) event: timer timeout retransmit not-yet-acknowledged segment with- smallest sequence number start timer event: ACK received, with ACK field value of y if (y SendBase) SendBase = y if (there are currently

32、 not-yet-acknowledged segments) start timer /* end of loop forever */ 簡化的TCP sender假定發(fā)送方不受TCP流量和擁塞控制的限制; event: ACK received, with ACK field value of y if (y SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else increment count of dup ACKs received for y if (

33、count of dup ACKs received for y = 3) resend segment with sequence number y a duplicate ACK for already ACKed segmentfast retransmit85接收端產(chǎn)生TCP ACK 的建議 RFC 1122, RFC 2581接收端事件期望序號seq #的報文段按序到達 所有先于seq #的數(shù)據(jù)均被確認期望序號seq #的報文段按序到達。 另一個按序報文段等待確認;比期望序號seq # 大的失序報文段到達;檢測出數(shù)據(jù)流的間隔能部分或完全填充接收數(shù)據(jù)間隔的報文段到達接收端 動作延遲發(fā)送

34、ACK;對另一個按序到達的報文段最多等待0.5s.若下一個按序到達的報文段在該時間間隔內(nèi)沒有到達,則發(fā)送ACK;否則,發(fā)送累積ACK;立即發(fā)送累積ACK立即發(fā)送冗余ACK,ACK 字段為 seq. #若該報文段起始于間隔的底端,立即發(fā)送ACK 865.6.2 超時重傳時間的選擇n超時時間間隔如何確定?n必須大于TCP連接的往返時間(RTT),。n如果超時時間過長就會使網(wǎng)絡空閑時間增大,降低了傳輸速率。n由于每個IP 數(shù)據(jù)報所選擇的路由變化很大。因而RTT的方差也很大。87加權(quán)平均往返時間n加權(quán)平均往返時間 RTTS:nRTTS (1 ) (舊的 RTTS) (新的 RTT 樣本) (5-4)n

35、式中,0 1。RFC 2988 推薦的 值為 1/8,即 0.125。 88Example RTT estimation:P222 5-3489RTT 的偏差的加權(quán)平均值n估計樣本RTT偏離加權(quán)平均值RTTS多少。nRTTD 是 RTT 的偏差的加權(quán)平均值。n是偏離值的加權(quán)平均值;nRFC 2988 建議這樣計算 RTTD:n第一次測量時,RTTD 值取為測量到的 RTT 樣本值的一半。 新的 RTTD = (1 ) (舊的RTTD) + RTTS 新的 RTT 樣本 (5-6)n 是個小于 1 的系數(shù),其推薦值是 1/4,即 0.25。n若樣本RTT波動很小,則RTTD很小90重傳超時時間R

36、TO (RetransmissionTime-Out) nRTO 應略大于RTTS。nRFC 2988 建議使用下式計算 RTO:RTO RTTS + 4 RTTD (5-5)91往返時間 RTT?往返時間的測量相當復雜 發(fā)送一個TCP 報文段超時重傳TCP 報文段收到 ACK時間12往返時間 RTT?是對哪一個報文段的確認?92Karn 算法 n在計算平均往返時間 RTT 時,只要報文段重傳了,就不采用其往返時間樣本。n缺陷:n報文段每重傳一次,就把 RTO 增大一些:新的 RTO (舊的 RTO) n系數(shù) 的典型值是 2 。n當不發(fā)生報文段的重傳時,才根據(jù)報文段的往返時延更新平均往返時延

37、RTT 和超時重傳時間 RTO 的數(shù)值。n例,nRTO的初始值為0.75s。第一次超時,RTO被設(shè)置為1.5s;若1.5s 后又過期了,則設(shè)置為3s;n因此,發(fā)生超時時,超時時間指數(shù)增長; 修正的 Karn 算法 導航n5.1 概述n5.2 用戶數(shù)據(jù)報協(xié)議 UDP n5.3 傳輸控制協(xié)議 TCP 概述 n5.4 可靠傳輸?shù)墓ぷ髟韓5.5 TCP 報文段的首部格式n5.6 TCP 可靠傳輸?shù)膶崿F(xiàn)n5.7 TCP 的流量控制955.7 TCP 的流量控制5.7.1 利用滑動窗口實現(xiàn)流量控制n流量控制(flow control)就是讓發(fā)送方的發(fā)送速率不要太快,讓接收方來得及接收。n利用滑動窗口機制

38、可以很方便地在 TCP 連接上實現(xiàn)流量控制。 seq = 1, DATAseq = 201, DATAseq = 401, DATAseq = 301, DATAseq = 101, DATAseq = 201, DATAseq = 501, DATAACK = 1, ack = 201, rwnd = 300ACK = 1, ack = 601, rwnd = 0ACK = 1, ack = 501, rwnd = 100AB允許 A 發(fā)送序號 201 至 500 共 300 字節(jié)A 發(fā)送了序號 101 至 200,還能發(fā)送 200 字節(jié)A 發(fā)送了序號 301 至 400,還能再發(fā)送 100

39、 字節(jié)新數(shù)據(jù)A 發(fā)送了序號 1 至 100,還能發(fā)送 300 字節(jié)A 發(fā)送了序號 401 至 500,不能再發(fā)送新數(shù)據(jù)了A 超時重傳舊的數(shù)據(jù),但不能發(fā)送新的數(shù)據(jù)允許 A 發(fā)送序號 501 至 600 共 100 字節(jié)A 發(fā)送了序號 501 至 600,不能再發(fā)送了不允許 A 再發(fā)送(到序號 600 為止的數(shù)據(jù)都收到了)丟失!流量控制舉例A 向 B 發(fā)送數(shù)據(jù)。每個報文段數(shù)據(jù)為100字節(jié);在連接建立時,B 告訴 A:“我的接收窗口 rwnd = 400(字節(jié))”。初建立連接時,接收窗口大小一般是接收緩存的大小接收窗口 是動態(tài)變化的97練習n主機A通過TCP連接向主機B發(fā)送一個大文件。A發(fā)送的未被確

40、認的字節(jié)數(shù)不會超過接收緩存的大小 ?(判斷題)98持續(xù)計時器(persistence timer)。TCP 為每一個連接設(shè)有一個持續(xù)計時器n只要 TCP 連接的一方收到對方的零窗口通知,就啟動持續(xù)計時器。n時間到期,就發(fā)送一個零窗口探測報文段(僅攜帶 1 字節(jié)的數(shù)據(jù)),而對方就在確認這個探測報文段時給出了現(xiàn)在的窗口值。n若窗口仍然是零,則收到這個報文段的一方就重新設(shè)置持續(xù)計時器。995.7.2 必須考慮傳輸效率發(fā)送方n何時發(fā)送 TCP 報文段?n第一種機制是 :只要緩存中存放的數(shù)據(jù)達到 MSS 字節(jié)時,就組裝成一個 TCP 報文段發(fā)送出去。n第二種機制是:由發(fā)送方的應用進程指明要求發(fā)送報文段,

41、即 TCP 支持的推送(push)操作。n第三種機制是:發(fā)送方的一個計時器期限到了n盡量不發(fā)送太小的報文段;eg.Telnet nNagle算法 p204接收方n如果接收方只要緩沖區(qū)有空余空間,就馬上報告,則可能導致糊涂窗口綜合癥;n解決:接收端通過了一個0窗口后,必須推遲下一個非0窗口的通告,直到接收緩存有足夠的空間容納一個最長的報文段,或接收緩存有一半的空閑空間。導航n5.1 概述n5.2 用戶數(shù)據(jù)報協(xié)議 UDP n5.3 傳輸控制協(xié)議 TCP 概述 n5.4 可靠傳輸?shù)墓ぷ髟韓5.5 TCP 報文段的首部格式n5.6 TCP 可靠傳輸?shù)膶崿F(xiàn)n5.7 TCP 的流量控制n5.8 TCP的

42、擁塞控制1025.8.1 擁塞控制的一般原理 n擁塞控制就是防止過多的數(shù)據(jù)注入到網(wǎng)絡中,這樣可以使網(wǎng)絡的路由器或鏈路不至于過載。n擁塞控制與流量控制的對比? 擁塞場景1:共享單跳具有無限大緩存的兩個連接103n連接的兩端通過單跳路由器相連;互相發(fā)送數(shù)據(jù)和接收數(shù)據(jù)。n鏈路帶寬為Cn具有無限緩存的路由器 n傳輸層不重傳、不執(zhí)行流量控制、擁塞控制。n發(fā)送速率超過C/2時,接收方的吞吐量只能達到C/2n但當發(fā)送速率接近C/2時,平均時延就會越來越大;n但當發(fā)送速率超過C/2時,路由器中排隊的分組數(shù)目就會無限增長,平均時延就會變成無窮大;unlimited shared output link buff

43、ersHost Alin : original dataHost Blout吞吐量、時延與發(fā)送速率之間的關(guān)系網(wǎng)絡擁塞的代價:當分組到達速率接近網(wǎng)絡容量時,分組將經(jīng)歷巨大的排隊時延。擁塞場景2:共享單跳具有有限大緩存的兩個連接n兩個發(fā)送方,兩個接收方n一個路由器,有限緩存 n可靠傳輸:發(fā)送端重傳丟失的分組。nin= outfinite shared output link buffersHost Alin : original dataHost Bloutlin : 原始數(shù)據(jù)加重傳數(shù)據(jù)n理想情況理想情況:n主機A能夠確定路由器中緩存是否空閑(不現(xiàn)實),僅當緩存空閑時才發(fā)送分組。這種情況下不會產(chǎn)生

44、丟包。nin = in = out(不考慮首部開銷)n重傳情況重傳情況1 1:發(fā)送端僅在確定分組丟失時才重傳;理想重傳n如,設(shè)置足夠長的超時時間。nin outn重傳情況重傳情況2 2:發(fā)送端重傳了在隊列中已推遲但還未丟失的分組;則原始數(shù)據(jù)和重傳數(shù)據(jù)都可能到達接收端。 nin 比 out大的更多。R/2R/2linloutb.僅當分組丟失時傳送僅當分組丟失時傳送R/2R/2linlouta.R/2R/2linloutc.假定每個分組都被重傳兩次假定每個分組都被重傳兩次R/4R/3擁塞場景3:4個發(fā)送方,具有有限緩存的路由器和多跳路徑n可靠傳輸:超時重傳機制。n每臺主機具有相同的in值n所有路由

45、器的鏈路容量都是Rfinite shared output link buffersHost Alin : original dataHost Bloutlin : original data, plus retransmitted dataHost DHost CR1R2R3R4ABloutCD1234n當in很小時, in增大, out?n考慮路由器R1:n當所有連接上的in很大時nB-D流量到達速率可能比C-A流量到達速率快得多;當B-D連接的in越來越大時, C-A連接上成功通過R1的流量會越來越小。n極限情況下,當負載無窮大時,R1的空閑空間會被B-D連接的分組占滿,因此C-A連接在

46、R1上的吞吐量趨近于0n擁塞代價:n當一個分組沿一條路徑被丟棄時,每個上游路由器用于轉(zhuǎn)發(fā)該分組到丟棄該分組而使用的傳輸容量被浪費了。n因此,路由器轉(zhuǎn)發(fā)分組時最好優(yōu)先考慮那些已經(jīng)經(jīng)過一定數(shù)量的上游路由器的分組。108擁塞控制所起的作用 提供的負載:單位時間輸入網(wǎng)絡的數(shù)據(jù)量;吞吐量:單位時間從網(wǎng)絡輸出的數(shù)據(jù)量;理想的擁塞控制實際的擁塞控制0死鎖(吞吐量 = 0)無擁塞控制擁塞輕度擁塞1095.8.2 幾種擁塞控制方法nTCP使用端到端的擁塞控制。n發(fā)送方維持一個叫做擁塞窗口 cwnd (congestion window)的狀態(tài)變量。n發(fā)送方控制擁塞窗口的原則是:n只要網(wǎng)絡沒有出現(xiàn)擁塞,擁塞窗口就

47、再增大一些,以便把更多的分組發(fā)送出去。n網(wǎng)絡出現(xiàn)擁塞,擁塞窗口就減小一些,以減少注入到網(wǎng)絡中的分組數(shù)。 1101. 慢開始和擁塞避免n慢開始算法的原理n在主機剛剛開始發(fā)送報文段時可先設(shè)置擁塞窗口 cwnd 為一個最大報文段 MSS 的數(shù)值。n在每收到一個對新的報文段的確認后,將擁塞窗口增加一個 MSS 的數(shù)值。n用這樣的方法逐步增大發(fā)送端的擁塞窗口 cwnd,可以使分組注入到網(wǎng)絡的速率更加合理。 111發(fā)送方接收方發(fā)送 M1 確認 M1發(fā)送 M2M3 確認 M2M3 發(fā)送 M4M7 確認 M4M7 cwnd = 1 cwnd = 2 cwnd = 4 發(fā)送 M8M15cwnd = 8 tt發(fā)送

48、方每收到一個對新報文段的確認(重傳的不算在內(nèi))就使 cwnd 加 1。 輪次 1輪次 2輪次 3為方便表述,cwnd的值以報文段為單位n事實上,TCP每收到一個確認,就把cwnd加1cwnd是逐漸增加的;發(fā)送窗口向后滑動,并發(fā)送下一個segment;n一個傳輸輪次所經(jīng)歷的時間約等于一個RTT。n一個傳輸輪次傳輸數(shù)據(jù)的速率約等于 cwnd*MSS/RTTHost Aone segmentRTTHost Btimetwo segmentsfour segments慢開始的“慢”并不是指cwnd增長速率慢,而是指在TCP開始發(fā)送報文段時先設(shè)置cwnd=1,使得發(fā)送方在開始時只發(fā)送一個報文段,目的是測

49、試一下網(wǎng)絡的擁塞情況。113TCP時延建模n假定n發(fā)送方能傳輸?shù)臄?shù)據(jù)量僅受限于擁塞窗口n分布不會丟失和損壞,因此沒有重傳n忽略各層分組的首部開銷n要傳輸?shù)膶ο笫钦麛?shù)倍的MSS長度n僅考慮最大MSS長度TCP分組的傳輸時間n慢開始門限值很大,擁塞窗口永遠達不到114serverclientserverclienttt第1個窗口 = 1完成傳輸?shù)?個窗口 = 2第3個窗口 = 4第4個窗口 =8115n窗口數(shù):) 1(log2.22:min2110MSSOMSSOkKk其中MSS是報文段長度,O是文件長度n第k個窗口與下一個窗口之間的停滯時間:RMSSRTTk*) 12(1其中R是傳輸速率116n

50、發(fā)送一個長度為O的文件的時延為:11122KkkRMSSRTTRMSSRORTT117擁塞避免n讓擁塞窗口 cwnd 緩慢地增大,即每經(jīng)過一個往返時間 RTT 就把發(fā)送方的擁塞窗口 cwnd 加 1,而不是加倍,使擁塞窗口 cwnd 按線性規(guī)律緩慢增長。118慢開始門限狀態(tài)變量ssthreshn慢開始門限 ssthresh 的用法如下:n當 cwnd ssthresh 時,使用擁塞避免算法。n當 cwnd = ssthresh 時,既可使用慢開始算法,也可使用擁塞避免算法。119丟包事件 n丟包事件發(fā)生時,把慢開始門限 ssthresh 設(shè)置為出現(xiàn)擁塞時的發(fā)送方窗口值的一半(但不能小于2)。n

51、丟包事件:超時事件 和 3次冗余確認:120丟包事件為超時事件時n把擁塞窗口 cwnd 重新設(shè)置為 1,執(zhí)行慢開始算法。1212216慢開始和擁塞避免算法的實現(xiàn)舉例 圖中的窗口單位不使用字節(jié)而使用報文段。ssthresh = 16。“乘法減小”24681012141618200048122024擁塞窗口 cwnd新的 ssthresh 值超時事件指數(shù)規(guī)律增長ssthresh 的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次122丟包事件為3次冗余確認時n執(zhí)行快恢復算法。123快恢復算法 (1)慢開始門限 ssthresh 設(shè)置為出現(xiàn)擁塞時的發(fā)送方窗口值的一半(但不能小

52、于2) 。 (2) 擁塞窗口 cwnd 設(shè)置為ssthresh 的當前值(3) 執(zhí)行擁塞避免算法,使擁塞窗口緩慢地線性增大。 采用快恢復算法時,慢開始算法只有在TCP連接建立時和網(wǎng)絡出現(xiàn)超時時才使用。Why?12424從連續(xù)收到三個重復的確認轉(zhuǎn)入擁塞避免 2468101214161820220048121620傳輸輪次擁塞窗口 cwnd收到 3 個重復的確認執(zhí)行快重傳算法慢開始“乘法減小”擁塞避免“加法增大”TCP Reno版本TCP Tahoe 版本(已廢棄不用)ssthresh 的初始值擁塞避免“加法增大”新的 ssthresh 值慢開始快恢復125AIMDn“加法增大” (Additiv

53、e Increase) :是指執(zhí)行擁塞避免算法時,經(jīng)過一個往返時間,把擁塞窗口 cwnd增加一個 MSS 大小。 n“乘法減小“(Multiplicative Decrease) :只要出現(xiàn)丟包事件,就把慢開始門限值 ssthresh 設(shè)置為當前的擁塞窗口值乘以 0.5。n當網(wǎng)絡頻繁出現(xiàn)擁塞時,ssthresh 值就下降得很快,以大大減少注入到網(wǎng)絡中的分組數(shù)。 126發(fā)送窗口的上限值發(fā)送窗口的上限值 Min rwnd, cwnd (5-8)StateEvent TCP Sender Action CommentarySlow Start (SS) ACK receipt for previou

54、sly unacked data CongWin = CongWin + MSS, If (CongWin Threshold) set state to “Congestion Avoidance”Resulting in a doubling of CongWin every RTTCongestionAvoidance (CA) ACK receipt for previously unacked dataCongWin = CongWin+MSS * (MSS/CongWin) Additive increase, resulting in increase of CongWin by

55、 1 MSS every RTTSS or CALoss event detected by triple duplicate ACKThreshold = CongWin/2, CongWin = Threshold,Set state to “Congestion Avoidance”Fast recovery, implementing multiplicative decrease. CongWin will not drop below 1 MSS.SS or CATimeoutThreshold = CongWin/2, CongWin = 1 MSS,Set state to “

56、Slow Start”Enter slow startSS or CADuplicate ACKIncrement duplicate ACK count for segment being ackedCongWin and Threshold not changed1285.8.3 隨機早期檢測 RED (Random Early Detection) nRED是一種路由器的分組丟棄策略;n為避免全局同步,在緩存滿前便丟棄分組,以便向發(fā)送方提供一個擁塞信號。129RED 將路由器的到達隊列分成為三個區(qū)域 n使路由器的隊列維持兩個參數(shù),即隊列長度最小門限 THmin 和最大門限 THmax。n

57、RED 對每一個到達的數(shù)據(jù)報都先計算平均隊列長度 LAV。n若平均隊列長度小于最小門限 THmin,則將新到達的數(shù)據(jù)報放入隊列進行排隊。n若平均隊列長度超過最大門限 THmax,則將新到達的數(shù)據(jù)報丟棄。n若平均隊列長度在最小門限 THmin 和最大門限THmax 之間,則按照某一概率 p 將新到達的數(shù)據(jù)報丟棄。lRED的優(yōu)點:當平均隊列長度超過門限 THmin時,就會有少量分組被丟失,這就使得少量的TCP連接會減小其窗口值,使得到達路由器的分組減少。結(jié)果,隊列平均長度就減小了,從而避免網(wǎng)絡擁塞的發(fā)生。同時,網(wǎng)絡的吞吐量仍然保持較高的值。130擁塞控制所起的作用 提供的負載:單位時間輸入網(wǎng)絡的數(shù)

58、據(jù)量;吞吐量:單位時間從網(wǎng)絡輸出的數(shù)據(jù)量;理想的擁塞控制實際的擁塞控制0死鎖(吞吐量 = 0)無擁塞控制擁塞輕度擁塞131導航n5.1 概述n5.2 用戶數(shù)據(jù)報協(xié)議 UDP n5.3 傳輸控制協(xié)議 TCP 概述 n5.4 可靠傳輸?shù)墓ぷ髟韓5.5 TCP 報文段的首部格式n5.6 TCP 可靠傳輸?shù)膶崿F(xiàn)n5.7 TCP 的流量控制n5.8 TCP的擁塞控制n5.9 TCP 的運輸連接管理1325.9 TCP 的運輸連接管理n運輸連接有三個階段,即:連接建立、數(shù)據(jù)傳送和連接釋放。n運輸連接的管理就是使運輸連接的建立和釋放都能正常地進行。133nTCP 連接的建立都是采用客戶服務器方式。n主動發(fā)

59、起連接建立的應用進程叫做客戶(client)。n被動等待連接建立的應用進程叫做服務器(server)。 134用三次握手建立 TCP 連接 SYN = 1, seq = xCLOSEDCLOSED應用程序發(fā)出主動打開命令應用程序發(fā)出被動打開命令AB客戶服務器5.9.1 TCP 的連接建立TCP規(guī)定SYN報文段不能攜帶數(shù)據(jù),但要消耗掉一個序號。SYN-SENTLISTENTCP進程接收到應用程序的命令后,首先先創(chuàng)建傳輸控制塊TCB。TCB中保存了每個連接中的一些重要信息:地址、端口號;平均RTT、 RTTd、 RTTo;到發(fā)送和接收緩存的指針;等等。135用三次握手建立 TCP 連接 SYN = 1, seq = xCLOSEDCLOSED主動打開被動打開AB客戶服務器5.9.1 TCP 的連接建立SYN = 1, ACK = 1, seq = y, ack= x 1 B 的

溫馨提示

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

評論

0/150

提交評論