![計(jì)算機(jī)運(yùn)輸層_第1頁(yè)](http://file4.renrendoc.com/view/15035f1d53f5cc9ceea8c6c6a24745fb/15035f1d53f5cc9ceea8c6c6a24745fb1.gif)
![計(jì)算機(jī)運(yùn)輸層_第2頁(yè)](http://file4.renrendoc.com/view/15035f1d53f5cc9ceea8c6c6a24745fb/15035f1d53f5cc9ceea8c6c6a24745fb2.gif)
![計(jì)算機(jī)運(yùn)輸層_第3頁(yè)](http://file4.renrendoc.com/view/15035f1d53f5cc9ceea8c6c6a24745fb/15035f1d53f5cc9ceea8c6c6a24745fb3.gif)
![計(jì)算機(jī)運(yùn)輸層_第4頁(yè)](http://file4.renrendoc.com/view/15035f1d53f5cc9ceea8c6c6a24745fb/15035f1d53f5cc9ceea8c6c6a24745fb4.gif)
![計(jì)算機(jī)運(yùn)輸層_第5頁(yè)](http://file4.renrendoc.com/view/15035f1d53f5cc9ceea8c6c6a24745fb/15035f1d53f5cc9ceea8c6c6a24745fb5.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章運(yùn)輸層5.1運(yùn)輸層協(xié)議概述
5.1.1進(jìn)程之間的通信從通信和信息處理的角度看,運(yùn)輸層向它上面的應(yīng)用層提供通信服務(wù),它屬于面向通信部分的最高層,同時(shí)也是用戶(hù)功能中的最低層。當(dāng)網(wǎng)絡(luò)的邊緣部分中的兩個(gè)主機(jī)使用網(wǎng)絡(luò)的核心部分的功能進(jìn)行端到端的通信時(shí),只有位于網(wǎng)絡(luò)邊緣部分的主機(jī)的協(xié)議棧才有運(yùn)輸層,而網(wǎng)絡(luò)核心部分中的路由器在轉(zhuǎn)發(fā)分組時(shí)都只用到下三層的功能。5.1運(yùn)輸層協(xié)議概述
5.1.1進(jìn)程之間的通信從通信和信息處理的角度看,運(yùn)輸層向它上面的應(yīng)用層提供通信服務(wù),它屬于面向通信部分的最高層,同時(shí)也是用戶(hù)功能中的最低層。物理層網(wǎng)絡(luò)層運(yùn)輸層應(yīng)用層數(shù)據(jù)鏈路層面向信息處理面向通信用戶(hù)功能網(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)程之間的通信又稱(chēng)為端到端的通信。運(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)輸層之間并沒(méi)有一條水平方向的物理連接。運(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)輸層需要有兩種不同的運(yùn)輸協(xié)議,即面向連接的TCP和無(wú)連接的UDP。兩種不同的運(yùn)輸協(xié)議運(yùn)輸層向高層用戶(hù)屏蔽了下面網(wǎng)絡(luò)核心的細(xì)節(jié)(如網(wǎng)絡(luò)拓?fù)?、所采用的路由選擇協(xié)議等),它使應(yīng)用進(jìn)程看見(jiàn)的就是好像在兩個(gè)運(yùn)輸層實(shí)體之間有一條端到端的邏輯通信信道。當(dāng)運(yùn)輸層采用面向連接的TCP協(xié)議時(shí),盡管下面的網(wǎng)絡(luò)是不可靠的(只提供盡最大努力服務(wù)),但這種邏輯通信信道就相當(dāng)于一條全雙工的可靠信道。當(dāng)運(yùn)輸層采用無(wú)連接的UDP
協(xié)議時(shí),這種邏輯通信信道是一條不可靠信道。運(yùn)輸層向上提供可靠的和不可靠的邏輯通信信道?應(yīng)用層運(yùn)輸層發(fā)送進(jìn)程接收進(jìn)程接收進(jìn)程數(shù)據(jù)數(shù)據(jù)全雙工可靠信道數(shù)據(jù)數(shù)據(jù)使用TCP協(xié)議使用UDP協(xié)議不可靠信道發(fā)送進(jìn)程TCP/IP的運(yùn)輸層有兩個(gè)不同的協(xié)議:(1)用戶(hù)數(shù)據(jù)報(bào)協(xié)議UDP (UserDatagramProtocol)(2)傳輸控制協(xié)議TCP (TransmissionControlProtocol)5.1.2運(yùn)輸層的兩個(gè)主要協(xié)議運(yùn)輸層與其上下層之間的關(guān)系的OSI表示法運(yùn)輸實(shí)體運(yùn)輸實(shí)體運(yùn)輸協(xié)議運(yùn)輸層層接口運(yùn)輸服務(wù)用戶(hù)(應(yīng)用層實(shí)體)運(yùn)輸服務(wù)用戶(hù)(應(yīng)用層實(shí)體)層接口網(wǎng)絡(luò)層(或網(wǎng)際層)應(yīng)用層主機(jī)A主機(jī)B運(yùn)輸層服務(wù)訪問(wèn)點(diǎn)TSAP網(wǎng)絡(luò)層服務(wù)訪問(wèn)點(diǎn)NSAP兩個(gè)對(duì)等運(yùn)輸實(shí)體在通信時(shí)傳送的數(shù)據(jù)單位叫作運(yùn)輸協(xié)議數(shù)據(jù)單元TPDU(TransportProtocolDataUnit)。TCP傳送的數(shù)據(jù)單位協(xié)議是TCP報(bào)文段(segment)UDP傳送的數(shù)據(jù)單位協(xié)議是UDP報(bào)文或用戶(hù)數(shù)據(jù)報(bào)。TCP與UDPTCP/IP體系中的運(yùn)輸層協(xié)議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ù),因此不可避免地增加了許多的開(kāi)銷(xiāo)。這不僅使協(xié)議數(shù)據(jù)單元的首部增大很多,還要占用許多的處理機(jī)資源。5.1.3運(yùn)輸層的端口運(yùn)行在計(jì)算機(jī)中的進(jìn)程是用進(jìn)程標(biāo)識(shí)符來(lái)標(biāo)志的。運(yùn)行在應(yīng)用層的各種應(yīng)用進(jìn)程卻不應(yīng)當(dāng)讓計(jì)算機(jī)操作系統(tǒng)指派它的進(jìn)程標(biāo)識(shí)符。這是因?yàn)樵谝蛱鼐W(wǎng)上使用的計(jì)算機(jī)的操作系統(tǒng)種類(lèi)很多,而不同的操作系統(tǒng)又使用不同格式的進(jìn)程標(biāo)識(shí)符。為了使運(yùn)行不同操作系統(tǒng)的計(jì)算機(jī)的應(yīng)用進(jìn)程能夠互相通信,就必須用統(tǒng)一的方法對(duì)TCP/IP體系的應(yīng)用進(jìn)程進(jìn)行標(biāo)志。需要解決的問(wèn)題(P183)
由于進(jìn)程的創(chuàng)建和撤銷(xiāo)都是動(dòng)態(tài)的,發(fā)送方幾乎無(wú)法識(shí)別其它機(jī)器上的進(jìn)程。有時(shí)我們會(huì)改換接收?qǐng)?bào)文的進(jìn)程,但并不需要通知所有發(fā)送方。我們往往需要利用目的主機(jī)提供的功能來(lái)識(shí)別終點(diǎn),而不需要知道實(shí)現(xiàn)這個(gè)功能的進(jìn)程。端口號(hào)(protocolportnumber)
簡(jiǎn)稱(chēng)為端口(port)解決這個(gè)問(wèn)題的方法就是在運(yùn)輸層使用協(xié)議端口號(hào)(protocolportnumber),或通常簡(jiǎn)稱(chēng)為端口(port)。雖然通信的終點(diǎn)是應(yīng)用進(jìn)程,但我們可以把端口想象是通信的終點(diǎn),因?yàn)槲覀冎灰岩獋魉偷膱?bào)文交到目的主機(jī)的某一個(gè)合適的目的端口,剩下的工作(即最后交付目的進(jìn)程)就由TCP來(lái)完成。端口的概念端口就是運(yùn)輸層服務(wù)訪問(wèn)點(diǎn)TSAP。端口的作用就是讓?xiě)?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用戶(hù)數(shù)據(jù)報(bào)應(yīng)用進(jìn)程TCP復(fù)用IP復(fù)用UDP復(fù)用TCP報(bào)文段UDP用戶(hù)數(shù)據(jù)報(bào)應(yīng)用進(jìn)程端口端口TCP分用UDP分用IP分用IP數(shù)據(jù)報(bào)IP數(shù)據(jù)報(bào)發(fā)送方接收方軟件端口與硬件端口在協(xié)議棧層間的抽象的協(xié)議端口是軟件端口。路由器或交換機(jī)上的端口是硬件端口。硬件端口是不同硬件設(shè)備進(jìn)行交互的接口,而軟件端口是應(yīng)用層的各種協(xié)議進(jìn)程與運(yùn)輸實(shí)體進(jì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)是沒(méi)有聯(lián)系的。三類(lèi)端口熟知端口,數(shù)值一般為0~1023。登記端口號(hào),數(shù)值為1024~49151,為沒(méi)有熟知端口號(hào)的應(yīng)用程序使用的。使用這個(gè)范圍的端口號(hào)必須在IANA登記,以防止重復(fù)??蛻?hù)端口號(hào)或短暫端口號(hào),數(shù)值為49152~65535,留給客戶(hù)進(jìn)程選擇暫時(shí)使用。當(dāng)服務(wù)器進(jìn)程收到客戶(hù)進(jìn)程的報(bào)文時(shí),就知道了客戶(hù)進(jìn)程所使用的動(dòng)態(tài)端口號(hào)。通信結(jié)束后,這個(gè)端口號(hào)可供其它客戶(hù)進(jìn)程以后使用。端口號(hào)一些常見(jiàn)的“眾所周知的”端口號(hào):FTPSMTPTFTPDNSTelnetSNMP2123255369161TCPUDP應(yīng)用層傳輸層端口號(hào):<255:公共應(yīng)用255-1023:公司>1023:未規(guī)定20保留的TCP端口(1)保留的TCP端口(2)端口通過(guò)用報(bào)文隊(duì)列來(lái)實(shí)現(xiàn)UDP端口51000UDP端口69出隊(duì)列入隊(duì)列出隊(duì)列入隊(duì)列TFTP服務(wù)器TFTP客戶(hù)UDP用戶(hù)數(shù)據(jù)報(bào)應(yīng)用層運(yùn)輸層5.2用戶(hù)數(shù)據(jù)報(bào)協(xié)議UDP
5.2.1UDP概述
UDP只在IP的數(shù)據(jù)報(bào)服務(wù)之上增加了很少一點(diǎn)的功能,即端口的功能和差錯(cuò)檢測(cè)的功能。雖然UDP用戶(hù)數(shù)據(jù)報(bào)只能提供不可靠的交付,但UDP在某些方面有其特殊的優(yōu)點(diǎn)。UDP的主要特點(diǎn)UDP是無(wú)連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接。UDP使用盡最大努力交付,即不保證可靠交付,同時(shí)也不使用擁塞控制。UDP是面向報(bào)文的。UDP沒(méi)有擁塞控制,很適合多媒體通信的要求。UDP支持一對(duì)一、一對(duì)多、多對(duì)一和多對(duì)多的交互通信。UDP的首部開(kāi)銷(xiāo)小,只有8個(gè)字節(jié)。面向報(bào)文的UDP發(fā)送方UDP對(duì)應(yīng)用程序交下來(lái)的報(bào)文,在添加首部后就向下交付IP層。UDP對(duì)應(yīng)用層交下來(lái)的報(bào)文,既不合并,也不拆分,而是保留這些報(bào)文的邊界。應(yīng)用層交給UDP多長(zhǎng)的報(bào)文,UDP就照樣發(fā)送,即一次發(fā)送一個(gè)報(bào)文。接收方UDP對(duì)IP層交上來(lái)的UDP用戶(hù)數(shù)據(jù)報(bào),在去除首部后就原封不動(dòng)地交付上層的應(yīng)用進(jìn)程,一次交付一個(gè)完整的報(bào)文。應(yīng)用程序必須選擇合適大小的報(bào)文。UDP是面向報(bào)文的IP數(shù)據(jù)報(bào)的數(shù)據(jù)部分IP首部IP層UDP首部UDP用戶(hù)數(shù)據(jù)報(bào)的數(shù)據(jù)部分運(yùn)輸層應(yīng)用層報(bào)文應(yīng)用層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用戶(hù)數(shù)據(jù)報(bào)UDP基于端口的分用IP層UDP數(shù)據(jù)報(bào)到達(dá)端口2端口3端口1UDP分用偽首部源端口目的端口長(zhǎng)度檢驗(yàn)和數(shù)據(jù)首部UDP長(zhǎng)度源IP地址目的IP地址017IP數(shù)據(jù)報(bào)字節(jié)44112122222字節(jié)發(fā)送在前數(shù)據(jù)首部UDP用戶(hù)數(shù)據(jù)報(bào)用戶(hù)數(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用戶(hù)數(shù)據(jù)報(bào)在計(jì)算檢驗(yàn)和時(shí),臨時(shí)把“偽首部”和UDP用戶(hù)數(shù)據(jù)報(bào)連接在一起。偽首部?jī)H僅是為了計(jì)算檢驗(yàn)和。計(jì)算UDP檢驗(yàn)和的例子1001100100010011→153.190000100001101000→8.1041010101100000011→171.30000111000001011→14.110000000000010001→0和170000000000001111→150000010000111111→10870000000000001101→130000000000001111→150000000000000000→0(檢驗(yàn)和)0101010001000101→數(shù)據(jù)0101001101010100→數(shù)據(jù)0100100101001110→數(shù)據(jù)0100011100000000→數(shù)據(jù)和0(填充)1001011011101101→求和得出的結(jié)果0110100100010010→檢驗(yàn)和04112字節(jié)偽首部8字節(jié)UDP首部7字節(jié)數(shù)據(jù)填充按二進(jìn)制反碼運(yùn)算求和將得出的結(jié)果求反碼全0171510871315全0數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)全0例題(P220:5-12)一個(gè)應(yīng)用程序用UDP,到IP層把數(shù)據(jù)報(bào)再劃分為4個(gè)數(shù)據(jù)報(bào)片發(fā)送出去,結(jié)果前兩個(gè)數(shù)據(jù)報(bào)片丟失,后兩個(gè)到達(dá)目的站。過(guò)了一段時(shí)間應(yīng)用程序重傳UDP,而IP層仍然劃分為4個(gè)數(shù)據(jù)報(bào)片來(lái)傳送。結(jié)果這次前兩個(gè)到達(dá)目的站而后兩個(gè)丟失。試問(wèn):在目的站能否將這兩次傳輸?shù)?個(gè)數(shù)據(jù)報(bào)片組裝成完整的數(shù)據(jù)報(bào)?假定目的站第一次收到的后兩個(gè)數(shù)據(jù)報(bào)片仍然保存在目的站的緩存中。例題答:不行。重傳時(shí),IP數(shù)據(jù)報(bào)的標(biāo)識(shí)字段會(huì)有另一個(gè)標(biāo)識(shí)符。僅當(dāng)標(biāo)識(shí)符相同的IP數(shù)據(jù)報(bào)片才能組裝成一個(gè)IP數(shù)據(jù)報(bào)。前兩個(gè)IP數(shù)據(jù)報(bào)片的標(biāo)識(shí)符與后兩個(gè)IP數(shù)據(jù)報(bào)片的標(biāo)識(shí)符不同,因此不能組裝成一個(gè)IP數(shù)據(jù)報(bào)。5.3傳輸控制協(xié)議TCP概述
5.3.1TCP最主要的特點(diǎn)
TCP是面向連接的運(yùn)輸層協(xié)議。每一條TCP連接只能有兩個(gè)端點(diǎn)(endpoint),每一條TCP連接只能是點(diǎn)對(duì)點(diǎn)的(一對(duì)一)。TCP提供可靠交付的服務(wù)。TCP提供全雙工通信。面向字節(jié)流。768HTCP面向流的概念發(fā)送TCP報(bào)文段發(fā)送方接收方把字節(jié)寫(xiě)入發(fā)送緩存從接收緩存讀取字節(jié)應(yīng)用進(jìn)程應(yīng)用進(jìn)程1230181716151419202145131211H109H加上TCP首部構(gòu)成TCP報(bào)文段TCPTCP字節(jié)流字節(jié)流H表示TCP報(bào)文段的首部x表示序號(hào)為x的數(shù)據(jù)字節(jié)TCP連接應(yīng)當(dāng)注意TCP連接是一條虛連接而不是一條真正的物理連接。TCP對(duì)應(yīng)用進(jìn)程一次把多長(zhǎng)的報(bào)文發(fā)送到TCP的緩存中是不關(guān)心的。TCP根據(jù)對(duì)方給出的窗口值和當(dāng)前網(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ā)送出去。5.3.2TCP的連接TCP把連接作為最基本的抽象。每一條TCP連接有兩個(gè)端點(diǎn)。TCP連接的端點(diǎn)不是主機(jī),不是主機(jī)的IP地址,不是應(yīng)用進(jìn)程,也不是運(yùn)輸層的協(xié)議端口。TCP連接的端點(diǎn)叫做套接字(socket)或插口。端口號(hào)拼接到(contatenatedwith)IP地址即構(gòu)成了套接字。插口(socket)TCP使用“連接”(而不僅僅是“端口”)作為最基本的抽象,同時(shí)將TCP連接的端點(diǎn)稱(chēng)為插口(socket),或套接字、套接口。插口和端口、IP地址的關(guān)系是:IP地址3端口號(hào)15003,1500插口(socket)套接字(socket)套接字socket=(IP地址:端口號(hào))(5-1)每一條TCP連接唯一地被通信兩端的兩個(gè)端點(diǎn)(即兩個(gè)套接字)所確定。即:TCP連接::={socket1,socket2}={(IP1:port1),(IP2:port2)}(5-2)同一個(gè)名詞socket
有多種不同的意思應(yīng)用編程接口
API
稱(chēng)為socketAPI,簡(jiǎn)稱(chēng)為socket。socketAPI中使用的一個(gè)函數(shù)名也叫作socket。調(diào)用socket函數(shù)的端點(diǎn)稱(chēng)為socket。調(diào)用socket函數(shù)時(shí)其返回值稱(chēng)為socket描述符,可簡(jiǎn)稱(chēng)為socket。在操作系統(tǒng)內(nèi)核中連網(wǎng)協(xié)議的Berkeley實(shí)現(xiàn),稱(chēng)為socket實(shí)現(xiàn)。SOCKET概念TCP和UDP的SOCKET機(jī)制的工作過(guò)程:
TCPSERVERSERVERCLIENTCLIENTUDP申請(qǐng)SOCKET申請(qǐng)SOCKET申請(qǐng)SOCKET申請(qǐng)SOCKETLISTENCALLCONNECTACCEPTSENDRECEIVESENDTORECVFROMSENDTORECVFROM問(wèn)題的引入Q:就TCP/IP的傳輸層,為什么在TCP之外,還要引入U(xiǎn)DP?A:若采用面向連接的TCP服務(wù),則必須為類(lèi)似虛電路連接的建立、維護(hù)和拆除的付出必需的開(kāi)銷(xiāo)。對(duì)于一次傳輸要交換大量報(bào)文的情形,如文件傳輸、遠(yuǎn)程登錄等應(yīng)用,這種開(kāi)銷(xiāo)是值得的。但是,對(duì)于一次性傳輸數(shù)據(jù)量較小的網(wǎng)絡(luò)應(yīng)用如SNMP、DNS應(yīng)用數(shù)據(jù)的傳輸,或?qū)煽啃砸蟛桓叩臄?shù)據(jù)傳輸如實(shí)時(shí)語(yǔ)音視頻傳送。這種開(kāi)銷(xiāo)就顯得不那么必要或合算。5.4可靠傳輸?shù)墓ぷ髟?/p>
5.4.1停止等待協(xié)議
(a)無(wú)差錯(cuò)情況A發(fā)送M1確認(rèn)M1B發(fā)送M2發(fā)送M3確認(rèn)M2確認(rèn)M3A發(fā)送M1B超時(shí)重傳M1發(fā)送M2確認(rèn)M1丟棄有差錯(cuò)的報(bào)文(b)超時(shí)重傳tttt停止等待協(xié)議算法流程
在發(fā)送結(jié)點(diǎn)
(1)從主機(jī)取一個(gè)數(shù)據(jù)幀,送交發(fā)送緩存。(2)V(S)←0。{將發(fā)送端狀態(tài)變量V(S)置為0}(3)N(S)←V(S)。{將V(S)的值寫(xiě)入數(shù)據(jù)幀中的發(fā)送序號(hào)N(S)}(4)將發(fā)送緩存中的數(shù)據(jù)幀發(fā)送出去。{該幀的副本仍保留在發(fā)送緩存之中}(5)設(shè)置超時(shí)計(jì)時(shí)器。{選擇適當(dāng)?shù)某瑫r(shí)重傳時(shí)間tout}(6)等待。{等待以下(7)和(8)這兩個(gè)事件中最先出現(xiàn)的一個(gè)}(7)收到確認(rèn)幀ACKn,{這里隱含的表示已經(jīng)通過(guò)CRC的硬件差錯(cuò)檢測(cè)}若n=1–V(S),則:{已發(fā)送的數(shù)據(jù)幀被接收方確認(rèn)}從主機(jī)取一個(gè)新的數(shù)據(jù)幀,放入發(fā)送緩存;V(S)←[1V(S)];{更新發(fā)送狀態(tài)變量,使用下一個(gè)序號(hào)} 轉(zhuǎn)到(3)。否則,丟棄這個(gè)確認(rèn)幀,轉(zhuǎn)到(6)。{這表明已發(fā)送的數(shù)據(jù)幀沒(méi)有被接收方確認(rèn)}(8)若超時(shí)計(jì)時(shí)器時(shí)間到,則轉(zhuǎn)到(4)。{重傳數(shù)據(jù)幀}停止等待協(xié)議算法流程
在接收結(jié)點(diǎn)
(1)V(R)←0。{接收狀態(tài)變量初始化,其數(shù)值等于欲接收的數(shù)據(jù)幀的發(fā)送序號(hào)}(2)等待。(3)收到一個(gè)數(shù)據(jù)幀;{這里隱含的表示已經(jīng)通過(guò)CRC的硬件差錯(cuò)檢測(cè)}若N(S)=V(R),則執(zhí)行(4);{收到正確序號(hào)的數(shù)據(jù)幀}否則丟棄此數(shù)據(jù)幀,然后轉(zhuǎn)到(6)。{丟棄的幀就是重復(fù)幀}(4)將收到的數(shù)據(jù)幀中的數(shù)據(jù)部分送交上層軟件,也就是數(shù)據(jù)鏈路層模型中的主機(jī)。(5)V(R)←[1V(R)]。{更新接收狀態(tài)變量,準(zhǔn)備接收下一個(gè)數(shù)據(jù)幀}(6)n←V(R);發(fā)送確認(rèn)幀ACKn,轉(zhuǎn)到(2)。{期望接到n號(hào)數(shù)據(jù)幀,在它之前的幀收到了}請(qǐng)注意在發(fā)送完一個(gè)分組后,必須暫時(shí)保留已發(fā)送的分組的副本。分組和確認(rèn)分組都必須進(jìn)行編號(hào)。超時(shí)計(jì)時(shí)器的重傳時(shí)間應(yīng)當(dāng)比數(shù)據(jù)在分組傳輸?shù)钠骄禃r(shí)間更長(zhǎng)一些。確認(rèn)丟失和確認(rèn)遲到A發(fā)送M1B超時(shí)重傳M1發(fā)送M2丟棄重復(fù)的M1重傳確認(rèn)M1(a)確認(rèn)丟失確認(rèn)M1A發(fā)送M1B超時(shí)重傳M1發(fā)送M2丟棄重復(fù)的M1重傳確認(rèn)M1(b)確認(rèn)遲到確認(rèn)M1收下遲到的確認(rèn)但什么也不做tttt可靠通信的實(shí)現(xiàn)使用上述的確認(rèn)和重傳機(jī)制,我們就可以在不可靠的傳輸網(wǎng)絡(luò)上實(shí)現(xiàn)可靠的通信。這種可靠傳輸協(xié)議常稱(chēng)為自動(dòng)重傳請(qǐng)求ARQ(AutomaticRepeatreQuest)。ARQ表明重傳的請(qǐng)求是自動(dòng)進(jìn)行的。接收方不需要專(zhuān)門(mén)發(fā)送請(qǐng)求、請(qǐng)求發(fā)送方重傳某個(gè)出錯(cuò)的分組。例題(P220:5-17)在停止等待協(xié)議中,如果收到重復(fù)的報(bào)文段時(shí)不予理睬(即悄悄地丟棄它而其它什么也沒(méi)做)是否可行?試舉出具體的例子說(shuō)明理由。例題A發(fā)送M1B超時(shí)重傳M1丟棄重復(fù)的M1不重傳確認(rèn)M1收到重復(fù)幀不確認(rèn),相當(dāng)于確認(rèn)丟失
確認(rèn)M1tt信道利用率停止等待協(xié)議的優(yōu)點(diǎn)是簡(jiǎn)單,但缺點(diǎn)是信道利用率太低。TDRTTATD+RTT+TAB分組確認(rèn)tt分組確認(rèn)信道的利用率U
(5-3)流水線傳輸發(fā)送方可連續(xù)發(fā)送多個(gè)分組,不必每發(fā)完一個(gè)分組就停頓下來(lái)等待對(duì)方的確認(rèn)。由于信道上一直有數(shù)據(jù)不間斷地傳送,這種傳輸方式可獲得很高的信道利用率。B分組ttAACK5.4.2連續(xù)ARQ協(xié)議123456789101112(a)發(fā)送方維持發(fā)送窗口(發(fā)送窗口是5)發(fā)送窗口(b)收到一個(gè)確認(rèn)后發(fā)送窗口向前滑動(dòng)向前123456789101112發(fā)送窗口01234567012發(fā)送窗口WT不允許發(fā)送這些幀允許發(fā)送5個(gè)幀(a)01234567012不允許發(fā)送這些幀還允許發(fā)送4個(gè)幀WT已發(fā)送(b)01234567012不允許發(fā)送這些幀WT已發(fā)送(c)01234567012不允許發(fā)送這些幀還允許發(fā)送3個(gè)幀WT已發(fā)送已發(fā)送并已收到確認(rèn)(d)累積確認(rèn)接收方一般采用累積確認(rèn)的方式。即不必對(duì)收到的分組逐個(gè)發(fā)送確認(rèn),而是對(duì)按序到達(dá)的最后一個(gè)分組發(fā)送確認(rèn),這樣就表示:到這個(gè)分組為止的所有分組都已正確收到了。累積確認(rèn)有的優(yōu)點(diǎn)是:容易實(shí)現(xiàn),即使確認(rèn)丟失也不必重傳。缺點(diǎn)是:不能向發(fā)送方反映出接收方已經(jīng)正確收到的所有分組的信息。Go-back-N(回退N)如果發(fā)送方發(fā)送了前5個(gè)分組,而中間的第3個(gè)分組丟失了。這時(shí)接收方只能對(duì)前兩個(gè)分組發(fā)出確認(rèn)。發(fā)送方無(wú)法知道后面三個(gè)分組的下落,而只好把后面的三個(gè)分組都再重傳一次。這就叫做Go-back-N(回退N),表示需要再退回來(lái)重傳已發(fā)送過(guò)的N個(gè)分組??梢?jiàn)當(dāng)通信線路質(zhì)量不好時(shí),連續(xù)ARQ協(xié)議會(huì)帶來(lái)負(fù)面的影響。連續(xù)ARQ協(xié)議的工作原理DATA0DATA1DATA2DATA3DATA4DATA5重傳DATA2重傳DATA3ACK1ACK2ACK1確認(rèn)DATA0ACK2確認(rèn)DATA1DATA2出錯(cuò),丟棄DATA3不按序,丟棄,重傳ACK2DATA4不按序,丟棄,重傳ACK2DATA5不按序,丟棄,重傳ACK2ACK3ACK3確認(rèn)DATA2ACK4確認(rèn)DATA3ACK4重傳DATA5重傳DATA4超時(shí)重傳時(shí)間ABtout送交主機(jī)送交主機(jī)…??ACK2ACK2ACK2例題(P221:5-20)
在連續(xù)ARQ協(xié)議中,若發(fā)送窗口為7,則發(fā)送端在開(kāi)始時(shí)可連續(xù)發(fā)送7個(gè)數(shù)據(jù)幀。因此,在每一個(gè)幀發(fā)出后,都要設(shè)置一個(gè)超時(shí)計(jì)時(shí)器?,F(xiàn)在計(jì)算機(jī)里只有一個(gè)硬時(shí)鐘。設(shè)這7個(gè)數(shù)據(jù)幀發(fā)出的時(shí)間分別為t0,t1,t2,…,t6,且tout超時(shí)重傳時(shí)間一樣大。試問(wèn)如何實(shí)現(xiàn)7個(gè)超時(shí)計(jì)時(shí)器(這叫軟時(shí)鐘法)?例題答:用相對(duì)發(fā)送時(shí)間實(shí)現(xiàn)一個(gè)鏈表:實(shí)時(shí)時(shí)鐘t00t1-t01t2-t12指向下一分組分組的序號(hào)分組發(fā)送的相對(duì)時(shí)間TCP可靠通信的具體實(shí)現(xiàn)TCP連接的每一端都必須設(shè)有兩個(gè)窗口——一個(gè)發(fā)送窗口和一個(gè)接收窗口。TCP的可靠傳輸機(jī)制用字節(jié)的序號(hào)進(jìn)行控制。TCP所有的確認(rèn)都是基于序號(hào)而不是基于報(bào)文段。TCP兩端的四個(gè)窗口經(jīng)常處于動(dòng)態(tài)變化之中。TCP連接的往返時(shí)間RTT也不是固定不變的。需要使用特定的算法估算較為合理的重傳時(shí)間。發(fā)送窗口的最大值當(dāng)用n個(gè)比特進(jìn)行編號(hào)時(shí),若接收窗口的大小為1,則只有在發(fā)送窗口的大小WT
2n1時(shí),連續(xù)ARQ協(xié)議才能正確運(yùn)行。例如,當(dāng)采用3bit編碼時(shí),發(fā)送窗口的最大值是7而不是8。01234567012發(fā)送窗口WT(a)123456712WT(b)0001234567012發(fā)送窗口WT(c)例題(P221:5-21)
假定使用連續(xù)ARQ協(xié)議,發(fā)送窗口大小是3,而序列范圍[0,15],而傳輸媒體保證在接收方能夠按序收到分組。在某時(shí)刻,接收方,下一個(gè)期望收到序號(hào)是5。試問(wèn):(1)在發(fā)送方的發(fā)送窗口中可能有出現(xiàn)的序號(hào)組合有哪幾種?(2)接收方已經(jīng)發(fā)送出去的、但在網(wǎng)絡(luò)中(即還未到達(dá)發(fā)送方)的確認(rèn)分組可能有哪些?說(shuō)明這些確認(rèn)分組是用來(lái)確認(rèn)哪些序號(hào)的分組。例題答:(1)題意表明序號(hào)到4為止的分組都已收到。如果按照最正常的情況,網(wǎng)絡(luò)傳輸沒(méi)有出錯(cuò),則發(fā)送窗口的范圍是[2,4]。
如果按照最差的情況,發(fā)送方序號(hào)為5的分組傳輸出錯(cuò),即使后續(xù)分組傳輸正確,接收方因?yàn)橐葱蚪邮?,所以要重?fù)發(fā)送序號(hào)為5的確認(rèn),這時(shí)發(fā)送窗口應(yīng)為[5,7]。以上為兩種極端情況,因此發(fā)送窗口可以是[2,4],[3,5],[4,6],[5,7]中的任何一個(gè)。例題答:(2)接收方期望收到序號(hào)5的分組,說(shuō)明序號(hào)為2,3,4的分組都已收到,并且發(fā)送了確認(rèn)。對(duì)序號(hào)為1的分組的確認(rèn)肯定被發(fā)送方收到了,否則發(fā)送方不可能發(fā)送4號(hào)分組??梢?jiàn),對(duì)序號(hào)為2,3,4的分組的確認(rèn)有可能仍滯留在網(wǎng)絡(luò)中,為ACK3~5。這些確認(rèn)是用來(lái)確認(rèn)序號(hào)為2,3,4的分組。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ā)送在前5.5TCP報(bào)文段的首部格式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)。例題(P221:5-28)
主機(jī)A向主機(jī)B發(fā)送TCP報(bào)文段,首部中的源端口是m而目的端口是n。當(dāng)B向A發(fā)送回信時(shí),其TCP報(bào)文段的首部中源端口和目的端口分別是什么?答:回信TCP報(bào)文段的首部中源端口為n,目的端口為m。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ù)偏移(即首部長(zhǎng)度)——占4位,它指出TCP報(bào)文段的數(shù)據(jù)起始處距離TCP報(bào)文段的起始處有多遠(yuǎn)?!皵?shù)據(jù)偏移”的單位是32bit位(以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)URG1時(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)ACK1時(shí)確認(rèn)號(hào)字段才有效。當(dāng)ACK0時(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è)緩存都填滿(mǎn)了后再向上交付。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充復(fù)位RST(ReSeT)——當(dāng)RST1時(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——同步SYN=1表示這是一個(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(FINis)——用來(lái)釋放一個(gè)連接。FIN1表明此報(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ì)方設(shè)置發(fā)送窗口的依據(jù),單位為字節(jié)。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é)(緊急數(shù)據(jù)放在本報(bào)文段數(shù)據(jù)的最前面)。
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。MSS告訴對(duì)方TCP:“我的緩存所能接收的報(bào)文段的數(shù)據(jù)字段的最大長(zhǎng)度是MSS個(gè)字節(jié)?!盡SS(MaximumSegmentSize)是TCP報(bào)文段中的數(shù)據(jù)字段的最大長(zhǎng)度。數(shù)據(jù)字段加上TCP首部才等于整個(gè)的TCP報(bào)文段。其它選項(xiàng)窗口擴(kuò)大選項(xiàng)——占3字節(jié),其中有一個(gè)字節(jié)表示移位值S。新的窗口值等于TCP首部中的窗口位數(shù)增大到(16+S),相當(dāng)于把窗口值向左移動(dòng)S位后獲得實(shí)際的窗口大小。時(shí)間戳選項(xiàng)——占10字節(jié),其中最主要的字段時(shí)間戳值字段(4字節(jié))和時(shí)間戳回送回答字段(4字節(jié))。選擇確認(rèn)選項(xiàng)——在后面的5.6.3節(jié)介紹。例題(P221:5-22)
主機(jī)A向主機(jī)B發(fā)送一個(gè)很長(zhǎng)的文件,其長(zhǎng)度為L(zhǎng)字節(jié)。假定TCP使用的MSS有1460字節(jié)。(1) 在TCP的序號(hào)不重復(fù)使用的條件下,L的最大值是多少?(2) 假定使用上面計(jì)算出文件長(zhǎng)度,而運(yùn)輸層、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層所使用的首部開(kāi)銷(xiāo)共66字節(jié),鏈路的數(shù)據(jù)率為10Mb/s,試求這個(gè)文件所需的最短發(fā)送時(shí)間。例題主機(jī)A向主機(jī)B發(fā)送一個(gè)很長(zhǎng)的文件,其長(zhǎng)度為L(zhǎng)字節(jié)。假定TCP使用的MSS有1460字節(jié)。(1)在TCP的序號(hào)不重復(fù)使用的條件下,L的最大值是多少?答:L的最大值是232=4294967296字節(jié)=4GB,G=230。(P193)例題(2) 假定使用上面計(jì)算出文件長(zhǎng)度,而運(yùn)輸層、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層所使用的首部開(kāi)銷(xiāo)共66字節(jié),鏈路的數(shù)據(jù)率為10Mb/s,試求這個(gè)文件所需的最短發(fā)送時(shí)間。答:假設(shè)每個(gè)TCP報(bào)文均滿(mǎn)載,則需報(bào)文數(shù):Q=4294967296/1460≈2941758個(gè),余616字節(jié),需要另一個(gè)TCP報(bào)文。由此可得總發(fā)送的數(shù)據(jù)量為:N=Q*(MSS+66)+(616+66)=4489123390字節(jié)=35912987120bits,故:文件所需的最短發(fā)送時(shí)間=35912987120/107=3591.298712秒≈59.85分≈1小時(shí)。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ù)倍。例題(P221:5-27)
一個(gè)TCP報(bào)文段的數(shù)據(jù)部分最多為多少個(gè)字節(jié)?為什么?如果用戶(hù)要傳送的數(shù)據(jù)的字節(jié)長(zhǎng)度超過(guò)TCP報(bào)文字段中的序號(hào)字段可能編出的最大序號(hào),問(wèn)還能否用TCP來(lái)傳送?例題答:65495字節(jié),此數(shù)據(jù)部分加上TCP首部的20字節(jié),再加上IP首部的20字節(jié),正好是IP數(shù)據(jù)報(bào)的最大長(zhǎng)度65535.(當(dāng)然,若IP首部包含了選擇,則IP首部長(zhǎng)度超過(guò)20字節(jié),這時(shí)TCP報(bào)文段的數(shù)據(jù)部分的長(zhǎng)度將小于65495字節(jié)。)數(shù)據(jù)的字節(jié)長(zhǎng)度超過(guò)TCP報(bào)文段中的序號(hào)字段可能編出的最大序號(hào),通過(guò)循環(huán)使用序號(hào),仍能用TCP來(lái)傳送。5.6TCP可靠傳輸?shù)膶?shí)現(xiàn)
5.6.1以字節(jié)為單位的滑動(dòng)窗口前移不允許發(fā)送已發(fā)送并收到確認(rèn)A的發(fā)送窗口=20允許發(fā)送的序號(hào)26272829303132333435363738394041424344454647484950515253545556B期望收到的序號(hào)前沿后沿前移收縮根據(jù)B給出的窗口值A(chǔ)構(gòu)造出自己的發(fā)送窗口TCP標(biāo)準(zhǔn)強(qiáng)烈不贊成發(fā)送窗口前沿向后收縮不允許發(fā)送已發(fā)送并收到確認(rèn)A的發(fā)送窗口位置不變?cè)试S發(fā)送但尚未發(fā)送262728293031323334353637383940414243444546474849505152535455已發(fā)送但未收到確認(rèn)56P1P2P3不允許接收已發(fā)送確認(rèn)并交付主機(jī)B的接收窗口允許接收26272829303132333435363738394041424344454647484950515253545556未按序收到可用窗口A發(fā)送了11個(gè)字節(jié)的數(shù)據(jù)P3–P1=A的發(fā)送窗口(又稱(chēng)為通知窗口)P2–P1=已發(fā)送但尚未收到確認(rèn)的字節(jié)數(shù)P3–P2=允許發(fā)送但尚未發(fā)送的字節(jié)數(shù)(又稱(chēng)為可用窗口)允許發(fā)送但尚未發(fā)送A的發(fā)送窗口向前滑動(dòng)262728293031323334353637383940414243444546474849505152535455已發(fā)送并收到確認(rèn)不允許發(fā)送已發(fā)送但未收到確認(rèn)56P1P2P3允許接收B的接收窗口向前滑動(dòng)262728293031323334353637383940414243444546474849505152535455已發(fā)送確認(rèn)并交付主機(jī)不允許接收56未按序收到A收到新的確認(rèn)號(hào),發(fā)送窗口向前滑動(dòng)先存下,等待缺少的數(shù)據(jù)的到達(dá)不允許發(fā)送已發(fā)送并收到確認(rèn)A的發(fā)送窗口已滿(mǎn),有效窗口為零262728293031323334353637383940414243444546474849505152535455已發(fā)送但未收到確認(rèn)56P1P2P3A的發(fā)送窗口內(nèi)的序號(hào)都已用完,但還沒(méi)有再收到確認(rèn),必須停止發(fā)送。發(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))發(fā)送緩存與接收緩存的作用發(fā)送緩存用來(lái)暫時(shí)存放:
發(fā)送應(yīng)用程序傳送給發(fā)送方TCP準(zhǔn)備發(fā)送的數(shù)據(jù);TCP已發(fā)送出但尚未收到確認(rèn)的數(shù)據(jù)。接收緩存用來(lái)暫時(shí)存放:
按序到達(dá)的、但尚未被接收應(yīng)用程序讀取的數(shù)據(jù);不按序到達(dá)的數(shù)據(jù)。
需要強(qiáng)調(diào)三點(diǎn)A的發(fā)送窗口并不總是和B的接收窗口一樣大(因?yàn)橛幸欢ǖ臅r(shí)間滯后)。TCP標(biāo)準(zhǔn)沒(méi)有規(guī)定對(duì)不按序到達(dá)的數(shù)據(jù)應(yīng)如何處理。通常是先臨時(shí)存放在接收窗口中,等到字節(jié)流中所缺少的字節(jié)收到后,再按序交付上層的應(yīng)用進(jìn)程。TCP要求接收方必須有累積確認(rèn)的功能,這樣可以減小傳輸開(kāi)銷(xiāo)。例題(P221:5-23)
主機(jī)A向主機(jī)B連續(xù)發(fā)送了兩個(gè)TCP報(bào)文段,其序號(hào)分別為70和100。試問(wèn):(1)第一個(gè)報(bào)文段攜帶了多少個(gè)字節(jié)的數(shù)據(jù)?(2)主機(jī)B收到第一個(gè)報(bào)文段后發(fā)回的確認(rèn)中的確認(rèn)號(hào)應(yīng)當(dāng)是多少?(3)如果主機(jī)B收到第二個(gè)報(bào)文段后發(fā)回的確認(rèn)中的確認(rèn)號(hào)是180,試問(wèn)A發(fā)送的第二個(gè)報(bào)文段中的數(shù)據(jù)有多少字節(jié)?(4)如果A發(fā)送的第一個(gè)報(bào)文段丟失了,但第二個(gè)報(bào)文段到達(dá)了B。B在第二個(gè)報(bào)文段到達(dá)后向A發(fā)送確認(rèn)。試問(wèn)這個(gè)確認(rèn)號(hào)應(yīng)為多少?例題答:(1)主機(jī)A向主機(jī)B連續(xù)發(fā)送了兩個(gè)TCP報(bào)文段,其序號(hào)分別為70和100,第一個(gè)報(bào)文段攜帶的數(shù)據(jù)序號(hào)從70到99,共30字節(jié)數(shù)據(jù)。(2)主機(jī)B收到第一個(gè)報(bào)文段后發(fā)回的確認(rèn)中的確認(rèn)號(hào)應(yīng)當(dāng)是100。(3)如果主機(jī)B收到第二個(gè)報(bào)文段后發(fā)回的確認(rèn)中的確認(rèn)號(hào)是180,則A發(fā)送的第二個(gè)報(bào)文段中的數(shù)據(jù)序號(hào)從100到179,共80字節(jié)。(4)如果A發(fā)送的第一個(gè)報(bào)文段丟失了,但第二個(gè)報(bào)文段到達(dá)了B。B在第二個(gè)報(bào)文段到達(dá)后向A發(fā)送確認(rèn)。這個(gè)確認(rèn)號(hào)應(yīng)為70。例題(P221:5-24)
一個(gè)TCP連接下面使用256kb/s的鏈路,其端到端時(shí)延為128ms。經(jīng)測(cè)試,發(fā)現(xiàn)吞吐量只有120kb/s。試問(wèn)發(fā)送窗口W是多少?(提示:可以有兩種答案,取決于接收端發(fā)出確認(rèn)的時(shí)機(jī))。兩種情況TDRTTATD+RTTB分組確認(rèn)tt分組確認(rèn)ARTTB分組確認(rèn)tt分組確認(rèn)情況一設(shè)窗口大小為Wbits,接收方在收到一窗口數(shù)據(jù)后才發(fā)送確認(rèn),發(fā)送方收到確認(rèn)后再發(fā)送下一窗口數(shù)據(jù),則:發(fā)送方將Wbits數(shù)據(jù)送到網(wǎng)絡(luò)上所需要時(shí)間T0=W/256kbps
發(fā)送方收到確認(rèn)后經(jīng)過(guò)時(shí)間T1=T0+128×10-3×2=T0+0.256s;在T1時(shí)間內(nèi)共傳送數(shù)據(jù)為:T1×120kbps,其大小應(yīng)為Wbits(發(fā)送方全部窗口中數(shù)據(jù)),所以:(W/256kbps+0.256s)×120kbps=W
由此解得W=57825.88bits7228字節(jié)。情況二接收方收到發(fā)送方發(fā)送來(lái)的很小報(bào)文后即發(fā)確認(rèn),此時(shí)發(fā)送方再次發(fā)送數(shù)據(jù),用時(shí)約為: 128ms×2=256ms,故發(fā)送窗口大小約為: 256×10-3s×120kb/s=30720bits=3840字節(jié)。例題(P222:5-31)
通信信道帶寬為1Gb/s,端到端時(shí)延為10ms。TCP的發(fā)送窗口為65535字節(jié)。試問(wèn):可能達(dá)到的最大吞吐量是多少?信道的利用率是多少?答:設(shè)報(bào)文長(zhǎng)度為L(zhǎng),信道帶寬為C,傳播時(shí)延為T(mén)d,則:最大吞吐量=L/(L/C+2×Td)=
524280/0.0205242825.5Mb/s信道利用率=(L/C)/(L/C+2×Td)=2.55%。
例題(P221:5-30)
設(shè)TCP使用的最大窗口為65535字節(jié),而傳輸信道不產(chǎn)生差錯(cuò),帶寬也不受限制。若報(bào)文段的平均往返時(shí)延為20ms,問(wèn)所能得到的最大吞吐量是多少?答:在發(fā)送時(shí)延可忽略的情況下,最大數(shù)據(jù)率=最大窗口×8/平均往返時(shí)間=26.214Mb/s。(沒(méi)有考慮IP和TCP首部)5.6.2超時(shí)重傳時(shí)間的選擇重傳機(jī)制是TCP中最重要和最復(fù)雜的問(wèn)題之一。TCP每發(fā)送一個(gè)報(bào)文段,就對(duì)這個(gè)報(bào)文段設(shè)置一次計(jì)時(shí)器。只要計(jì)時(shí)器設(shè)置的重傳時(shí)間到但還沒(méi)有收到確認(rèn),就要重傳這一報(bào)文段。往返時(shí)延的方差很大由于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)平均往返時(shí)間TCP保留了RTT的一個(gè)加權(quán)平均往返時(shí)間RTTS(這又稱(chēng)為平滑的往返時(shí)間)。第一次測(cè)量到RTT樣本時(shí),RTTS值就取為所測(cè)量到的RTT樣本值。以后每測(cè)量到一個(gè)新的RTT樣本,就按下式重新計(jì)算一次RTTS:
新的RTTS
(1
)(舊的RTTS)
(新的RTT樣本)(5-4)式中,0
1。若很接近于零,表示RTT值更新較慢。若選擇接近于1,則表示RTT值更新較快。RFC2988推薦的值為1/8,即0.125。已知第一次測(cè)得TCP的往返時(shí)延的當(dāng)前值是30ms?,F(xiàn)在收到了三個(gè)接連的確認(rèn)報(bào)文段,它們比相應(yīng)的數(shù)據(jù)報(bào)文段的發(fā)送時(shí)間分別滯后的時(shí)間是:26ms、32ms和24ms。設(shè)=0.1。試計(jì)算每一次的新的加權(quán)平均往返時(shí)間值RTTS。討論所得出的結(jié)果。例題(P222:5-34)
答:根據(jù)題意=0.1,RTTS(0)=30msRTTS(1)=(1-)RTTS(0)+26=29.6msRTTS(2)=(1-)RTTS(1)+32=29.84msRTTS(3)=(1-)RTTS(2)+24=29.256ms三次算出加權(quán)平均往返時(shí)間分別為29.6,29.84和29.256ms??梢钥闯?,RTT的樣本值變化多達(dá)20%時(shí),加權(quán)平均往返時(shí)間的變化卻很小。例題超時(shí)重傳時(shí)間RTO(RetransmissionTime-Out)
RTO應(yīng)略大于上面得出的加權(quán)平均往返時(shí)間RTTS。RFC2988建議使用下式計(jì)算RTO:RTORTTS+4RTTD(5-5)RTTD是RTT的偏差的加權(quán)平均值。RFC2988建議這樣計(jì)算RTTD。第一次測(cè)量時(shí),RTTD值取為測(cè)量到的RTT樣本值的一半。在以后的測(cè)量中,則使用下式計(jì)算加權(quán)平均的RTTD:新的RTTD=(1
)(舊的RTTD)+
RTTS
新的RTT樣本(5-6)是個(gè)小于1的系數(shù),其推薦值是1/4,即0.25。假定TCP在開(kāi)始建立連接時(shí),發(fā)送方設(shè)定超時(shí)重傳時(shí)間是RTO=6s。(1)當(dāng)發(fā)送方接到對(duì)方的連接確認(rèn)報(bào)文段時(shí),測(cè)量出RTT樣本值為1.5s。試計(jì)算現(xiàn)在的RTO值。(2)當(dāng)發(fā)送方發(fā)送數(shù)據(jù)報(bào)文段并接收到確認(rèn)時(shí),測(cè)量出RTT樣本值為2.5s。試計(jì)算現(xiàn)在的RTO值。例題(P222:5-33)
答:(1)據(jù)RFC2988建議,RTO=RTTS+4RTTD。其中RTTD是RTTS的偏差加權(quán)均值。初次測(cè)量時(shí),RTTD(1)=RTT(1)/2;后續(xù)測(cè)量中,RTTD(i)=(1-)RTTD(i-1)+
|RTTS-RTT(i)|
=1/4依題意,RTT(1)樣本值為1.5秒,則RTTS(1)=RTT(1)=1.5sRTTD(1)=RTT(1)/2=0.75sRTO(1)=RTTS(1)+4RTTD(1)=1.5+40.75=4.5(s)例題答:(2)RTT(2)=2.5RTTS(1)=1.5sRTTD(1)=0.75sRTTD(2)=(1-)
RTTD
(1)+
|RTTS
(1)-RTT(2)|=0.753/4+|1.5-2.5|/4=13/16RTO(2)=RTTs(1)+4RTTd(2)=1.5+413/16=4.75s例題往返時(shí)間RTT?往返時(shí)間的測(cè)量相當(dāng)復(fù)雜TCP報(bào)文段1沒(méi)有收到確認(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)?發(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)確。報(bào)文段每重傳一次,就把RTO增大一些:新的RTO
(舊的RTO)系數(shù)的典型值是2。當(dāng)不再發(fā)生報(bào)文段的重傳時(shí),才根據(jù)報(bào)文段的往返時(shí)延更新平均往返時(shí)延RTT和超時(shí)重傳時(shí)間RTO的數(shù)值。實(shí)踐證明,這種策略較為合理。修正的Karn算法5.6.3選擇確認(rèn)SACK
(SelectiveACK)
接收方收到了和前面的字節(jié)流不連續(xù)的兩個(gè)字節(jié)塊。如果這些字節(jié)的序號(hào)都在接收窗口之內(nèi),那么接收方就先收下這些數(shù)據(jù),但要把這些信息準(zhǔn)確地告訴發(fā)送方,使發(fā)送方不要再重復(fù)發(fā)送這些已收到的數(shù)據(jù)。110001501300035014500確認(rèn)號(hào)=1001L1=1501L2=3501R1=3001R1=4501接收到的字節(jié)流序號(hào)不連續(xù)……連續(xù)的字節(jié)流………第一個(gè)字節(jié)塊第二個(gè)字節(jié)塊和前后字節(jié)不連續(xù)的每一個(gè)字節(jié)塊都有兩個(gè)邊界:左邊界和右邊界。圖中用四個(gè)指針標(biāo)記這些邊界。第一個(gè)字節(jié)塊的左邊界L1=1501,但右邊界R1=3001。左邊界指出字節(jié)塊的第一個(gè)字節(jié)的序號(hào),但右邊界減1才是字節(jié)塊中的最后一個(gè)序號(hào)。第二個(gè)字節(jié)塊的左邊界L2=3501,而右邊界R2=4501。RFC2018的規(guī)定如果要使用選擇確認(rèn),那么在建立TCP連接時(shí),就要在TCP首部的選項(xiàng)中加上“允許SACK”的選項(xiàng),而雙方必須都事先商定好。如果使用選擇確認(rèn),那么原來(lái)首部中的“確認(rèn)號(hào)字段”的用法仍然不變。只是以后在TCP報(bào)文段的首部中都增加了SACK選項(xiàng),以便報(bào)告收到的不連續(xù)的字節(jié)塊的邊界。由于首部選項(xiàng)的長(zhǎng)度最多只有40字節(jié),而指明一個(gè)邊界就要用掉4字節(jié),因此在選項(xiàng)中最多只能指明4個(gè)字節(jié)塊的邊界信息。5.7TCP的流量控制
5.7.1利用滑動(dòng)窗口實(shí)現(xiàn)流量控制一般說(shuō)來(lái),我們總是希望數(shù)據(jù)傳輸?shù)酶煲恍5绻l(fā)送方把數(shù)據(jù)發(fā)送得過(guò)快,接收方就可能來(lái)不及接收,這就會(huì)造成數(shù)據(jù)的丟失。流量控制(flowcontrol)就是讓發(fā)送方的發(fā)送速率不要太快,既要讓接收方來(lái)得及接收,也不要使網(wǎng)絡(luò)發(fā)生擁塞。利用滑動(dòng)窗口機(jī)制可以很方便地在TCP連接上實(shí)現(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ā)送序號(hào)201至500共300字節(jié)A發(fā)送了序號(hào)101至200,還能發(fā)送200字節(jié)A發(fā)送了序號(hào)301至400,還能再發(fā)送100字節(jié)新數(shù)據(jù)A發(fā)送了序號(hào)1至100,還能發(fā)送300字節(jié)A發(fā)送了序號(hào)401至500,不能再發(fā)送新數(shù)據(jù)了A超時(shí)重傳舊的數(shù)據(jù),但不能發(fā)送新的數(shù)據(jù)允許A發(fā)送序號(hào)501至600共100字節(jié)A發(fā)送了序號(hào)501至600,不能再發(fā)送了不允許A再發(fā)送(到序號(hào)600為止的數(shù)據(jù)都收到了)丟失!流量控制舉例A向B發(fā)送數(shù)據(jù)。在連接建立時(shí),
B告訴A:“我的接收窗口rwnd=400(字節(jié))”。持續(xù)計(jì)時(shí)器
(persistencetimer)。TCP為每一個(gè)連接設(shè)有一個(gè)持續(xù)計(jì)時(shí)器。只要TCP連接的一方收到對(duì)方的零窗口通知,就啟動(dòng)持續(xù)計(jì)時(shí)器。若持續(xù)計(jì)時(shí)器設(shè)置的時(shí)間到期,就發(fā)送一個(gè)零窗口探測(cè)報(bào)文段(僅攜帶1字節(jié)的數(shù)據(jù)),而對(duì)方就在確認(rèn)這個(gè)探測(cè)報(bào)文段時(shí)給出了現(xiàn)在的窗口值。若窗口仍然是零,則收到這個(gè)報(bào)文段的一方就重新設(shè)置持續(xù)計(jì)時(shí)器。若窗口不是零,則死鎖的僵局就可以打破了。5.7.2必須考慮傳輸效率可以用不同的機(jī)制來(lái)控制TCP報(bào)文段的發(fā)送時(shí)機(jī):第一種機(jī)制是TCP維持一個(gè)變量,它等于最大報(bào)文段長(zhǎng)度MSS。只要緩存中存放的數(shù)據(jù)達(dá)到MSS字節(jié)時(shí),就組裝成一個(gè)TCP報(bào)文段發(fā)送出去。第二種機(jī)制是由發(fā)送方的應(yīng)用進(jìn)程指明要求發(fā)送報(bào)文段,即TCP支持的推送(push)操作。第三種機(jī)制是發(fā)送方的一個(gè)計(jì)時(shí)器期限到了,這時(shí)就把當(dāng)前已有的緩存數(shù)據(jù)裝入報(bào)文段(但長(zhǎng)度不能超過(guò)MSS)發(fā)送出去。5.8TCP的擁塞控制
5.8.1擁塞控制的一般原理在某段時(shí)間,若對(duì)網(wǎng)絡(luò)中某資源的需求超過(guò)了該資源所能提供的可用部分,網(wǎng)絡(luò)的性能就要變壞——產(chǎn)生擁塞(congestion)。出現(xiàn)資源擁塞的條件:對(duì)資源需求的總和>可用資源(5-7)若網(wǎng)絡(luò)中有許多資源同時(shí)產(chǎn)生擁塞,網(wǎng)絡(luò)的性能就要明顯變壞,整個(gè)網(wǎng)絡(luò)的吞吐量將隨輸入負(fù)荷的增大而下降。擁塞控制與流量控制的關(guān)系擁塞控制所要做的都有一個(gè)前提,就是網(wǎng)絡(luò)能夠承受現(xiàn)有的網(wǎng)絡(luò)負(fù)荷。擁塞控制是一個(gè)全局性的過(guò)程,涉及到所有的主機(jī)、所有的路由器,以及與降低網(wǎng)絡(luò)傳輸性能有關(guān)的所有因素。流量控制往往指在給定的發(fā)送端和接收端之間的點(diǎn)對(duì)點(diǎn)通信量的控制。流量控制所要做的就是抑制發(fā)送端發(fā)送數(shù)據(jù)的速率,以便使接收端來(lái)得及接收。擁塞控制所起的作用提供的負(fù)載吞吐量理想的擁塞控制實(shí)際的擁塞控制0死鎖(吞吐量=0)無(wú)擁塞控制擁塞輕度擁塞擁塞控制的一般原理?yè)砣刂剖呛茈y設(shè)計(jì)的,因?yàn)樗且粋€(gè)動(dòng)態(tài)的(而不是靜態(tài)的)問(wèn)題。當(dāng)前網(wǎng)絡(luò)正朝著高速化的方向發(fā)展,這很容易出現(xiàn)緩存不夠大而造成分組的丟失。但分組的丟失是網(wǎng)絡(luò)發(fā)生擁塞的征兆而不是原因。在許多情況下,甚至正是擁塞控制本身成為引起網(wǎng)絡(luò)性能惡化甚至發(fā)生死鎖的原因。這點(diǎn)應(yīng)特別引起重視。開(kāi)環(huán)控制和閉環(huán)控制開(kāi)環(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)題。5.8.2幾種擁塞控制方法
1.慢開(kāi)始和擁塞避免發(fā)送方維持一個(gè)叫做擁塞窗口cwnd(congestionwindow)的狀態(tài)變量。擁塞窗口的大小取決于網(wǎng)絡(luò)的擁塞程度,并且動(dòng)態(tài)地在變化。發(fā)送方讓自己的發(fā)送窗口等于擁塞窗口。如再考慮到接收方的接收能力,則發(fā)送窗口還可能小于擁塞窗口。發(fā)送方控制擁塞窗口的原則是:只要網(wǎng)絡(luò)沒(méi)有出現(xiàn)擁塞,擁塞窗口就再增大一些,以便把更多的分組發(fā)送出去。但只要網(wǎng)絡(luò)出現(xiàn)擁塞,擁塞窗口就減小一些,以減少注入到網(wǎng)絡(luò)中的分組數(shù)。慢開(kāi)始算法的原理在主機(jī)剛剛開(kāi)始發(fā)送報(bào)文段時(shí)可先設(shè)置擁塞窗口cwnd=1,即設(shè)置為一個(gè)最大報(bào)文段MSS的數(shù)值。在每收到一個(gè)對(duì)新的報(bào)文段的確認(rèn)后,將擁塞窗口加1,即增加一個(gè)MSS的數(shù)值。用這樣的方法逐步增大發(fā)送端的擁塞窗口cwnd,可以使分組注入到網(wǎng)絡(luò)的速率更加合理。發(fā)送方接收方
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Karrikinolide-3-ethyl-ester-生命科學(xué)試劑-MCE-7462
- Diammonium-phosphate-15N2-生命科學(xué)試劑-MCE-5147
- 1-3-Diheptadecanoyl-glycerol-生命科學(xué)試劑-MCE-9470
- 2025年度家居建材送貨司機(jī)合作協(xié)議書(shū)
- 二零二五年度綠色能源知識(shí)產(chǎn)權(quán)共享及資源利用合同
- 2025年度鋼筋加工企業(yè)節(jié)能減排合作協(xié)議
- 二零二五年度股權(quán)代持協(xié)議中的稅務(wù)影響與籌劃策略
- 2025年度藥店藥品質(zhì)量檢測(cè)員勞動(dòng)合同
- 2025年度養(yǎng)老產(chǎn)業(yè)股份轉(zhuǎn)讓協(xié)議書(shū)
- DB 3705T 50-2024設(shè)施蝴蝶蘭高效栽培技術(shù)規(guī)程
- 單側(cè)雙通道內(nèi)鏡下腰椎間盤(pán)摘除術(shù)手術(shù)護(hù)理配合1
- 2024年中考英語(yǔ)專(zhuān)項(xiàng)復(fù)習(xí):傳統(tǒng)文化的魅力(閱讀理解+完型填空+書(shū)面表達(dá))(含答案)
- 音樂(lè)培訓(xùn)合同與培訓(xùn)機(jī)構(gòu)的合作
- 醫(yī)學(xué)人體美學(xué)的測(cè)量和評(píng)估
- 初中物理杠桿、滑輪組、壓強(qiáng)、浮力綜合計(jì)算題(含答案)
- 2024年湖南生物機(jī)電職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案解析
- 2024年水利部長(zhǎng)江水利委員會(huì)事業(yè)單位招考聘用筆試參考題庫(kù)附帶答案詳解
- FZT 51006-2012 膜級(jí)聚己內(nèi)酰胺切片
- 2024年公安部直屬事業(yè)單位招聘筆試參考題庫(kù)附帶答案詳解
- 蘇教版五年級(jí)上冊(cè)數(shù)學(xué)脫式計(jì)算100題及答案
- 2024年全國(guó)初中數(shù)學(xué)聯(lián)賽試題及答案(修正版)
評(píng)論
0/150
提交評(píng)論