




已閱讀5頁,還剩67頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第五章 傳輸層,劉 軼 北京航空航天大學(xué) 計算機(jī)學(xué)院,本章內(nèi)容 5.1 傳輸層協(xié)議概述 5.2 用戶數(shù)據(jù)報協(xié)議 udp 5.3 傳輸控制協(xié)議 tcp 概述 5.4 tcp報文段的首部格式 5.5 tcp可靠傳輸?shù)膶?shí)現(xiàn) 5.6 tcp的流量控制 5.7 tcp的擁塞控制 5.8 tcp的連接管理,5.1 傳輸層協(xié)議概述,5.1 傳輸層協(xié)議概述,一、進(jìn)程之間的通信 傳輸層(transport layer)又稱為運(yùn)輸層 傳輸層向它上面的應(yīng)用層提供通信服務(wù) 實(shí)現(xiàn)可靠傳輸:差錯控制、順序控制、擁塞控制等 傳輸層 vs. 網(wǎng)絡(luò)層 網(wǎng)絡(luò)層實(shí)現(xiàn)主機(jī)之間的邏輯通信 傳輸層實(shí)現(xiàn)應(yīng)用進(jìn)程之間的邏輯通信 真正的端到端通信 復(fù)用(multiplexing)和解分(demultiplexing) 傳輸層主要協(xié)議 tcp 協(xié)議:可靠傳輸協(xié)議 udp協(xié)議:不可靠傳輸協(xié)議,5.1 傳輸層協(xié)議概述,一、進(jìn)程之間的通信,5.1 傳輸層協(xié)議概述,2009年的一道考研題 在osi參考模型中,自下而上第一個提供端到端服務(wù)的層次是: a. 數(shù)據(jù)鏈路層 b. 傳輸層 c. 會話層 d. 應(yīng)用層,5.1 傳輸層協(xié)議概述,二、傳輸層的兩個主要協(xié)議 傳輸層的兩個主要協(xié)議 用戶數(shù)據(jù)報協(xié)議udp (user datagram protocol) rfc 768 傳輸控制協(xié)議tcp (transmission control protocol) rfc 793,傳輸?shù)臄?shù)據(jù)單位 osi術(shù)語稱為tpdu(transport protocol data unit) tcp/ip體系稱為tcp報文段(segment)或udp用戶數(shù)據(jù)報,5.1 傳輸層協(xié)議概述,二、傳輸層的兩個主要協(xié)議 tcp協(xié)議 可靠傳輸協(xié)議 提供面向連接的服務(wù) 傳送數(shù)據(jù)前要先建立連接,傳送結(jié)束后釋放連接 需進(jìn)行確認(rèn)、流量控制、計時器、連接管理等,處理開銷較大 基于tcp的典型應(yīng)用協(xié)議:http、ftp、 udp協(xié)議 不可靠傳輸協(xié)議 傳送數(shù)據(jù)時無需建立連接 與tcp相比,效率更高,但可能出現(xiàn)數(shù)據(jù)錯、丟包、順序錯等問題 基于udp的典型應(yīng)用協(xié)議:dns、rip、,5.1 傳輸層協(xié)議概述,三、傳輸層的端口(1/2) 傳輸層需為多個應(yīng)用進(jìn)程提供服務(wù) 復(fù)用與分用 應(yīng)用層多個應(yīng)用進(jìn)程通過傳輸層發(fā)送數(shù)據(jù) 復(fù)用 傳輸層收到的數(shù)據(jù)必須交付給指明的應(yīng)用進(jìn)程 分用 傳輸層必須提供區(qū)分上層應(yīng)用進(jìn)程的手段:端口(port) 問題:為什么不用進(jìn)程id? 進(jìn)程id的定義依賴于特定操作系統(tǒng) 一個應(yīng)用進(jìn)程常常需要與網(wǎng)絡(luò)中的多個主機(jī)中的進(jìn)程通信 多條連接 注意:此端口為軟件端口,不同于計算機(jī)中的硬件i/o端口和交換機(jī)/路由器上的物理端口,5.1 傳輸層協(xié)議概述,三、傳輸層的端口(2/2) tcp/ip協(xié)議使用16位整數(shù)作為端口號 源端口號、目的端口號 端口號分類 熟知(well-known)端口號或系統(tǒng)端口號:數(shù)值一般為 01023 例如:http服務(wù)使用80,ftp服務(wù)使用21, 登記端口號:數(shù)值為102449151 供沒有熟知端口號的應(yīng)用程序使用 須在 iana 登記,以防重復(fù) 客戶端口號或短暫端口號:數(shù)值為4915265535 客戶進(jìn)程臨時使用,rfc1700: assigned numbers,5.2 用戶數(shù)據(jù)報協(xié)議 udp,5.2 用戶數(shù)據(jù)報協(xié)議 udp,一、udp概述 udp 只在 ip 的數(shù)據(jù)報服務(wù)之上增加了很少一點(diǎn)的功能 端口和差錯檢測 udp 為不可靠傳輸協(xié)議,但具有自身特點(diǎn),與tcp分別面對不同的應(yīng)用 udp協(xié)議的特點(diǎn) (1) 無連接,即發(fā)送數(shù)據(jù)之前不需要建立連接 (2) 使用盡最大努力交付,即不保證可靠交付,同時也不使用擁塞控制 (3) 是面向報文的。沒有擁塞控制,很適合多媒體通信的要求 (4) 支持一對一、一對多、多對一和多對多的交互通信 (5) 首部開銷小,只有 8 個字節(jié),5.2 用戶數(shù)據(jù)報協(xié)議 udp,一、udp概述,ip 數(shù)據(jù)報的數(shù)據(jù)部分,ip 首部,ip 層,udp 首部,udp 用戶數(shù)據(jù)報的數(shù)據(jù)部分,傳輸層,應(yīng)用層報文,應(yīng)用層,二、udp首部格式 udp數(shù)據(jù)報包括2個字段:首部和數(shù)據(jù)字段 首部共4個字段,8字節(jié),首部各字段 (1) 源端口:源端口號 (2) 目的端口:目的端口號 (3) 長度:udp數(shù)據(jù)報長度 (4) 校驗和:udp數(shù)據(jù)報的校驗和 偽首部(pseudoheader):僅在計算校驗和時使用,不實(shí)際傳輸,5.2 用戶數(shù)據(jù)報協(xié)議 udp,udp報文示例:dns請求,校驗和的計算:與ip包頭校驗和計算類似 ip只計算包頭校驗和,udp計算整個數(shù)據(jù)報的校驗和 計算校驗和時要添加偽頭部,奇數(shù)字節(jié)需填充0字節(jié),5.2 用戶數(shù)據(jù)報協(xié)議 udp,二、udp首部格式,在接收方,如果在目的端口號上沒有應(yīng)用進(jìn)程接收數(shù)據(jù),則向源主機(jī)返回icmp的“目的不可達(dá)”報文 安全問題?可能被掃描軟件利用,5.3 傳輸控制協(xié)議 tcp 概述,5.3 傳輸控制協(xié)議 tcp 概述,一、tcp的主要特點(diǎn) tcp 是面向連接的傳輸層協(xié)議 傳輸數(shù)據(jù)前必須先建立連接,數(shù)據(jù)傳輸完畢后要釋放連接 每一條 tcp 連接只能有兩個端點(diǎn)(endpoint),每一條 tcp 連接只能是點(diǎn)對點(diǎn)的(一對一) tcp 提供可靠交付的服務(wù) 無差錯、不丟失、不重復(fù)、按序到達(dá) tcp 提供全雙工通信 在一個連接上,通信雙方可同時向?qū)Ψ絺鬏敂?shù)據(jù) 面向字節(jié)流 認(rèn)為在tcp連接上傳輸?shù)氖亲止?jié)流 應(yīng)用程序以數(shù)據(jù)塊為單位與tcp交互,但tcp將其視為無結(jié)構(gòu)的字節(jié)流 結(jié)果:發(fā)送方應(yīng)用進(jìn)程發(fā)出的數(shù)據(jù)塊與接收方應(yīng)用進(jìn)程收到的數(shù)據(jù)塊可能沒有一一對應(yīng)關(guān)系,但數(shù)據(jù)保證一致,5.3 傳輸控制協(xié)議 tcp 概述,面向流的概念,注意:圖中只畫出了一個方向的數(shù)據(jù)流,實(shí)際tcp的數(shù)據(jù)傳輸是雙向的,5.3 傳輸控制協(xié)議 tcp 概述,一、tcp的主要特點(diǎn) 要注意的幾點(diǎn): tcp連接是一條虛連接而不是一條真正的物理連接 tcp對應(yīng)用進(jìn)程一次把多長的報文發(fā)送到tcp的緩存中是不關(guān)心的 tcp根據(jù)對方給出的窗口值和當(dāng)前網(wǎng)絡(luò)擁塞的程度來決定一個報文段應(yīng)包含多少個字節(jié)(udp發(fā)送的報文長度是應(yīng)用進(jìn)程給出的) tcp可把太長的數(shù)據(jù)塊劃分短一些再傳送 tcp也可等待積累有足夠多的字節(jié)后再構(gòu)成報文段發(fā)送出去,5.3 傳輸控制協(xié)議 tcp 概述,二、tcp 的連接 tcp把連接作為最基本的抽象 每一條tcp連接有兩個端點(diǎn) tcp連接的端點(diǎn)不是主機(jī),不是主機(jī)的ip地址,不是應(yīng)用進(jìn)程,也不是運(yùn)輸層的協(xié)議端口,tcp 連接的端點(diǎn)叫做套接字(socket)或插口 端口號拼接到(contatenated with) ip 地址即構(gòu)成了套接字 套接字 socket = (ip地址: 端口號) 每一條 tcp 連接唯一地被通信兩端的兩個端點(diǎn)(即兩個套接字)所確定。即: tcp 連接 := socket1, socket2 = (ip1: port1), (ip2: port2),5.4 tcp 報文段的首部格式,tcp報文段的首部格式,源端口和目的端口字段:各2字節(jié) 序號字段:4字節(jié) 在tcp連接中傳送的數(shù)據(jù)流中的每一個字節(jié)都有序號 序號字段指本報文段所發(fā)送的數(shù)據(jù)的第一個字節(jié)的序號,以字節(jié)為單位 確認(rèn)號字段:4字節(jié),期望收到對方的下一個報文段的數(shù)據(jù)的第一個字節(jié)的序號 例:收到對方的報文段中序號為501,數(shù)據(jù)長度200字節(jié),則返回報文段確認(rèn)號=701 tcp連接時全雙工,通信雙方可互相發(fā)送數(shù)據(jù),因此應(yīng)答與數(shù)據(jù)一同發(fā)送給對方,數(shù)據(jù)偏移(首部長度):4bit,tcp報文段的數(shù)據(jù)起始位置的偏移,也就是首部的長度,單位是32位字(4字節(jié)) 保留字段:6bit,保留 緊急urg:1bit,為1時,緊急指針字段有效,表明有緊急數(shù)據(jù),應(yīng)盡快傳送 確認(rèn)ack:1bit,為1時,確認(rèn)號字段有效;為0時,確認(rèn)號無效 推送psh:1bit,為1時,接收方將盡快向應(yīng)用進(jìn)程交付此報文段,而不是等到整個緩存填滿,復(fù)位rst:1bit,為1時,表明tcp連接出現(xiàn)嚴(yán)重差錯(如由于主機(jī)崩潰),須釋放連接后重新建立連接 同步syn:1bit,為1時,表示這是一個連接請求或連接接受報文 終止fin: 1bit,為1時,表示要求釋放tcp連接 窗口大?。?字節(jié),用來讓對方設(shè)置發(fā)送窗口的依據(jù),單位為字節(jié),檢驗和:2字節(jié),偽首部+首部+數(shù)據(jù)的校驗和 偽首部(pseudoheader)格式與udp的偽首部相同,緊急指針:2字節(jié),指出本報文段中緊急數(shù)據(jù)共有多少個字節(jié)(緊急數(shù)據(jù)放在數(shù)據(jù)的最前面) 選項:長度可變,最長40字節(jié) 最早定義的一種選項:最大報文段長度mss(maximum segment size) 告知對方報文段中數(shù)據(jù)最大長度,雙方可使用不同的mss,缺省mss=536字節(jié) 后續(xù)增加的選項:窗口擴(kuò)大選項 、時間戳選項、選擇確認(rèn)選項 填充字段:為了使整個首部長度是4字節(jié)的整數(shù)倍,tcp報文示例:http,5.5 tcp可靠傳輸?shù)膶?shí)現(xiàn),一、以字節(jié)為單位的滑動窗口 tcp基于滑動窗口協(xié)議實(shí)現(xiàn)可靠傳輸和流量控制,滑動窗口以字節(jié)為單位 發(fā)送窗口 在沒有收到對方應(yīng)答的情況下,可以連續(xù)把窗口內(nèi)的數(shù)據(jù)發(fā)送出去 即:窗口內(nèi)的序號是允許發(fā)送的序號 窗口大小的確定:對方發(fā)來的窗口大小、擁塞控制 根據(jù)收到對方的tcp報文段頭部中“acknowledge number”字段,窗口向前滑動移動 “acknowledge number”字段表示在此序號之前的數(shù)據(jù)已被正確接收,a收到b的報文段中“window size”=20,“acknowledge number”=31,據(jù)此構(gòu)造出自己的發(fā)送窗口 當(dāng)對方通知的窗口尺寸變化時,發(fā)送窗口前沿可能需要向后收縮,但tcp 標(biāo)準(zhǔn)強(qiáng)烈不贊成這樣做,p3 p1 = a 的發(fā)送窗口(又稱為通知窗口) p2 p1 = 已發(fā)送但尚未收到確認(rèn)的字節(jié)數(shù) p3 p2 = 允許發(fā)送但尚未發(fā)送的字節(jié)數(shù)(又稱為可用窗口),接收窗口 窗口內(nèi)的數(shù)據(jù)是允許接收的 窗口后沿以外是已正確接收并交付上層的數(shù)據(jù),收到了32和33號數(shù)據(jù),但未收到31,應(yīng)答“確認(rèn)號”=31 如果后來收到了31號數(shù)據(jù),則將31、32、33號數(shù)據(jù)上交,窗口后沿前移,應(yīng)答中“確認(rèn)號”=34,b收到31號數(shù)據(jù)后,窗口前移3字節(jié),并返回確認(rèn)號34,假定窗口寬度仍為20 a收到確認(rèn)號34后,窗口前移3字節(jié) b收到37、38、40號數(shù)據(jù),由于數(shù)據(jù)未按序收全,不能上交,不允許 發(fā)送,已發(fā)送并收到確認(rèn),a 的發(fā)送窗口已滿,有效窗口為零,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,已發(fā)送但未收到確認(rèn),56,p1,p2,p3,a將發(fā)送窗口中未發(fā)送的數(shù)據(jù)全部發(fā)送后,發(fā)送窗口滿,停止發(fā)送 如果未收到b返回的應(yīng)答,a等待超時后將重發(fā)部分?jǐn)?shù)據(jù),直到收到應(yīng)答為止,2009年考研題 主機(jī)甲與主機(jī)乙之間已建立一個tcp連接,主機(jī)甲向主機(jī)乙發(fā)送了兩個連續(xù)的tcp段,分別包含300字節(jié)和500字節(jié)的有效載荷,第一個段的序列號為200,主機(jī)乙正確接收到兩個段后,發(fā)送給主機(jī)甲的確認(rèn)序列號是( ) a. 500 b. 700 c. 800 d. 1000,發(fā)送緩存用來暫時存放: 發(fā)送應(yīng)用進(jìn)程傳送給tcp,但尚未發(fā)出的數(shù)據(jù) 已發(fā)送,但尚未收到確認(rèn)的數(shù)據(jù) 接收緩存用來暫時存放: 按序到達(dá)的、但尚未被接收應(yīng)用進(jìn)程讀取的數(shù)據(jù) 未按序到達(dá)的數(shù)據(jù) a的發(fā)送窗口并不總是和b的接收窗口一樣大 tcp要求接收方必須有累積確認(rèn)的功能,這樣可以減小傳輸開銷,5.5 tcp可靠傳輸?shù)膶?shí)現(xiàn),二、超時重傳時間的選擇 tcp的可靠傳輸通過校驗和+超時重傳實(shí)現(xiàn) tcp每發(fā)送一個報文段,就對這個報文段設(shè)置一次計時器 如果計時器設(shè)置的重傳時間到,但還沒有收到確認(rèn),就要重傳該報文段 超時時間的設(shè)置是一個復(fù)雜的問題 ip層提供數(shù)據(jù)報服務(wù),每個數(shù)據(jù)報所選擇的路由都可能有變化,因而傳輸層的往返時間變化較大 tcp采用一種自適應(yīng)算法計算超時重傳時間 加權(quán)平均往返時間rtts tcp 保留了rtt的一個加權(quán)平均往返時間rtts(又稱為平滑的往返時間) 第一次測量到rtt樣本時, rtts就取為該值 以后每測量到一個新的rtt樣本,按下式重新計算: 新的rtts ( 1 ) 舊的rtts 新的rtt樣本 其中01, 越小,rtt值更新越慢, 越大,rtt值更新越快 rfc 2988 推薦=1/8,即 0.125,5.5 tcp可靠傳輸?shù)膶?shí)現(xiàn),二、超時重傳時間的選擇 超時重傳時間rto(retransmission time-out) rto應(yīng)略大于rtts rfc 2988 建議使用下式計算rto: rto rtts 4 rttd rttd是rtt的偏差的加權(quán)平均值 rfc 2988 建議這樣計算 rttd 第一次測量時,rttd值取為測量到的rtt樣本值的一半 在以后的測量中,使用下式計算加權(quán)平均的 rttd: 新的rttd ( 1 ) 舊的rttd rtts 新的rtt樣本 其中01,推薦值是1/4,即 0.25,5.5 tcp可靠傳輸?shù)膶?shí)現(xiàn),往返時間rtt的測量并不簡單 tcp 報文段沒有收到確認(rèn),重傳報文段后,收到了確認(rèn)報文段ack 如何判定此確認(rèn)報文段是對原來的報文段1的確認(rèn),還是對重傳的報文段2的確認(rèn)?,karn算法 計算平均往返時間rtt時,只要報文段重傳了,就不采用其樣本 得出的加權(quán)平均平均往返時間rtts和超時重傳時間rto就較準(zhǔn)確 修正的karn算法 報文段每重傳一次,就把rto增大一些(如加倍) 不再發(fā)生重傳時,才根據(jù)往返時延更新rtt和rto,5.5 tcp可靠傳輸?shù)膶?shí)現(xiàn),三、選擇確認(rèn)sack(selective ack) 用于實(shí)現(xiàn)只重傳接收方缺少的數(shù)據(jù) 下圖例:接收方收到了序號為15013000的數(shù)據(jù),但未收到序號為10011500的數(shù)據(jù) 設(shè)法通知發(fā)送方15013000的數(shù)據(jù)已收到,不必重傳 sack原理 是tcp的一種選項,雙方在建立連接時協(xié)商是否使用該機(jī)制 如雙方協(xié)商一致支持sack,則在tcp報頭中加入選擇確認(rèn)的選項字段 使用左右邊界標(biāo)示要確認(rèn)的字節(jié)塊 tcp報頭中原有的確認(rèn)號字段不變 注意:選擇確認(rèn)僅是tcp的一種選項 注意:在多數(shù)實(shí)現(xiàn)中,選擇確認(rèn)未得到使用,即發(fā)送方會超時重發(fā)未得到確認(rèn)的報文段,5.6 tcp的流量控制,5.6 tcp的流量控制,一、利用滑動窗口實(shí)現(xiàn)流量控制 流量控制(flow control)就是讓發(fā)送方的發(fā)送速率不要太快,使接收方來得及接收 利用滑動窗口機(jī)制可以很方便地在 tcp 連接上實(shí)現(xiàn)流量控制 tcp連接建立過程中,將自己的接收窗口大小告知對方 tcp報頭中都攜帶有窗口大小字段,告知對方自己接收窗口的剩余大小(即可接收的字節(jié)數(shù)) 發(fā)送方的發(fā)送窗口應(yīng)不大于對方的接收窗口,tcp流量控制示例 a 向 b 發(fā)送數(shù)據(jù) 在連接建立時,b 告訴 a:“我的接收窗口rwnd = 400(字節(jié))”,b的接收緩沖有空間時,將向a發(fā)送tcp報文,告知窗口大小 問題:如果b向a發(fā)送的這個報文丟失了,如何避免雙方相互等待?,5.6 tcp的流量控制,一、利用滑動窗口實(shí)現(xiàn)流量控制 持續(xù)計時器(persistence timer) tcp為每一個連接設(shè)有一個持續(xù)計時器 只要一方收到對方的零窗口通知,就啟動持續(xù)計時器 若持續(xù)計時器設(shè)置的時間到,就發(fā)送一個零窗口探測報文段(僅攜帶1字節(jié)的數(shù)據(jù)),而對方在確認(rèn)這個探測報文段時給出當(dāng)前窗口值 若窗口仍然是零,則收到這個報文段的一方就重新設(shè)置持續(xù)計時器 若窗口不是零,則死鎖的僵局就可以打破了,5.6 tcp的流量控制,二、傳輸效率 可以用不同的機(jī)制來控制tcp報文段的發(fā)送時機(jī) 機(jī)制一:緩存數(shù)據(jù)達(dá)到一定量就發(fā)送 tcp維持一個變量,它等于最大報文段長度mss 只要緩存中存放的數(shù)據(jù)達(dá)到mss字節(jié)時,就組裝成一個tcp報文段發(fā)送出去 機(jī)制二:應(yīng)用進(jìn)程控制 由發(fā)送方的應(yīng)用進(jìn)程指明要求發(fā)送報文段,即推送(push)操作 機(jī)制三:定時發(fā)送 發(fā)送方的一個計時器期限到了,這時就把當(dāng)前已有的緩存數(shù)據(jù)裝入報文段(但長度不能超過 mss)發(fā)送出去,5.7 tcp的擁塞控制,5.7 tcp的擁塞控制,一、擁塞控制的一般原理 擁塞(congestion)概念和產(chǎn)生原因(1/2) 在某段時間,若對網(wǎng)絡(luò)中某資源的需求超過了該資源所能提供的可用部分,網(wǎng)絡(luò)的性能就要變壞,從而產(chǎn)生擁塞,即擁塞產(chǎn)生的條件: 對資源的需求 可用資源 網(wǎng)絡(luò)資源:鏈路帶寬、路由節(jié)點(diǎn)緩存及處理能力等 網(wǎng)絡(luò)擁塞是由多種原因引起的,通過簡單地增加某種資源數(shù)量往往并不能消除擁塞 例:某路由器緩存容量太小,造成到達(dá)該結(jié)點(diǎn)的報文丟失,如果增加緩存容量,可能的結(jié)果: 報文可在緩存中排隊,但如果路由器處理能力和出口鏈路帶寬未增加,報文排隊時間過長,發(fā)送主機(jī)將超時重發(fā)擁塞沒有解決,5.7 tcp的擁塞控制,一、擁塞控制的一般原理 擁塞(congestion)概念和產(chǎn)生原因(2/2) 網(wǎng)絡(luò)擁塞的表現(xiàn) 網(wǎng)絡(luò)性能下降,具體表現(xiàn)為網(wǎng)絡(luò)吞吐率下降、報文傳輸時延增大、丟包率增加、用戶端響應(yīng)時間變長、 擁塞常常會趨于惡化,即惡性循環(huán) 由重傳機(jī)制引起 如:一個路由器由于緩存不足丟棄了部分報文,發(fā)送端主機(jī)將超時重發(fā),導(dǎo)致網(wǎng)絡(luò)中被注入更多的報文,從而加劇擁塞 擁塞控制(congestion control)與流量控制 擁塞控制:防止過多的數(shù)據(jù)注入到網(wǎng)絡(luò)中,使網(wǎng)絡(luò)中的路由器或鏈路不致過載 擁塞控制是全局性的過程,而流量控制是點(diǎn)對點(diǎn)通信量的控制,是端到端的問題,5.7 tcp的擁塞控制,一、擁塞控制的一般原理 擁塞控制的作用,提供的負(fù)載(offered load),吞吐量(throughput),0,5.7 tcp的擁塞控制,一、擁塞控制的一般原理 開環(huán)控制與閉環(huán)控制 開環(huán)控制 在設(shè)計網(wǎng)絡(luò)時事先將有關(guān)發(fā)生擁塞的因素考慮周到,力求網(wǎng)絡(luò)在工作時不產(chǎn)生擁塞 閉環(huán)控制:基于反饋環(huán)路,有以下幾種措施: 監(jiān)測網(wǎng)絡(luò)系統(tǒng)以便檢測到擁塞在何時、何處發(fā)生 將擁塞發(fā)生的信息傳送到可采取行動的地方 調(diào)整網(wǎng)絡(luò)系統(tǒng)的運(yùn)行以解決出現(xiàn)的問題 rfc 2581中定義了四種擁塞控制方法 慢啟動(slow-start),又稱為慢開始 擁塞避免(congestion avoidance) 快重傳(fast retransmit) 快恢復(fù)(fast recovery),5.7 tcp的擁塞控制,二、擁塞控制方法:慢啟動(slow-start)和擁塞避免 慢啟動進(jìn)行擁塞控制的基本思路 開始發(fā)送時,如果立即把大量數(shù)據(jù)注入網(wǎng)絡(luò),則可能導(dǎo)致?lián)砣?因為此時不知道網(wǎng)絡(luò)的負(fù)荷狀況 較好的方法是:試探性地從小到大逐漸增大發(fā)送窗口 擁塞窗口cwnd (congestion window) 發(fā)送方維持擁塞窗口,它是一個狀態(tài)變量 擁塞窗口的大小取決于網(wǎng)絡(luò)的擁塞程度,并且動態(tài)地在變化 發(fā)送方讓自己的發(fā)送窗口等于擁塞窗口,如再考慮到接收方的接收能力,則發(fā)送窗口還可能小于擁塞窗口 發(fā)送方控制擁塞窗口的原則 只要沒有出現(xiàn)擁塞,擁塞窗口就增大一些,以便把更多的分組發(fā)送出去 一旦出現(xiàn)擁塞,擁塞窗口就減小一些,以減少注入到網(wǎng)絡(luò)中的分組數(shù),5.7 tcp的擁塞控制,二、擁塞控制方法:慢啟動(slow-start)和擁塞避免 如何判斷是否發(fā)生擁塞? 擁塞發(fā)生時路由器將丟棄分組 簡單的主機(jī)端判斷方法:只要沒有收到確認(rèn),就認(rèn)為發(fā)生了擁塞 慢啟動的工作過程 開始發(fā)送報文段時,設(shè)置擁塞窗口cwnd = 1,即設(shè)置為一個最大報文段mss的數(shù)值 每收到一個對新的報文段的確認(rèn)后,將擁塞窗口加 1,即增加一個 mss 的數(shù)值 用這樣的方法逐步增大發(fā)送端的擁塞窗口cwnd,可以使分組注入到網(wǎng)絡(luò)的速率更加合理 注意:tcp中窗口大小是以字節(jié)為單位的,慢啟動工作過程示例,發(fā)送方,接收方,t,t,注意:cwnd=1表示1個mss長度,不是1字節(jié),5.7 tcp的擁塞控制,二、擁塞控制方法:慢啟動(slow-start)和擁塞避免 傳輸輪次(transmission round) 使用慢啟動時,每經(jīng)過一個傳輸輪次,擁塞窗口cwnd就加倍 一個傳輸輪次所經(jīng)歷的時間其實(shí)就是往返時間rtt 傳輸輪次更加強(qiáng)調(diào): 把擁塞窗口cwnd所允許發(fā)送的報文段都連續(xù)發(fā)送出去,并收到了對已發(fā)送的最后一個字節(jié)的確認(rèn) 例如,擁塞窗口 cwnd = 4,這時的往返時間rtt就是發(fā)送方連續(xù)發(fā)送 4 個報文段,并收到這 4 個報文段的確認(rèn),總共經(jīng)歷的時間 為防止擁塞窗口cwnd增長過大導(dǎo)致?lián)砣?,設(shè)置一個慢啟動門限ssthresh cwnd ssthresh時,停止使用慢啟動算法而改用擁塞避免算法 cwnd = ssthresh時,可使用慢啟動算法或擁塞避免算法,5.7 tcp的擁塞控制,二、擁塞控制方法:慢啟動(slow-start)和擁塞避免 擁塞避免算法的思路 讓擁塞窗口cwnd緩慢地增大,即每經(jīng)過一個往返時間rtt就把發(fā)送方的擁塞窗口cwnd加 1,而不是加倍,使擁塞窗口cwnd按線性規(guī)律緩慢增長 擁塞發(fā)生時的處理 無論在慢啟動階段還是在擁塞避免階段,只要發(fā)送方判斷網(wǎng)絡(luò)出現(xiàn)擁塞(沒有按時收到確認(rèn)),就要把慢啟動門限ssthresh改為出現(xiàn)擁塞時的發(fā)送方窗口值的一半(但不能小于2) 然后把擁塞窗口cwnd重新設(shè)置為 1,執(zhí)行慢啟動算法 這樣做的目的:迅速減少注入到網(wǎng)絡(luò)中的分組數(shù),使得發(fā)生擁塞的路由器有足夠時間把隊列中積壓的分組處理完畢,慢啟動和擁塞避免過程示例 tcp 連接初始化時,擁塞窗口cwnd=1,慢啟動門限ssthresh=16,設(shè)發(fā)送窗口寬度=擁塞窗口寬度 在慢開始算法階段,發(fā)送端每收到一個確認(rèn),就把cwnd加1,即每經(jīng)過1個往返時間rtt,擁塞窗口cwnd加倍 當(dāng)擁塞窗口cwnd慢啟動門限ssthresh時,進(jìn)入擁塞避免階段,每經(jīng)過1個往返時間rtt,擁塞窗口cwnd+1 假定當(dāng)擁塞窗口cwnd=24時發(fā)生了擁塞,ssthresh減為12,擁塞窗口cwnd=1,并重新開始慢啟動過程,22,16,“乘法減小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,擁塞窗口cwnd,新的ssthresh值,網(wǎng)絡(luò)擁塞,指數(shù)規(guī)律增長,ssthresh的初始值,慢啟動,慢啟動,慢啟動,擁塞避免 “加法增大”,擁塞避免 “加法增大”,傳輸輪次,注意:tcp中窗口寬度和門限值均以字節(jié)為單位,本例中為mss倍數(shù),問題:如果頻繁擁塞?,5.7 tcp的擁塞控制,二、擁塞控制方法:慢啟動(slow-start)和擁塞避免 乘法減小(multiplicative decrease) 不論在慢啟動階段還是擁塞避免階段,只要出現(xiàn)一次超時(即網(wǎng)絡(luò)擁塞),就把慢啟動門限ssthresh減小到擁塞窗口的一半 當(dāng)網(wǎng)絡(luò)頻繁出現(xiàn)擁塞時,ssthresh值下降得很快,以大大減少注入到網(wǎng)絡(luò)中的分組數(shù) 加法增大(additive increase) 執(zhí)行擁塞避免算法后,每經(jīng)過一個往返時間rtt,把擁塞窗口cwnd增加一個mss大小,使擁塞窗口緩慢增大,以防止網(wǎng)絡(luò)過早出現(xiàn)擁塞,5.7 tcp的擁塞控制,2009年的一道考研題 一個tcp連接總是以1kb的最大段長度發(fā)送tcp段,發(fā)送方有足夠的數(shù)據(jù)要發(fā)送。當(dāng)擁塞窗口為16kb時發(fā)生了超時,如果接下來的4個rtt(往返時間)內(nèi)的tcp段的傳輸都是成功的,那么當(dāng)?shù)?個rtt時間內(nèi)發(fā)送的所有tcp段都得到肯定應(yīng)答時,擁塞窗口大小是: a、7kb b、8kb c、9kb d、16kb 2010年的一道考研題 主機(jī)甲和主機(jī)乙之間建立一個tcp連接,tcp最大段長度為1000字節(jié),若主機(jī)甲的當(dāng)前擁塞窗口為4000字節(jié),在主機(jī)甲向主機(jī)乙連續(xù)發(fā)送2個最大段后,成功收到主機(jī)乙發(fā)送的第一段的確認(rèn)段,確認(rèn)段中通告的接收窗口大小為2000字節(jié),則此時主機(jī)甲還可以向主機(jī)乙發(fā)送的最大字節(jié)數(shù)是: a、1000 b、2000 c、3000 d、4000,5.7 tcp的擁塞控制,三、擁塞控制方法:快重傳和快恢復(fù) 快重傳(fast retransmit)算法思路 如果發(fā)送方在超時時間內(nèi)未收到確認(rèn)報文,說明網(wǎng)絡(luò)中發(fā)生了擁塞,此時發(fā)送方應(yīng)盡早地減小窗口寬度 每當(dāng)接收方收到一個失序的報文段,就發(fā)出重復(fù)確認(rèn),以便使發(fā)送方及早知道有報文段沒有到達(dá)接收方 發(fā)送方只要接連收到三個重復(fù)確認(rèn)就應(yīng)當(dāng)立即重傳對方尚未收到的報文段 快恢復(fù)(fast recovery)算法思路 當(dāng)發(fā)送端收到連續(xù)三個重復(fù)的確認(rèn)時,就進(jìn)行“乘法減小”,把慢啟動門限ssthresh減半 接下來不執(zhí)行慢啟動算法,而是設(shè)置為慢啟動門限ssthresh減半后的數(shù)值,然后開始執(zhí)行擁塞避免算法(“加法增大”),使擁塞窗口緩慢地線性增大 發(fā)送方認(rèn)為現(xiàn)在網(wǎng)絡(luò)很可能沒有發(fā)生擁塞(僅有擁塞征兆),因為擁塞時不會有連續(xù)多個報文段到達(dá)接收方,5.7 tcp的擁塞控制,快重傳示例,發(fā)送方,接收方,t,t,5.7 tcp的擁塞控制,24,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,傳輸輪次,擁塞窗口 cwnd,收到 3 個重復(fù)的確認(rèn) 執(zhí)行快重傳算法,慢開始,“乘法減小”,擁塞避免 “加法增大”,tcp reno 版本,tcp tahoe 版本 (已廢棄不用),ssthresh 的初始值,擁塞避免 “加法增大”,新的 ssthresh 值,慢開始,快恢復(fù),連續(xù)收到三個重復(fù)確認(rèn)后轉(zhuǎn)入擁塞避免,5.7 tcp的擁塞控制,三、擁塞控制方法:快重傳和快恢復(fù) 發(fā)送窗口的上限值 從流量控制角度考慮,發(fā)送窗口不能超過對方給出的接收窗口值 綜合考慮流量控制和擁塞控制,發(fā)送方的發(fā)送窗口的上限值應(yīng)當(dāng)在接收方窗口rwnd和擁塞窗口cwnd兩個者中取較小的一個: 發(fā)送窗口的上限值 = minrwnd, cwnd 當(dāng) rwnd cwnd 時,是接收方的接收能力限制發(fā)送窗口的最大值 當(dāng) cwnd rwnd 時,則是網(wǎng)絡(luò)的擁塞限制發(fā)送窗口的最大值,5.8 tcp的連接管理,5.8 tcp的連接管理,一、簡介 tcp傳輸連接有三個階段 連接建立 數(shù)據(jù)傳送 連接釋放 連接建立過程中要解決三個問題: 使每一方能夠確知對方的存在 允許雙方協(xié)商一些參數(shù)(如最大報文段長度、最大窗口大小、服務(wù)質(zhì)量等) 能夠?qū)鬏攲?shí)體資源進(jìn)行分配(如緩存、連接表中的項目等) tcp 連接的建立都是采用客戶/服務(wù)器方式 客戶(client):主動發(fā)起連接建立的應(yīng)用進(jìn)程 服務(wù)器(server):被動等待連接建立的應(yīng)用進(jìn)程,二、tcp 的連接建立 tcp連接的建立采用三次握手(three-way handshake) a向b發(fā)出連接請求報文段,其首部中的syn=1,并選擇序號seq=x,表明傳送數(shù)據(jù)時的第一個數(shù)據(jù)字節(jié)的序號是x b收到連接請求后,如同意,則發(fā)回確認(rèn),其中syn=1,ack=1,確認(rèn)號ack=x+1,自己選擇的序號seq=y a收到后向b給出確認(rèn),其ack=1,確認(rèn)號ack=y+1 b收到后,tcp連接建立,closed,closed,a,b,客戶,服務(wù)器,5.8 tcp的連接管理,二、tcp 的連接建立 關(guān)于3次握手的討論 為什么要采用3次握手而不是2次握手? 防止“失效的連接請求”在服務(wù)器端占用資源 客戶端發(fā)出了連接請求,但該數(shù)據(jù)報在網(wǎng)絡(luò)中某處滯留了 客
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐廳日常衛(wèi)生管理
- 2025資陽環(huán)境科技職業(yè)學(xué)院輔導(dǎo)員考試試題及答案
- 2025西安汽車職業(yè)大學(xué)輔導(dǎo)員考試試題及答案
- 2025燕京理工學(xué)院輔導(dǎo)員考試試題及答案
- 2025蘇州大學(xué)輔導(dǎo)員考試試題及答案
- 2025科爾沁藝術(shù)職業(yè)學(xué)院輔導(dǎo)員考試試題及答案
- 2025福建醫(yī)科大學(xué)輔導(dǎo)員考試試題及答案
- T/ZHCA 001-2018化妝品美白祛斑功效測試方法
- T/ZGZS 0307-2024危險廢物經(jīng)營單位風(fēng)險評價技術(shù)導(dǎo)則
- 神經(jīng)及精神疾病的臨床生物化學(xué)檢驗
- 初三中考宣誓誓詞82060
- 觸電事故桌面推演方案
- 護(hù)理風(fēng)險評估及填寫要求
- 《中興通訊績效管理制度》-人事制度表格【管理資料】
- 微邦生物技術(shù)生活污水處理中的應(yīng)用
- 鐵路工務(wù)技術(shù)手冊
- (完整版)硬件測試規(guī)范
- 2006年工資標(biāo)準(zhǔn)及套改對應(yīng)表
- DBJ∕T 13-183-2014 基樁豎向承載力自平衡法靜載試驗技術(shù)規(guī)程
- 張雙樓煤礦安全評價報告(出版稿10.14)
- [模板]健康教育處方
評論
0/150
提交評論