版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
計算機網(wǎng)絡(luò)第7章傳輸層第7章傳輸層
*7.1傳輸層協(xié)議概述*7.2TCP/IP體系中的傳輸層 7.2.1傳輸層中的兩個協(xié)議 7.2.2端口的概念*7.3用戶數(shù)據(jù)報協(xié)議UDP 7.3.1UDP概述 7.3.2UDP用戶數(shù)據(jù)報的首部格式第7章傳輸層(續(xù))7.4傳輸控制協(xié)議TCP *7.4.1TCP概述 *7.4.2TCP報文段的首部 *7.4.3TCP的數(shù)據(jù)編號與確認(rèn) *7.4.4TCP的流量控制與擁塞控制 *7.4.5TCP的重傳機制 7.4.6采用隨機早期丟棄RED進行擁塞控制 *7.4.7TCP的運輸連接管理 7.4.8TCP的有限狀態(tài)機7.1傳輸層協(xié)議概述從通信和信息處理的角度看,傳輸層向它上面的應(yīng)用層提供通信服務(wù),它屬于面向通信部分的最高層,同時也是用戶功能中的最低層。物理層網(wǎng)絡(luò)層傳輸層應(yīng)用層數(shù)據(jù)鏈路層面向信息處理面向通信用戶功能網(wǎng)絡(luò)功能傳輸層為相互通信的應(yīng)用進程提供了邏輯通信54321傳輸層提供應(yīng)用進程間的邏輯通信主機A主機B應(yīng)用進程應(yīng)用進程路由器1路由器2AP1LAN2WANAP2AP3AP4IP層LAN1AP1AP2AP4端口端口54321IP協(xié)議的作用范圍傳輸層協(xié)議TCP和UDP的作用范圍AP3應(yīng)用進程之間的通信兩個主機進行通信實際上就是兩個主機中的應(yīng)用進程互相通信。應(yīng)用進程之間的通信又稱為端到端的通信。傳輸層的一個很重要的功能就是復(fù)用和分用。應(yīng)用層不同進程的報文通過不同的端口向下交到傳輸層,再往下就共用網(wǎng)絡(luò)層提供的服務(wù)?!皞鬏攲犹峁?yīng)用進程間的邏輯通信”?!斑壿嬐ㄐ拧钡囊馑际牵簜鬏攲又g的通信好像是沿水平方向傳送數(shù)據(jù)。但事實上這兩個傳輸層之間并沒有一條水平方向的物理連接。傳輸層協(xié)議和網(wǎng)絡(luò)層協(xié)議的主要區(qū)別應(yīng)用進程…應(yīng)用進程…IP協(xié)議的作用范圍(提供主機之間的邏輯通信)TCP和UDP協(xié)議的作用范圍(提供進程之間的邏輯通信)因特網(wǎng)傳輸層的主要功能傳輸層為應(yīng)用進程之間提供端到端的邏輯通信(但網(wǎng)絡(luò)層是為主機之間提供邏輯通信)。傳輸層還要對收到的報文進行差錯檢測。傳輸層需要有兩種不同的運輸協(xié)議,即面向連接的TCP和無連接的UDP。
傳輸層與其上下層之間的關(guān)系的OSI表示法運輸實體運輸實體運輸協(xié)議傳輸層層接口運輸服務(wù)用戶(應(yīng)用層實體)運輸服務(wù)用戶(應(yīng)用層實體)層接口網(wǎng)絡(luò)層(或網(wǎng)際層)應(yīng)用層主機A主機B傳輸層服務(wù)訪問點TSAP網(wǎng)絡(luò)層服務(wù)訪問點NSAP傳輸層向上提供可靠的和不可靠的邏輯通信信道?應(yīng)用層運輸層發(fā)送進程接收進程接收進程數(shù)據(jù)數(shù)據(jù)全雙工可靠信道數(shù)據(jù)數(shù)據(jù)使用TCP協(xié)議使用UDP協(xié)議不可靠信道發(fā)送進程TCP/IP的傳輸層有兩個不同的協(xié)議:(1)用戶數(shù)據(jù)報協(xié)議UDP (UserDatagramProtocol)(2)傳輸控制協(xié)議TCP (TransmissionControlProtocol)7.2TCP/IP體系中的傳輸層
7.2.1傳輸層中的兩個協(xié)議兩個對等運輸實體在通信時傳送的數(shù)據(jù)單位叫作運輸協(xié)議數(shù)據(jù)單元TPDU(TransportProtocolDataUnit)。TCP傳送的數(shù)據(jù)單位協(xié)議是TCP報文段(segment)UDP傳送的數(shù)據(jù)單位協(xié)議是UDP報文或用戶數(shù)據(jù)報。TCP與UDPTCP/IP體系中的傳輸層協(xié)議TCPUDPIP應(yīng)用層與各種網(wǎng)絡(luò)接口傳輸層TCP與UDPUDP在傳送數(shù)據(jù)之前不需要先建立連接。對方的傳輸層在收到UDP報文后,不需要給出任何確認(rèn)。雖然UDP不提供可靠交付,但在某些情況下UDP是一種最有效的工作方式。TCP則提供面向連接的服務(wù)。TCP不提供廣播或多播服務(wù)。由于TCP要提供可靠的、面向連接的運輸服務(wù),因此不可避免地增加了許多的開銷。這不僅使協(xié)議數(shù)據(jù)單元的首部增大很多,還要占用許多的處理機資源。還要強調(diào)兩點傳輸層的UDP用戶數(shù)據(jù)報與網(wǎng)際層的IP數(shù)據(jù)報有很大區(qū)別。IP
數(shù)據(jù)報要經(jīng)過互連網(wǎng)中許多路由器的存儲轉(zhuǎn)發(fā),但
UDP
用戶數(shù)據(jù)報是在傳輸層的端到端抽象的邏輯信道中傳送的。TCP
報文段是在傳輸層抽象的端到端邏輯信道中傳送,這種信道是可靠的全雙工信道。但這樣的信道卻不知道究竟經(jīng)過了哪些路由器,而這些路由器也根本不知道上面的傳輸層是否建立了TCP連接。7.2.2端口的概念端口就是傳輸層服務(wù)訪問點TSAP。端口的作用就是讓應(yīng)用層的各種應(yīng)用進程都能將其數(shù)據(jù)通過端口向下交付給傳輸層,以及讓傳輸層知道應(yīng)當(dāng)將其報文段中的數(shù)據(jù)向上通過端口交付給應(yīng)用層相應(yīng)的進程。從這個意義上講,端口是用來標(biāo)志應(yīng)用層的進程。端口在進程之間的通信中所起的作用應(yīng)用層運輸層網(wǎng)絡(luò)層TCP報文段UDP用戶數(shù)據(jù)報應(yīng)用進程TCP復(fù)用IP復(fù)用UDP復(fù)用TCP報文段UDP用戶數(shù)據(jù)報應(yīng)用進程端口端口TCP分用UDP分用IP分用IP數(shù)據(jù)報IP數(shù)據(jù)報發(fā)送方接收方端口端口用一個16bit端口號進行標(biāo)志。端口號只具有本地意義,即端口號只是為了標(biāo)志本計算機應(yīng)用層中的各進程。在因特網(wǎng)中不同計算機的相同端口號是沒有聯(lián)系的。一類是熟知端口,其數(shù)值一般為0--1023。當(dāng)一種新的應(yīng)用程序出現(xiàn)時,必須為它指派一個熟知端口。另一類則是一般端口,用來隨時分配給請求通信的客戶進程。插口(socket)TCP使用“連接”(而不僅僅是“端口”)作為最基本的抽象,同時將TCP連接的端點稱為插口(socket),或套接字、套接口。插口和端口、IP地址的關(guān)系是:IP地址3端口號15003,1500插口(socket)同一個名詞socket有多種不同的意思應(yīng)用編程接口API稱為socketAPI,簡稱為socket。socketAPI中使用的一個函數(shù)名也叫作socket。調(diào)用socket函數(shù)的端點稱為socket。調(diào)用socket函數(shù)時其返回值稱為socket描述符,可簡稱為socket。在操作系統(tǒng)內(nèi)核中連網(wǎng)協(xié)議的Berkeley實現(xiàn),稱為socket實現(xiàn)。7.3用戶數(shù)據(jù)報協(xié)議UDP
7.3.1UDP概述
UDP只在IP的數(shù)據(jù)報服務(wù)之上增加了很少一點的功能,即端口的功能和差錯檢測的功能。雖然UDP用戶數(shù)據(jù)報只能提供不可靠的交付,但UDP在某些方面有其特殊的優(yōu)點。發(fā)送數(shù)據(jù)之前不需要建立連接UDP的主機不需要維持復(fù)雜的連接狀態(tài)表。UDP用戶數(shù)據(jù)報只有8個字節(jié)的首部開銷。網(wǎng)絡(luò)出現(xiàn)的擁塞不會使源主機的發(fā)送速率降低。這對某些實時應(yīng)用是很重要的。端口是用報文隊列來實現(xiàn)UDP端口51000UDP端口69出隊列入隊列出隊列入隊列TFTP服務(wù)器TFTP客戶UDP用戶數(shù)據(jù)報應(yīng)用層運輸層7.3.2UDP用戶數(shù)據(jù)報的首部格式偽首部源端口目的端口長度檢驗和數(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ù)報用戶數(shù)據(jù)報UDP有兩個字段:數(shù)據(jù)字段和首部字段。首部字段有8個字節(jié),由4個字段組成,每個字段都是兩個字節(jié)。偽首部源端口目的端口長度檢驗和數(shù)據(jù)首部UDP長度源IP地址目的IP地址017IP數(shù)據(jù)報字節(jié)44112122222字節(jié)發(fā)送在前數(shù)據(jù)首部UDP用戶數(shù)據(jù)報在計算檢驗和時,臨時把“偽首部”和UDP用戶數(shù)據(jù)報連接在一起。偽首部僅僅是為了計算檢驗和。計算UDP檢驗和的例子1001100100010011→153.190000100001101000→8.1041010101100000011→171.30000111000001011→14.110000000000010001→0和170000000000001111→150000010000111111→10870000000000001101→130000000000001111→150000000000000000→0(檢驗和)0101010001000101→數(shù)據(jù)0101001101010100→數(shù)據(jù)0100100101001110→數(shù)據(jù)0100011100000000→數(shù)據(jù)和0(填充)1001011011101011→求和得出的結(jié)果0110100100010100→檢驗和12字節(jié)偽首部8字節(jié)UDP首部7字節(jié)數(shù)據(jù)填充按二進制反碼運算求和將得出的結(jié)果求反碼全0171510871315全0數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)全07.4傳輸控制協(xié)議TCP
7.4.1TCP概述
端口…發(fā)送
TCP
報文段TCP…TCP接收緩存發(fā)送緩存報文段…報文段報文段端口發(fā)送端接收端向發(fā)送緩存寫入數(shù)據(jù)塊從接收緩存讀取數(shù)據(jù)塊應(yīng)用進程應(yīng)用進程TCP首部20字節(jié)的固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FIN32bitSYNRSTPSHACKURG比特08162431填充TCP數(shù)據(jù)部分TCP首部TCP報文段IP數(shù)據(jù)部分IP首部發(fā)送在前TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充源端口和目的端口字段——各占2字節(jié)。端口是傳輸層與應(yīng)用層的服務(wù)接口。傳輸層的復(fù)用和分用功能都要通過端口才能實現(xiàn)。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充序號字段——占4字節(jié)。TCP連接中傳送的數(shù)據(jù)流中的每一個字節(jié)都編上一個序號。序號字段的值則指的是本報文段所發(fā)送的數(shù)據(jù)的第一個字節(jié)的序號。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充確認(rèn)號字段——占4字節(jié),是期望收到對方的下一個報文段的數(shù)據(jù)的第一個字節(jié)的序號。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充數(shù)據(jù)偏移——占4bit,它指出TCP報文段的數(shù)據(jù)起始處距離TCP報文段的起始處有多遠。“數(shù)據(jù)偏移”的單位不是字節(jié)而是32bit字(4字節(jié)為計算單位)。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充保留字段——占6bit,保留為今后使用,但目前應(yīng)置為0。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充緊急比特URG——當(dāng)URG1時,表明緊急指針字段有效。它告訴系統(tǒng)此報文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級的數(shù)據(jù))。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充確認(rèn)比特ACK——只有當(dāng)ACK1時確認(rèn)號字段才有效。當(dāng)ACK0時,確認(rèn)號無效。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充推送比特PSH(PuSH)——接收TCP收到推送比特置1的報文段,就盡快地交付給接收應(yīng)用進程,而不再等到整個緩存都填滿了后再向上交付。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充復(fù)位比特RST(ReSeT)——當(dāng)RST1時,表明TCP連接中出現(xiàn)嚴(yán)重差錯(如由于主機崩潰或其他原因),必須釋放連接,然后再重新建立運輸連接。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充同步比特SYN——同步比特SYN置為1,就表示這是一個連接請求或連接接受報文。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充終止比特FIN(FINal)——用來釋放一個連接。當(dāng)FIN1時,表明此報文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運輸連接。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充窗口字段——占2字節(jié)。窗口字段用來控制對方發(fā)送的數(shù)據(jù)量,單位為字節(jié)。TCP連接的一端根據(jù)設(shè)置的緩存空間大小確定自己的接收窗口大小,然后通知對方以確定對方的發(fā)送窗口的上限。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充檢驗和——占2字節(jié)。檢驗和字段檢驗的范圍包括首部和數(shù)據(jù)這兩部分。在計算檢驗和時,要在TCP報文段的前面加上12字節(jié)的偽首部。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充緊急指針字段——占16bit。緊急指針指出在本報文段中的緊急數(shù)據(jù)的最后一個字節(jié)的序號。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充選項字段——長度可變。TCP只規(guī)定了一種選項,即最大報文段長度MSS(MaximumSegmentSize)。MSS告訴對方TCP:“我的緩存所能接收的報文段的數(shù)據(jù)字段的最大長度是MSS個字節(jié)。”MSS是TCP報文段中的數(shù)據(jù)字段的最大長度。數(shù)據(jù)字段加上TCP首部才等于整個的TCP報文段。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充填充字段——這是為了使整個首部長度是4字節(jié)的整數(shù)倍。7.4.3TCP的數(shù)據(jù)編號與確認(rèn)TCP協(xié)議是面向字節(jié)的。TCP將所要傳送的報文看成是字節(jié)組成的數(shù)據(jù)流,并使每一個字節(jié)對應(yīng)于一個序號。在連接建立時,雙方要商定初始序號。TCP每次發(fā)送的報文段的首部中的序號字段數(shù)值表示該報文段中的數(shù)據(jù)部分的第一個字節(jié)的序號。TCP的確認(rèn)是對接收到的數(shù)據(jù)的最高序號表示確認(rèn)。接收端返回的確認(rèn)號是已收到的數(shù)據(jù)的最高序號加1。因此確認(rèn)號表示接收端期望下次收到的數(shù)據(jù)中的第一個數(shù)據(jù)字節(jié)的序號。7.4.4TCP的流量控制與擁塞控制
1.滑動窗口的概念TCP采用大小可變的滑動窗口進行流量控制。窗口大小的單位是字節(jié)。在TCP報文段首部的窗口字段寫入的數(shù)值就是當(dāng)前給對方設(shè)置的發(fā)送窗口數(shù)值的上限。發(fā)送窗口在連接建立時由雙方商定。但在通信的過程中,接收端可根據(jù)自己的資源情況,隨時動態(tài)地調(diào)整對方的發(fā)送窗口上限值(可增大或減小)。收到確認(rèn)即可前移1002003004005006007008009001012013014015016017018011發(fā)送窗口可發(fā)送不可發(fā)送指針發(fā)送端要發(fā)送900字節(jié)長的數(shù)據(jù),劃分為9個100字節(jié)長的報文段,而發(fā)送窗口確定為500字節(jié)。發(fā)送端只要收到了對方的確認(rèn),發(fā)送窗口就可前移。發(fā)送TCP要維護一個指針。每發(fā)送一個報文段,指針就向前移動一個報文段的距離。收到確認(rèn)即可前移1002003004005006007008009001012013014015016017018011可發(fā)送不可發(fā)送指針1002003004005006007008009001012013014015016017018011發(fā)送窗口可發(fā)送不可發(fā)送指針發(fā)送窗口前移發(fā)送端已發(fā)送了400字節(jié)的數(shù)據(jù),但只收到對前200字節(jié)數(shù)據(jù)的確認(rèn),同時窗口大小不變?,F(xiàn)在發(fā)送端還可發(fā)送300字節(jié)。已發(fā)送并被確認(rèn)已發(fā)送但未被確認(rèn)1002003004005006007008009001012013014015016017018011已發(fā)送并被確認(rèn)已發(fā)送但未被確認(rèn)可發(fā)送不可發(fā)送指針1002003004005006007008009001012013014015016017018011已發(fā)送并被確認(rèn)可發(fā)送不可發(fā)送指針發(fā)送窗口前移發(fā)送窗口縮小發(fā)送端收到了對方對前400字節(jié)數(shù)據(jù)的確認(rèn),但對方通知發(fā)送端必須把窗口減小到400字節(jié)?,F(xiàn)在發(fā)送端最多還可發(fā)送400字節(jié)的數(shù)據(jù)。利用可變窗口大小進行流量控制
雙方確定的窗口值是400SEQ=1SEQ=201SEQ=401SEQ=301SEQ=101SEQ=501ACK=201,WIN=300ACK=601,WIN=0ACK=501,WIN=200主機A主機B允許A再發(fā)送300字節(jié)(序號201至500)A還能發(fā)送200字節(jié)A還能發(fā)送200字節(jié)(序號301至500)A還能發(fā)送300字節(jié)A還能發(fā)送100字節(jié)(序號401至500)A超時重發(fā),但不能發(fā)送序號500以后的數(shù)據(jù)允許A再發(fā)送200字節(jié)(序號501至700)A還能發(fā)送100字節(jié)(序號501至700)不允許A再發(fā)送(到序號600的數(shù)據(jù)都已收到)SEQ=201丟失!2.慢啟動和擁塞避免發(fā)送端的主機在確定發(fā)送報文段的速率時,既要根據(jù)接收端的接收能力,又要從全局考慮不要使網(wǎng)絡(luò)發(fā)生擁塞。因此,每一個TCP連接需要有以下兩個狀態(tài)變量:接收端窗口rwnd(receiverwindow)又稱為通知窗口(advertisedwindow)。擁塞窗口cwnd(congestionwindow)。接收端窗口rwnd和擁塞窗口cwnd(1)接收端窗口rwnd這是接收端根據(jù)其目前的接收緩存大小所許諾的最新的窗口值,是來自接收端的流量控制。接收端將此窗口值放在TCP報文的首部中的窗口字段,傳送給發(fā)送端。(2)擁塞窗口cwnd(congestionwindow)是發(fā)送端根據(jù)自己估計的網(wǎng)絡(luò)擁塞程度而設(shè)置的窗口值,是來自發(fā)送端的流量控制。發(fā)送窗口的上限值發(fā)送端的發(fā)送窗口的上限值應(yīng)當(dāng)取為接收端窗口rwnd和擁塞窗口cwnd這兩個變量中較小的一個,即應(yīng)按以下公式確定:發(fā)送窗口的上限值Min[rwnd,cwnd](7-1)當(dāng)rwnd<cwnd時,是接收端的接收能力限制發(fā)送窗口的最大值。當(dāng)cwnd<rwnd時,則是網(wǎng)絡(luò)的擁塞限制發(fā)送窗口的最大值。
慢啟動算法的原理在主機剛剛開始發(fā)送報文段時可先將擁塞窗口cwnd設(shè)置為一個最大報文段MSS的數(shù)值。在每收到一個對新的報文段的確認(rèn)后,將擁塞窗口增加至多一個MSS的數(shù)值。用這樣的方法逐步增大發(fā)送端的擁塞窗口cwnd,可以使分組注入到網(wǎng)絡(luò)的速率更加合理。慢啟動和擁塞避免算法的實現(xiàn)舉例當(dāng)TCP連接進行初始化時,將擁塞窗口置為1。圖中的窗口單位不使用字節(jié)而使用報文段。慢開始門限的初始值設(shè)置為16個報文段,即ssthresh=16。246810121416182022004812162024傳輸次數(shù)擁塞窗口cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長線性規(guī)律增長ssthresh=16慢啟動慢開始擁塞避免擁塞避免更新后的ssthresh=12進入擁塞避免慢啟動和擁塞避免算法的實現(xiàn)舉例發(fā)送端的發(fā)送窗口不能超過擁塞窗口cwnd和接收端窗口rwnd中的最小值。我們假定接收端窗口足夠大,因此現(xiàn)在發(fā)送窗口的數(shù)值等于擁塞窗口的數(shù)值。246810121416182022004812162024傳輸次數(shù)擁塞窗口cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長線性規(guī)律增長ssthresh=16慢開始慢開始擁塞避免擁塞避免更新后的ssthresh=12進入擁塞避免在執(zhí)行慢開始算法時,擁塞窗口cwnd的初始值為1,發(fā)送第一個報文段M0。246810121416182022004812162024傳輸次數(shù)擁塞窗口cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長線性規(guī)律增長ssthresh=16慢啟動慢啟動擁塞避免擁塞避免更新后的ssthresh=12進入擁塞避免慢啟動和擁塞避免算法的實現(xiàn)舉例246810121416182022004812162024傳輸次數(shù)擁塞窗口cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長線性規(guī)律增長ssthresh=16慢啟動慢啟動擁塞避免擁塞避免更新后的ssthresh=12進入擁塞避免發(fā)送端收到ACK1(確認(rèn)M0,期望收到M1)后,將cwnd從1增大到2,于是發(fā)送端可以接著發(fā)送M1和M2兩個報文段。慢啟動和擁塞避免算法的實現(xiàn)舉例接收端發(fā)回ACK2和ACK3。發(fā)送端每收到一個對新報文段的確認(rèn)ACK,就把發(fā)送端的擁塞窗口加1。現(xiàn)在發(fā)送端的cwnd從2增大到4,并可發(fā)送M4~~~M6共4個報文段。246810121416182022004812162024傳輸次數(shù)擁塞窗口cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長線性規(guī)律增長ssthresh=16慢啟動慢啟動擁塞避免擁塞避免更新后的ssthresh=12進入擁塞避免慢啟動和擁塞避免算法的實現(xiàn)舉例發(fā)送端每收到一個對新報文段的確認(rèn)ACK,就把發(fā)送端的擁塞窗口加1,因此擁塞窗口cwnd隨著傳輸次數(shù)按指數(shù)規(guī)律增長。246810121416182022004812162024傳輸次數(shù)擁塞窗口cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長線性規(guī)律增長ssthresh=16慢啟動慢啟動擁塞避免擁塞避免更新后的ssthresh=12進入擁塞避免慢啟動和擁塞避免算法的實現(xiàn)舉例當(dāng)擁塞窗口cwnd增長到慢開始門限值ssthresh時(即當(dāng)cwnd=16時),就改為執(zhí)行擁塞避免算法,擁塞窗口按線性規(guī)律增長。246810121416182022004812162024傳輸次數(shù)擁塞窗口cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長ssthresh=16慢啟動慢啟動線性規(guī)律增長擁塞避免擁塞避免更新后的ssthresh=12進入擁塞避免慢啟動和擁塞避免算法的實現(xiàn)舉例假定擁塞窗口的數(shù)值增長到24時,網(wǎng)絡(luò)出現(xiàn)超時(表明網(wǎng)絡(luò)擁塞了)。246810121416182022004812162024傳輸次數(shù)擁塞窗口cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長線性規(guī)律增長ssthresh=16慢啟動慢啟動擁塞避免擁塞避免更新后的ssthresh=12進入擁塞避免慢啟動和擁塞避免算法的實現(xiàn)舉例更新后的ssthresh值變?yōu)?2(即發(fā)送窗口數(shù)值24的一半),擁塞窗口再重新設(shè)置為1,并執(zhí)行慢開始算法。246810121416182022004812162024傳輸次數(shù)擁塞窗口cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長線性規(guī)律增長ssthresh=16慢啟動慢啟動擁塞避免擁塞避免更新后的ssthresh=12進入擁塞避免慢啟動和擁塞避免算法的實現(xiàn)舉例當(dāng)cwnd=12時改為執(zhí)行擁塞避免算法,擁塞窗口按按線性規(guī)律增長,每經(jīng)過一個往返時延就增加一個MSS的大小。246810121416182022004812162024傳輸次數(shù)擁塞窗口cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長線性規(guī)律增長ssthresh=16慢啟動慢啟動擁塞避免擁塞避免更新后的ssthresh=12進入擁塞避免慢啟動和擁塞避免算法的實現(xiàn)舉例乘法減小(multiplicativedecrease)“乘法減小“是指不論在慢開始階段還是擁塞避免階段,只要出現(xiàn)一次超時(即出現(xiàn)一次網(wǎng)絡(luò)擁塞),就把慢開始門限值ssthresh設(shè)置為當(dāng)前的擁塞窗口值乘以0.5。當(dāng)網(wǎng)絡(luò)頻繁出現(xiàn)擁塞時,ssthresh值就下降得很快,以大大減少注入到網(wǎng)絡(luò)中的分組數(shù)。加法增大
(additiveincrease)
“加法增大”是指執(zhí)行擁塞避免算法后,當(dāng)收到對所有報文段的確認(rèn)就將擁塞窗口cwnd增加一個MSS大小,使擁塞窗口緩慢增大,以防止網(wǎng)絡(luò)過早出現(xiàn)擁塞。必須強調(diào)指出“擁塞避免”并非指完全能夠避免了擁塞。利用以上的措施要完全避免網(wǎng)絡(luò)擁塞還是不可能的?!皳砣苊狻笔钦f在擁塞避免階段把擁塞窗口控制為按線性規(guī)律增長,使網(wǎng)絡(luò)比較不容易出現(xiàn)擁塞。3.快重傳和快恢復(fù)快重傳算法規(guī)定,發(fā)送端只要一連收到三個重復(fù)的ACK即可斷定有分組丟失了,就應(yīng)立即重傳丟失的報文段而不必繼續(xù)等待為該報文段設(shè)置的重傳計時器的超時。不難看出,快重傳并非取消重傳計時器,而是在某些情況下可更早地重傳丟失的報文段??熘貍髋e例M1,M2ACK2,ACK3M4主機A主機BB確認(rèn)M1和M2A發(fā)送M1和M2A收到了三個重復(fù)的確認(rèn)ACK3,就立即重傳M3,而不必等待超時重傳。M3丟失!A發(fā)送M3但丟失了A發(fā)送M4ACK3M5A發(fā)送M5ACK3B發(fā)送第二個重復(fù)確認(rèn)ACK3M6A發(fā)送M6ACK3M3B發(fā)送第三個重復(fù)確認(rèn)ACK3B只能再次確認(rèn)M2(因為M3沒有收到)快恢復(fù)算法(1)當(dāng)發(fā)送端收到連續(xù)三個重復(fù)的ACK時,就重新設(shè)置慢開始門限ssthresh。(2)與慢開始不同之處是擁塞窗口cwnd不是設(shè)置為1,而是設(shè)置為ssthresh+3MSS。(3)若收到的重復(fù)的ACK為n個(n>3),則將cwnd設(shè)置為ssthresh+nMSS。(4)若發(fā)送窗口值還容許發(fā)送報文段,就按擁塞避免算法繼續(xù)發(fā)送報文段。(5)若收到了確認(rèn)新的報文段的ACK,就將cwnd縮小到ssthresh。7.4.5TCP的重傳機制重傳機制是TCP中最重要和最復(fù)雜的問題之一。TCP每發(fā)送一個報文段,就對這個報文段設(shè)置一次計時器。只要計時器設(shè)置的重傳時間到但還沒有收到確認(rèn),就要重傳這一報文段。往返時延的方差很大由于TCP的下層是一個互連網(wǎng)環(huán)境,IP數(shù)據(jù)報所選擇的路由變化很大。因而傳輸層的往返時延的方差也很大。時間數(shù)據(jù)鏈路層傳輸層T1T2T3往返時延的概率分布
往返時延的自適應(yīng)算法記錄每一個報文段發(fā)出的時間,以及收到相應(yīng)的確認(rèn)報文段的時間。這兩個時間之差就是報文段的往返時延。將各個報文段的往返時延樣本加權(quán)平均,就得出報文段的平均往返時延RTT。每測量到一個新的往返時延樣本,就按下式重新計算一次平均往返時延RTT:平均往返時延RTT
(舊的RTT)(1)(新的往返時延樣本)(7-2)在上式中,01。參數(shù)的選擇若很接近于1,表示新算出的平均往返時延RTT和原來的值相比變化不大,而新的往返時延樣本的影響不大(RTT值更新較慢)。若選擇接近于零,則表示加權(quán)計算的平均往返時延RTT受新的往返時延樣本的影響較大(RTT值更新較快)。典型的值為7/8。超時重傳時間RTO(RetransmissionTime-Out)計時器的RTO應(yīng)略大于上面得出的RTT,即:
RTO
RTT(7-3)這里是個大于1的系數(shù)。若取很接近于1,發(fā)送端可及時地重傳丟失的報文段,因此效率得到提高。但若報文段并未丟失而僅僅是增加了一點時延,那么過早地重傳反而會加重網(wǎng)絡(luò)的負擔(dān)。因此TCP原先的標(biāo)準(zhǔn)推薦將值取為2。往返時延RTT?往返時間的測量相當(dāng)復(fù)雜TCP報文段1沒有收到確認(rèn)。重傳(即報文段2)后,收到了確認(rèn)報文段ACK。如何判定此確認(rèn)報文段是對原來的報文段1的確認(rèn),還是對重傳的報文段2的確認(rèn)?發(fā)送一個TCP報文段超時重傳TCP報文段收到ACK時間12往返時延RTT?是對哪一個報文段的確認(rèn)?Karn算法在計算平均往返時延RTT時,只要報文段重傳了,就不采用其往返時延樣本。這樣得出的平均往返時延RTT和重傳時間就較準(zhǔn)確。修正的Karn算法報文段每重傳一次,就將重傳時間增大一些:新的重傳時間(舊的重傳時間)(7-4)系數(shù)的典型值是2。當(dāng)不再發(fā)生報文段的重傳時,才根據(jù)報文段的往返時延更新平均往返時延RTT和重傳時間的數(shù)值。實踐證明,這種策略較為合理。7.4.6隨機早期丟棄RED(RandomEarlyDiscard)使路由器的隊列維持兩個參數(shù),即隊列長度最小門限THmin和最大門限THmax。RED對每一個到達的數(shù)據(jù)報都先計算平均隊列長度LAV。若平均隊列長度小于最小門限THmin,則將新到達的數(shù)據(jù)報放入隊列進行排隊。若平均隊列長度超過最大門限THmax,則將新到達的數(shù)據(jù)報丟棄。若平均隊列長度在最小門限THmin和最大門限THmax之間,則按照某一概率p將新到達的數(shù)據(jù)報丟棄。RED將路由器的到達隊列劃分成為三個區(qū)域從隊首發(fā)送最小門限THmin最大門限THmin數(shù)據(jù)報到達平均隊列長度Lav排隊丟棄以概率p丟棄丟棄概率p與THmin和Thmax的關(guān)系最小門限THmin最大門限THmax平均隊列長度Lav數(shù)據(jù)報丟棄概率p1.00pmax當(dāng)LAVThmin時,丟棄概率p=0。當(dāng)LAVThmax時,丟棄概率p=1。當(dāng)THminLAVTHmax時,0p1。例如,按線性規(guī)律變化,從0變到pmax。瞬時隊列長度和平均隊列長度的區(qū)別隊列長度時間瞬時隊列長度平均隊列長度7.4.
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度存量房屋買賣合同(智能化升級版)4篇
- 2025年度科研實驗場地使用權(quán)出讓合同3篇
- 二零二五年度港口碼頭租賃及港口配套設(shè)施租賃及維修服務(wù)合同4篇
- 二零二五年度新能源產(chǎn)業(yè)場委托招聘服務(wù)合同4篇
- 2025年度綠色建筑門窗五金件集中采購合同3篇
- 二零二五年度酒店廚師團隊聘請與管理服務(wù)合同4篇
- 二零二五版拌和站工程進度與質(zhì)量監(jiān)管合同3篇
- 2025版商業(yè)街區(qū)門頭廣告牌設(shè)計、施工及后期保養(yǎng)合同3篇
- 2025年度園林景觀苗木養(yǎng)護與更新合同3篇
- 2025年度企業(yè)間商品居間合同糾紛上訴狀4篇
- 2024版智慧電力解決方案(智能電網(wǎng)解決方案)
- 公司SWOT分析表模板
- 小學(xué)預(yù)防流行性感冒應(yīng)急預(yù)案
- 肺癌術(shù)后出血的觀察及護理
- 聲紋識別簡介
- 生物醫(yī)藥大數(shù)據(jù)分析平臺建設(shè)-第1篇
- 基于Android的天氣預(yù)報系統(tǒng)的設(shè)計與實現(xiàn)
- 沖鋒舟駕駛培訓(xùn)課件
- 美術(shù)家協(xié)會會員申請表
- 聚合收款服務(wù)流程
- 中石化浙江石油分公司中石化溫州靈昆油庫及配套工程項目環(huán)境影響報告書
評論
0/150
提交評論