計(jì)算機(jī)網(wǎng)絡(luò)傳輸層_第1頁
計(jì)算機(jī)網(wǎng)絡(luò)傳輸層_第2頁
計(jì)算機(jī)網(wǎng)絡(luò)傳輸層_第3頁
計(jì)算機(jī)網(wǎng)絡(luò)傳輸層_第4頁
計(jì)算機(jī)網(wǎng)絡(luò)傳輸層_第5頁
已閱讀5頁,還剩147頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

傳輸層1主要內(nèi)容24.1傳輸層的基本概念傳輸層的作用傳輸層與應(yīng)用層、網(wǎng)絡(luò)層之間的關(guān)系網(wǎng)絡(luò)環(huán)境中應(yīng)用進(jìn)程標(biāo)識(shí)、端口、套接字多路復(fù)用與多路分解4.2傳輸層協(xié)議的特點(diǎn)與比較4.3UDP協(xié)議UDP協(xié)議的主要特點(diǎn)UDP報(bào)文格式UDP校驗(yàn)和的基本概念與計(jì)算示例UDP協(xié)議適用的范圍4.4TCP協(xié)議TCP協(xié)議的主要特點(diǎn)TCP報(bào)文格式可靠傳輸?shù)墓ぷ髟硗5仁?stop-and-wait)ARQ,回退N幀(go-back-n)ARQ,選擇性重傳(selectiverepeat)ARQTCP可靠通信的具體實(shí)現(xiàn)TCP序號(hào)和確認(rèn)號(hào)以字節(jié)為單位的滑動(dòng)窗口超時(shí)重傳時(shí)間的選擇選擇確認(rèn)SACKTCP的流量控制TCP的擁塞控制TCP的運(yùn)輸連接管理4.1傳輸層的基本概念4面向信息處理應(yīng)用層運(yùn)輸層網(wǎng)絡(luò)層應(yīng)用層數(shù)據(jù)鏈路層物理層面向通信用戶功能網(wǎng)絡(luò)功能是整個(gè)網(wǎng)絡(luò)體系結(jié)構(gòu)中關(guān)鍵的一層。只有主機(jī)的協(xié)議棧才有運(yùn)輸層。傳輸層的基本功能計(jì)算機(jī)網(wǎng)絡(luò)本質(zhì)的活動(dòng)是實(shí)現(xiàn)分布在不同地理位置的聯(lián)網(wǎng)主機(jī)之間的進(jìn)程通信,以實(shí)現(xiàn)各種網(wǎng)絡(luò)服務(wù)功能;傳輸層的主要作用就是要實(shí)現(xiàn)分布式進(jìn)程通信。傳輸層的作用主機(jī)A主機(jī)B路由器1路由器2AP1LAN2WANAP2AP3AP4LAN1IP協(xié)議的作用范圍運(yùn)輸層協(xié)議TCP和UDP的作用范圍IP協(xié)議能夠把源主機(jī)發(fā)送出的分組按照首部中的目的地址送交到目的主機(jī),那么為什么還需要再設(shè)置一個(gè)運(yùn)輸層呢?對(duì)IP層來說,通信的兩端是兩個(gè)主機(jī),是“兩個(gè)主機(jī)之間的通信”;計(jì)算機(jī)網(wǎng)絡(luò)的本質(zhì)是什么?主機(jī)間的進(jìn)程通信實(shí)現(xiàn)應(yīng)用層的各種網(wǎng)絡(luò)服務(wù)功能運(yùn)輸層的作用6如何理解端到端的通信?運(yùn)輸協(xié)議運(yùn)行在端系統(tǒng)中發(fā)送方:將應(yīng)用報(bào)文劃分為段,傳向網(wǎng)絡(luò)層接收方:將段重新裝配為報(bào)文,傳向應(yīng)用層“端-端”進(jìn)程通信服務(wù)的基本概念7運(yùn)輸層提供應(yīng)用進(jìn)程間的邏輯通信;真正進(jìn)行通信的實(shí)體是在主機(jī)中的進(jìn)程;通信的真正端點(diǎn)并不是主機(jī)而是主機(jī)中的進(jìn)程;;什么是端到端/endtoend(或進(jìn)程到進(jìn)程/processtoprocess)通信?什么是點(diǎn)到點(diǎn)通信?TCP就是用來建立這種端到端連接的一個(gè)具體協(xié)議。端到端是傳輸層的比如你要將數(shù)據(jù)從A傳送到E,中間可能經(jīng)過A->B->C->D->E,對(duì)于傳輸層來說他并不知道b,c,d的存在,他只認(rèn)為我的報(bào)文數(shù)據(jù)是從a直接到e的,這就叫做端到端??傊?,一句話概括就是端到端是由無數(shù)的點(diǎn)到點(diǎn)實(shí)現(xiàn)和組成的。好像是沿水平方向傳送數(shù)據(jù),但之間并沒有物理連接,是沿虛線方向經(jīng)過多個(gè)層次傳送的。傳輸層與應(yīng)用層、網(wǎng)絡(luò)層之間的關(guān)系傳輸層之間傳輸?shù)膱?bào)文稱為傳輸協(xié)議數(shù)據(jù)單元(TPDU);TPDU有效載荷是應(yīng)用層的數(shù)據(jù);傳輸層在有效載荷TPDU之前加上TPDU頭,就形成了TPDU傳輸協(xié)議數(shù)據(jù)單元。9運(yùn)輸層vs.網(wǎng)絡(luò)層網(wǎng)絡(luò)層:

主機(jī)間的邏輯通信運(yùn)輸層:

進(jìn)程間的邏輯通信依賴、強(qiáng)化網(wǎng)絡(luò)層服務(wù)家庭類比:12個(gè)孩子向12個(gè)孩子發(fā)信進(jìn)程=孩子應(yīng)用報(bào)文=信封中的信主機(jī)=家庭運(yùn)輸協(xié)議=Ann和Bill網(wǎng)絡(luò)層協(xié)議=郵政服務(wù)在Internet上,各個(gè)數(shù)據(jù)包根據(jù)其目的主機(jī)的ip地址來進(jìn)行互聯(lián)網(wǎng)絡(luò)中的路由選擇。可見,把數(shù)據(jù)包順利的傳送到目的主機(jī)是沒有問題的。問題出在哪里呢?我們知道大多數(shù)操作系統(tǒng)都支持多程序(進(jìn)程)同時(shí)運(yùn)行,那么目的主機(jī)應(yīng)該把接收到的數(shù)據(jù)包傳送給眾多同時(shí)運(yùn)行的進(jìn)程中的哪一個(gè)呢?顯然這個(gè)問題有待解決,端口機(jī)制便由此被引入進(jìn)來。端口是應(yīng)用層的各種協(xié)議進(jìn)程與運(yùn)輸實(shí)體進(jìn)行層間交互的一種地址。網(wǎng)絡(luò)環(huán)境中應(yīng)用進(jìn)程標(biāo)識(shí)11網(wǎng)絡(luò)上的計(jì)算機(jī)中運(yùn)行的任何網(wǎng)絡(luò)應(yīng)用程序都有一個(gè)或多個(gè)端口號(hào)與之對(duì)應(yīng)。傳輸層尋址是通過端口實(shí)現(xiàn)的端口號(hào):每個(gè)應(yīng)用層實(shí)體通過自己特定的端口和運(yùn)輸層實(shí)體進(jìn)行數(shù)據(jù)交換(即對(duì)運(yùn)輸層實(shí)體的復(fù)用/分用)。為了區(qū)分不同應(yīng)用層實(shí)體的端口,給每個(gè)應(yīng)用層實(shí)體的端口賦予了一個(gè)唯一的標(biāo)號(hào),即端口號(hào)。端口號(hào)是一個(gè)16位的地址,取0~65535之間的整數(shù)端口號(hào)分為兩類:熟知端口:被限制使用專門分配給一些最常用的服務(wù)器進(jìn)程:如HTTP、FTP、SMTP等。注冊(cè)端口號(hào):用戶根據(jù)需要可以在IANA注冊(cè)。(IANA(TheInternetAssignedNumbersAuthority,互聯(lián)網(wǎng)數(shù)字分配機(jī)構(gòu))是負(fù)責(zé)協(xié)調(diào)一些使Internet正常運(yùn)作的機(jī)構(gòu)。)臨時(shí)端口:隨時(shí)分配給請(qǐng)求通信的客戶進(jìn)程。端口號(hào)只具有本地意義,不同計(jì)算機(jī)中,相同的端口號(hào)是沒有關(guān)聯(lián)的。熟知端口號(hào)的分配方法UDP的熟知端口號(hào)的分配13端口號(hào)服務(wù)進(jìn)程說明53domain域名服務(wù)67/68DHCP動(dòng)態(tài)主機(jī)配置協(xié)議69TFTP簡單文件傳送協(xié)議111RPC遠(yuǎn)程過程調(diào)用123NTP網(wǎng)絡(luò)時(shí)間協(xié)議161/162SNMP簡單網(wǎng)絡(luò)管理協(xié)議520RIP路由信息協(xié)議TCP的熟知端口號(hào)的分配14端口號(hào)服務(wù)進(jìn)程說明20FTP文件傳輸協(xié)議(數(shù)據(jù)連接)21FTP文件傳輸協(xié)議(控制連接)23TELNET網(wǎng)絡(luò)虛擬終端協(xié)議25SMTP簡單郵件傳輸協(xié)議80HTTP超文本傳輸協(xié)議119NNTP網(wǎng)絡(luò)新聞傳輸協(xié)議179BGP邊界路由協(xié)議端口的使用本地操作系統(tǒng)會(huì)給那些有需求的進(jìn)程分配協(xié)議端口(protocolport,即我們常說的端口),每個(gè)協(xié)議端口由一個(gè)正整數(shù)標(biāo)識(shí),如:80,139,445,等等。當(dāng)目的主機(jī)接收到數(shù)據(jù)包后,將根據(jù)報(bào)文首部的目的端口號(hào),把數(shù)據(jù)發(fā)送到相應(yīng)端口,而與此端口相對(duì)應(yīng)的那個(gè)進(jìn)程將會(huì)領(lǐng)取數(shù)據(jù)并等待下一組數(shù)據(jù)的到來。不光接受數(shù)據(jù)包的進(jìn)程需要開啟它自己的端口,發(fā)送數(shù)據(jù)包的進(jìn)程也需要開啟端口,這樣,數(shù)據(jù)包中將會(huì)標(biāo)識(shí)有源端口,以便接受方能順利的回傳數(shù)據(jù)包到這個(gè)端口。端口使用舉例主機(jī)A服務(wù)器Bsourceport:xdest.port:23sourceport:23dest.port:x端口的使用:簡單的telnet應(yīng)用Web客戶端主機(jī)AWeb服務(wù)器BWeb客戶端主機(jī)CSourceIP:CDest.IP:Bsourceport:ydest.port:80SourceIP:CDest.IP:Bsourceport:xdest.port:80端口的使用:Web服務(wù)器SourceIP:ADestIP:Bsourceport:xdest.port:80….….….….主頁1主頁2Web服務(wù)器BWeb客戶端主機(jī)ASourceIP:CDest.IP:Bsourceport:ydest.port:80SourceIP:CDest.IP:Bsourceport:xdest.port:80端口的使用:Web服務(wù)器….….….….考慮:1.同一主機(jī)多個(gè)應(yīng)用進(jìn)程,發(fā)往同一個(gè)目的端口???2.不同的主機(jī)隨即源端口相同,發(fā)往同一目的端口???Web客戶端主機(jī)ASourceIP:ADestIP:Bsourceport:xdest.port:80TCP使用“連接”(而不僅僅是“端口”)作為最基本的標(biāo)識(shí)。一個(gè)TCP連接由它的兩個(gè)端點(diǎn)來標(biāo)識(shí)。這樣的端點(diǎn)就叫做“插口”,或“套接字”。插口/套接字/Socket每個(gè)主機(jī)(可用IP地址唯一標(biāo)識(shí))都可以獨(dú)立分配自己的端口號(hào),因此為了在通信時(shí)不至于發(fā)生混亂,就必須把端口號(hào)和IP地址結(jié)合在一起使用,用于區(qū)別同時(shí)通信的多個(gè)主機(jī)中的多個(gè)進(jìn)程。插口/Socket,是因特網(wǎng)中某一個(gè)通信端點(diǎn)的標(biāo)識(shí),它由IP地址(32位)和端口號(hào)(16位)構(gòu)成。服務(wù)器套接字地址唯一地定義服務(wù)器應(yīng)用程序;客戶機(jī)套接字地址唯一地定義客戶機(jī)應(yīng)用程序;由于套接字是建立網(wǎng)絡(luò)應(yīng)用程序的可編程接口,因此套接字又稱為應(yīng)用程序編程接口(API)。運(yùn)輸層實(shí)際上并沒有直接將數(shù)據(jù)交付給進(jìn)程,而是通過一個(gè)中間的套接字來傳遞不同的網(wǎng)絡(luò)系統(tǒng),不同的傳輸層協(xié)議;不同的傳輸層協(xié)議之間不能通信;網(wǎng)絡(luò)中一個(gè)進(jìn)程的全網(wǎng)唯一的標(biāo)識(shí)需要用一個(gè)三元組表示協(xié)議、本地地址、本地端口號(hào)一個(gè)完整的進(jìn)程通信標(biāo)識(shí)需要用一個(gè)五元組表示協(xié)議、本地地址、本地端口號(hào)、遠(yuǎn)程地址、遠(yuǎn)程端口號(hào)連接一的客戶端套接字是3:500服務(wù)器端的套接字是5:25圖中標(biāo)識(shí)連接1的五元組是(TCP,3:500,5:25)傳輸層的多路復(fù)用與多路分解22復(fù)用/分解應(yīng)用層運(yùn)輸層網(wǎng)絡(luò)層鏈路層物理層P1應(yīng)用層運(yùn)輸層網(wǎng)絡(luò)層鏈路層物理層應(yīng)用層運(yùn)輸層network鏈路層物理層P2P3P4P1主機(jī)1主機(jī)2主機(jī)3=進(jìn)程=套接字從多個(gè)套接字收集數(shù)據(jù),用首部封裝數(shù)據(jù)(以后用于分解)在發(fā)送主機(jī)復(fù)用:將接收到的段交付給正確的套接字在接收主機(jī)分解:多路復(fù)用/分解——運(yùn)輸層支持一臺(tái)主機(jī)上多個(gè)進(jìn)程通過一個(gè)單一的網(wǎng)絡(luò)接口實(shí)現(xiàn)數(shù)據(jù)發(fā)送/接收操作發(fā)送端AP1AP2AP3AP4AP5AP6接收端傳輸信道傳輸信道多路復(fù)用/多路分解的實(shí)現(xiàn)要保證復(fù)用/分用的進(jìn)程都有唯一的標(biāo)識(shí)(套接字標(biāo)識(shí)符)每個(gè)報(bào)文段要有特定的字段指示所要交付的套接字分解工作過程1.無連接分解生成具有端口號(hào)的套接字:DatagramSocketmySocket1=newDatagramSocket(99111);DatagramSocketmySocket2=newDatagramSocket(99222);UDP套接字由二元組標(biāo)識(shí):(目的地IP地址,目的地端口號(hào))當(dāng)主機(jī)接收UDP段時(shí):在段中檢查目的地端口號(hào)將UDP段定向到具有該端口號(hào)的套接字具有不同源IP地址和/或源端口號(hào)的IP數(shù)據(jù)報(bào)定向到相同的套接字無連接分解DatagramSocket

serverSocket=newDatagramSocket(6428);客戶機(jī)IP:BP2客戶機(jī)IP:AP1P1P3服務(wù)器IP:CSP:6428DP:9157SP:9157DP:6428SP:6428DP:5775SP:5775DP:6428SP提供了“返回地址”2.面向連接分解TCP套接字由四元組標(biāo)識(shí):源IP地址源端口號(hào)目的IP地址目的端口號(hào)接收主機(jī)使用這四個(gè)值來將段定向到適當(dāng)?shù)奶捉幼址?wù)器主機(jī)可能支持許多并行的TCP套接字:每個(gè)套接字由其自己的四元組標(biāo)識(shí)Web服務(wù)器對(duì)每個(gè)連接的客戶機(jī)具有不同的套接字非持久HTTP將為每個(gè)請(qǐng)求具有不同的套接字P1客戶機(jī)IP:AP1P2P4服務(wù)器IP:CSP:9157DP:80SP:9157DP:80P5P6P3D-IP:CS-IP:AD-IP:CS-IP:BSP:5775DP:80D-IP:CS-IP:B客戶機(jī)IP:BP1客戶機(jī)IP:AP1P2服務(wù)器IP:CSP:9157DP:80SP:9157DP:80P4P3D-IP:CS-IP:AD-IP:CS-IP:BSP:5775DP:80D-IP:CS-IP:B高性能web服務(wù)器:同一端口建立多個(gè)連接,每個(gè)連接創(chuàng)建一個(gè)新的線程同一端口建立多個(gè)連接,每個(gè)連接產(chǎn)生一個(gè)新的進(jìn)程。連接套接字與進(jìn)程間并非總是一一對(duì)應(yīng)4.2傳輸層協(xié)議的特點(diǎn)與比較TCP/IP的運(yùn)輸層有兩個(gè)不同的協(xié)議:(1)用戶數(shù)據(jù)報(bào)協(xié)議UDP (UserDatagramProtocol)(2)傳輸控制協(xié)議TCP (TransmissionControlProtocol)1.TCP與UDP協(xié)議的比較特征/描述TCPUDP一般描述允許應(yīng)用程序可靠地發(fā)送數(shù)據(jù),功能齊全簡單、高速,只負(fù)責(zé)將應(yīng)用層與網(wǎng)絡(luò)層銜接起來面向連接或無連接面向連接,在TPDU傳輸之前需要建立TCP連接無連接,在TPDU傳輸之前不需要建立UDP連接與應(yīng)用層的數(shù)據(jù)接口基于字節(jié)流,應(yīng)用層不需要規(guī)定特定的數(shù)據(jù)格式基于報(bào)文,應(yīng)用層需要將數(shù)據(jù)分成包來傳送可靠性與確認(rèn)可靠報(bào)文傳輸,對(duì)所有的數(shù)據(jù)均要確認(rèn)不可靠,不需要對(duì)傳輸?shù)臄?shù)據(jù)確認(rèn),盡力而為地交付重傳自動(dòng)重傳丟失的數(shù)據(jù)不負(fù)責(zé)檢查是否丟失數(shù)據(jù)和重傳開銷高于UDP很低傳輸速率低于UDP很高適用的數(shù)據(jù)量從少量到幾個(gè)GB的數(shù)據(jù)從少量到幾百個(gè)字節(jié)的數(shù)據(jù)適用的應(yīng)用類型對(duì)數(shù)據(jù)傳輸可靠性要求較高的應(yīng)用,例如文件與報(bào)文傳輸發(fā)送數(shù)量比較少、對(duì)數(shù)據(jù)傳輸可靠性要求較低的應(yīng)用,例如IP電話、視頻會(huì)議、多播與廣播302.TCP、UDP協(xié)議與應(yīng)用層協(xié)議的關(guān)系應(yīng)用數(shù)據(jù)丟失帶寬時(shí)間敏感文件傳輸不能丟失彈性不電子郵件不能丟失彈性不Web文檔不能丟失彈性不即時(shí)訊息不能丟失彈性是和不是實(shí)時(shí)音頻視頻容忍丟失音頻(幾kb/s-1Mb/s)是,100ms視頻(10kb/s-5Mb/s)交互式游戲容忍丟失幾kb/s-1Mb/s是,100ms一些因特網(wǎng)應(yīng)用在可靠性、帶寬及時(shí)間方面的要求32SMTPHTTPTelnetFTPDNSRIPDHCPIP電話流媒體如果設(shè)計(jì)一個(gè)只提供必要服務(wù)的最簡化的運(yùn)輸層協(xié)議,你打算怎樣做?4.3UDP協(xié)議考慮使用一個(gè)無所事事的運(yùn)輸層協(xié)議發(fā)送方將來自應(yīng)用進(jìn)程的報(bào)文直接交給網(wǎng)絡(luò)層。接收方將來自網(wǎng)絡(luò)層的報(bào)文直接交給應(yīng)用進(jìn)程。正如前一節(jié)所學(xué)運(yùn)輸層必須做一點(diǎn)兒事,而不是什么都不做!至少必須提供一個(gè)多路復(fù)用/多路分解服務(wù),在網(wǎng)絡(luò)層與正確的應(yīng)用進(jìn)程之間傳遞數(shù)據(jù)。1.UDP協(xié)議的主要特點(diǎn):34只提供多路復(fù)用/分解功能及一些簡單的差錯(cuò)檢查。應(yīng)用程序幾乎是直接與IP打交道“盡力而為”服務(wù),UDP段可能:丟包對(duì)應(yīng)用程序交付失序無連接:在UDP發(fā)送方和接收方之間無握手每個(gè)UDP段的處理獨(dú)立于其他段面向報(bào)文的傳輸層協(xié)議為何要有UDP協(xié)議?應(yīng)用層能夠更好地控制要發(fā)送的數(shù)據(jù)和發(fā)送時(shí)間;無需建立連接(它將增加時(shí)延);不維護(hù)連接狀況;分組首部開銷??;無擁塞控制:UDP能夠盡可能快地傳輸常用于流式多媒體應(yīng)用丟包容忍速率敏感經(jīng)UDP的可靠傳輸:在應(yīng)用層增加可靠性應(yīng)用程序特定的差錯(cuò)恢復(fù)!缺乏擁塞控制會(huì)導(dǎo)致UDP發(fā)送方和接收方之間的高丟包率,并擠垮TCP會(huì)話;需要擁塞控制來預(yù)防網(wǎng)絡(luò)進(jìn)入一種低效狀態(tài);提出新的機(jī)制執(zhí)行自適應(yīng)擁塞機(jī)制2.UDP報(bào)文格式UDP報(bào)文有固定8字節(jié)的報(bào)頭。36應(yīng)用層數(shù)據(jù)占用了UDP報(bào)文段的數(shù)據(jù)字段。UDP報(bào)頭主要字段:端口號(hào)端口號(hào)字段包括源端口號(hào)和目的端口號(hào);端口號(hào)字段長度為16位(2個(gè)字節(jié));源端口號(hào)表示發(fā)送端進(jìn)程端口號(hào),目的端口號(hào)表示接收端進(jìn)程端口號(hào);如果源進(jìn)程是客戶端,則源端口號(hào)是分配的臨時(shí)端口號(hào);服務(wù)器使用的是熟知端口號(hào)。37長度長度字段長度也是16位(2字節(jié)),它定義了包括報(bào)頭在內(nèi)的用戶數(shù)據(jù)報(bào)的總長度;用戶數(shù)據(jù)報(bào)的長度最大為65535字節(jié),最小是8字節(jié);如果長度字段是8字節(jié),那么說明該用戶數(shù)據(jù)報(bào)只有報(bào)頭,而沒有數(shù)據(jù)。38校驗(yàn)和UDP校驗(yàn)和用來檢驗(yàn)整個(gè)用戶數(shù)據(jù)報(bào)(包括報(bào)頭)在傳輸中是否出現(xiàn)差錯(cuò)。有錯(cuò)就丟棄。UDP校驗(yàn)和包括三個(gè)部分:偽報(bào)頭(pseudoheader)、UDP報(bào)頭與應(yīng)用層數(shù)據(jù)。39鏈路中或路由器中噪聲干擾偽首部源端口目的端口長度檢驗(yàn)和數(shù)據(jù)首部UDP長度源IP地址目的IP地址017IP數(shù)據(jù)報(bào)字節(jié)44112122222字節(jié)發(fā)送在前數(shù)據(jù)首部UDP用戶數(shù)據(jù)報(bào)3.UDP校驗(yàn)和的基本概念與計(jì)算示例在計(jì)算檢驗(yàn)和時(shí),臨時(shí)把“偽首部”和UDP用戶數(shù)據(jù)報(bào)連接在一起。偽首部既不向下傳送也不向上提交,僅僅是為了計(jì)算檢驗(yàn)和。協(xié)議號(hào)填充字段不包括偽報(bào)頭校驗(yàn)和計(jì)算方法把首部和數(shù)據(jù)部分一起都檢驗(yàn)發(fā)送方:先把全零放入檢驗(yàn)和字段將段內(nèi)容(偽首部和UDP數(shù)據(jù)報(bào))處理為16bit整數(shù)序列數(shù)據(jù)部分不是16bit整數(shù)倍要需要填寫一個(gè)全零字節(jié)(但此字節(jié)不發(fā)送);計(jì)算檢查和:段內(nèi)容的加法(反碼和)發(fā)送方將檢查和放入U(xiǎn)DP檢查和字段接收方:所有段內(nèi)容(偽首部和UDP數(shù)據(jù)報(bào))二進(jìn)制求和計(jì)算16位的和結(jié)果全為1,說明數(shù)據(jù)傳輸正確,丟棄偽報(bào)頭和填充,接收!如果出現(xiàn)零,則有差錯(cuò),接收方應(yīng)丟棄(也可以交給應(yīng)用層,但附上出現(xiàn)了差錯(cuò)的警告)偽首部源端口目的端口長度檢驗(yàn)和UDP長度源IP地址目的IP地址017字節(jié)44112122222字節(jié)注意當(dāng)數(shù)字作加法時(shí),最高位進(jìn)比特位的進(jìn)位需要加到結(jié)果中例子:兩個(gè)16-bit整數(shù)相加111100110011001101110101010101010111011101110111011

11

101110111011110010100010001000011回卷和檢查和發(fā)送端計(jì)算UDP校驗(yàn)和的例子43算法簡單,處理快,但檢錯(cuò)能力不強(qiáng)4.UDP協(xié)議適用的范圍確定應(yīng)用程序在傳輸層是否采用UDP協(xié)議的原則:系統(tǒng)對(duì)性能的要求高于對(duì)數(shù)據(jù)完整性的要求;需要“簡短快捷”的數(shù)據(jù)交換;需要多播和廣播的應(yīng)用;

UDP協(xié)議是一種適用于實(shí)時(shí)語音與視頻傳輸?shù)膫鬏攲訁f(xié)議。444.4TCP協(xié)議4.4.1TCP協(xié)議的主要特點(diǎn)支持面向連接的傳輸服務(wù)應(yīng)用程序在使用TCP傳送數(shù)據(jù)之前,必須在源進(jìn)程端口與目的進(jìn)程端口之間建立一條傳輸連接;每個(gè)TCP連接唯一地用雙方套接字來標(biāo)識(shí);每個(gè)TCP連接為通信雙方的一次進(jìn)程通信提供服務(wù)。45支持字節(jié)流的傳輸流(stream)指的是流入到進(jìn)程或從進(jìn)程流出的字節(jié)序列。TCP把應(yīng)用層數(shù)據(jù)看成是無結(jié)構(gòu)字節(jié)流,不知道字節(jié)流的含義。TCP根據(jù)接收方給出的窗口大小和網(wǎng)絡(luò)擁塞程度來決定一個(gè)報(bào)文段應(yīng)包括多少個(gè)字節(jié)。(UDP報(bào)文長度是應(yīng)用層給出的)因此接收端應(yīng)用程序數(shù)據(jù)字節(jié)的起始與終結(jié)位置必須由應(yīng)用程序自己確定。46TCP協(xié)議

支持字節(jié)

流傳輸

示意圖47發(fā)送和接收緩沖區(qū)由于通信的雙方都設(shè)置有發(fā)送和接收緩沖區(qū),應(yīng)用程序?qū)⒁l(fā)送的數(shù)據(jù)字節(jié)提交給發(fā)送緩沖區(qū),數(shù)據(jù)字節(jié)的實(shí)際發(fā)送過程由TCP協(xié)議來控制;接收端在接收到數(shù)據(jù)字節(jié)之后也將它存放到接收緩沖區(qū),高層應(yīng)用程序在它合適的時(shí)間到緩沖區(qū)中讀取數(shù)據(jù)。支持全雙工服務(wù)TCP允許通信雙方的應(yīng)用程序在任何時(shí)候都可以發(fā)送數(shù)據(jù);流量控制發(fā)送方不能淹沒接收方擁塞控制抑止發(fā)送方速率來防止過分占用網(wǎng)絡(luò)資源49支持同時(shí)建立多個(gè)并發(fā)的TCP連接根據(jù)應(yīng)用程序的需要,TCP協(xié)議支持一個(gè)服務(wù)器與多個(gè)客戶端同時(shí)建立多個(gè)TCP連接;也支持一個(gè)客戶端與多個(gè)服務(wù)器同時(shí)建立多個(gè)TCP連接;50支持可靠傳輸服務(wù)TCP是一種可靠的傳輸服務(wù)協(xié)議,它使用確認(rèn)機(jī)制檢查數(shù)據(jù)是否安全和完整地到達(dá),并且提供擁塞控制功能;TCP支持可靠數(shù)據(jù)通信的關(guān)鍵是對(duì)發(fā)送和接收的數(shù)據(jù)進(jìn)行跟蹤、確認(rèn)與重傳;傳輸層傳輸?shù)目煽啃允墙⒃诰W(wǎng)絡(luò)層基礎(chǔ)上,同時(shí)也就會(huì)受到它們的限制。51總結(jié)TCP協(xié)議的特點(diǎn)是:面向連接面向字節(jié)流支持全雙工支持并發(fā)連接提供確認(rèn)重傳與擁塞控制524.4.2TCP報(bào)文格式TCP報(bào)頭長度為20~60字節(jié),其中固定部分長度為20字節(jié);選項(xiàng)部分長度可變,最多為40字節(jié)。53TCP報(bào)頭包括的主要字段:端口號(hào)端口號(hào)字段包括源端口號(hào)與目的端口號(hào);每個(gè)端口號(hào)字段長度為16位(2字節(jié)),分別表示發(fā)送該報(bào)文段的應(yīng)用進(jìn)程的源端口號(hào)與接收進(jìn)程的目的端口號(hào)。序號(hào)序號(hào)字段長度為32位(4個(gè)字節(jié)),序號(hào)范圍在0~(232-1),即0~4284967295;序號(hào)增加到232-1后,下一個(gè)序號(hào)又回到0;為發(fā)送字節(jié)流中的每個(gè)字節(jié)都按順序編號(hào);起始序號(hào)必須在連接建立時(shí)設(shè)置;序號(hào)字段值是本報(bào)文段所發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)54確認(rèn)號(hào)確認(rèn)號(hào)字段長度為32位(4字節(jié));確認(rèn)號(hào)表示一個(gè)進(jìn)程已經(jīng)正確接收序號(hào)為N的字節(jié),要求發(fā)送方下一個(gè)應(yīng)該發(fā)送序號(hào)為N+1的字節(jié)的報(bào)文段??蓪?duì)4GB的數(shù)據(jù)進(jìn)行編號(hào)。在一般情況下可保證數(shù)據(jù)當(dāng)序號(hào)重復(fù)使用時(shí),舊序號(hào)的數(shù)據(jù)早已通過網(wǎng)絡(luò)到達(dá)終點(diǎn)了。報(bào)頭長度報(bào)頭長度字段的長度為4位;TCP報(bào)頭長度是以4字節(jié)為一個(gè)單元來計(jì)算的,實(shí)際報(bào)頭長度是在20~60字節(jié),因此這個(gè)字段的值是在5至15之間。55控制字段控制字段定義了6種不同的控制位或標(biāo)志位;控制字段將在TCP的連接建立和終止、流量控制,以及數(shù)據(jù)傳送中發(fā)揮作用。56標(biāo)志說明SYN在連接時(shí)對(duì)序號(hào)進(jìn)行同步。ACK確認(rèn)字段的值有效。當(dāng)ACK=1時(shí),確認(rèn)號(hào)才有效。FIN終止連接RST連接必須復(fù)位。TCP連接出現(xiàn)嚴(yán)重差錯(cuò)要重新建立連接。還可用來拒絕一個(gè)非法報(bào)文段或拒絕打開一個(gè)鏈接。URG緊急指針字段的值有效。有緊急數(shù)據(jù)盡快傳送,插入到報(bào)文段最前面,與緊急指針配合使用。PSH將數(shù)據(jù)推向前,希望立即收到對(duì)方響應(yīng)。接收方收到后盡快交付給接收應(yīng)用進(jìn)程。窗口大小窗口字段長度為16位;窗口的長度值是在0~65535之間;窗口字段值指示對(duì)方最多可以發(fā)送的字節(jié)數(shù),作為發(fā)送方確定發(fā)送窗口的依據(jù)。明確指出了從被確認(rèn)的字節(jié)算起可以發(fā)送的數(shù)據(jù)量。窗口字段值是動(dòng)態(tài)變化的。窗口值為0也是合法的。表示接收方暫時(shí)不能接收數(shù)據(jù),發(fā)送方要停止發(fā)送。57校驗(yàn)和計(jì)算校驗(yàn)和與UDP校驗(yàn)和的方法相同;TCP校驗(yàn)和同樣需要偽報(bào)頭,唯一不同的是協(xié)議字段的值是6。緊急指針緊急指針字段的長度為16位,只有當(dāng)緊急標(biāo)志URG=1時(shí),這個(gè)字段才有效,這時(shí)的報(bào)文段中包括緊急數(shù)據(jù);指出了緊急數(shù)據(jù)的末尾在報(bào)文段中的位置。TCP軟件要在優(yōu)先處理完緊急數(shù)據(jù)之后才能夠恢復(fù)正常操作。注意,即使窗口為零時(shí)也可以發(fā)送緊急數(shù)據(jù)。偽首部UDP長度源IP地址目的IP地址06字節(jié)4411212字節(jié)TCP最大段長度(MSS)理解MSS時(shí)需要注意以下幾個(gè)問題:TCP報(bào)文段的最大長度與窗口長度的概念不同。設(shè)置窗口大小是通知發(fā)送方下一次可以連續(xù)傳輸?shù)淖止?jié)數(shù);最大段長度MSS是在構(gòu)成一個(gè)TCP報(bào)文段時(shí)最多可以在報(bào)文的數(shù)據(jù)字段中放置的數(shù)據(jù)字節(jié)數(shù)量;MSS值的確定與每次傳輸?shù)拇翱诖笮o關(guān);MSS是TCP報(bào)文中數(shù)據(jù)部分的最大長度,不包括報(bào)頭長度。59MSS值的選擇應(yīng)該考慮的因素:MSS值太小——協(xié)議開銷TCP報(bào)文的長度等于報(bào)頭部分加上數(shù)據(jù)部分,選擇MSS值太小會(huì)增大協(xié)議開銷所占的比例。MSS值太大——IP分片如果MSS值選擇得比較大,受到IP分組長度的限制,較長的報(bào)文段在IP層將會(huì)被分片傳輸;分片的結(jié)果同樣會(huì)增加網(wǎng)絡(luò)層的開銷和傳輸出錯(cuò)的概率。IP分組經(jīng)歷的路徑是動(dòng)態(tài)變化的,因此這條路徑不需要分片的MSS,如果該走另一條路徑就可能需要分片。最佳的MSS是很難確定的。60MSS值的設(shè)定在建立TCP連接的時(shí)候,雙方把自己能夠支持的MSS寫入這一字段中,以后按照這個(gè)值傳送數(shù)據(jù)。(不是協(xié)商,只是通知對(duì)方)TCP允許連接的雙方可以選擇使用不同的MSS值。若主機(jī)未填寫,則默認(rèn)的MSS值為536字節(jié)。61窗口擴(kuò)大選項(xiàng)首部中窗口字段16位,最大為64K字節(jié)。對(duì)于衛(wèi)星信道的網(wǎng)絡(luò),要獲得高吞吐率需要更大的窗口;其中有一個(gè)字節(jié)表示移位值S。新窗口值等于16+S。移位值允許使用的最大值是14。相當(dāng)于窗口增大到216+14雙方建立連接時(shí)協(xié)商。當(dāng)不再需要擴(kuò)大時(shí),可發(fā)送S=0時(shí)間戳占10個(gè)字節(jié),主要是時(shí)間戳值字段(4個(gè)字節(jié))和時(shí)間戳回送回答字段(4個(gè)字節(jié));計(jì)算往返時(shí)間RTT。發(fā)送方在發(fā)送時(shí)把當(dāng)前時(shí)間值放入時(shí)間戳字段,接收方在確認(rèn)報(bào)文段時(shí)把時(shí)間戳字段值復(fù)制到時(shí)間戳回送回答字段。發(fā)送方收到確認(rèn)后,可以準(zhǔn)確計(jì)算出RTT。用于處理TCP序號(hào)超過的232情況,稱為防止序號(hào)繞回。當(dāng)使用高速網(wǎng)絡(luò)時(shí)發(fā)送序號(hào)很可能被重復(fù)使用,為了是接收方能夠把新的報(bào)文段和遲到報(bào)文段區(qū)分開,可以加上時(shí)間戳。0050/源端口:8005A6/目的端口:1446A3853DB7/發(fā)送序號(hào):2743418295C7FBC12C/確認(rèn)序號(hào):33551649727012/01110000000100100111/首部長度:7*4=28字節(jié)000000/保留:010010/標(biāo)志位:URG/ACK/PSH/RST/SYN/FINACK:1SYN:116D0/窗口大?。?8402A32/校驗(yàn)和:108020000/緊急指針:0020405B401010402/選項(xiàng)字段:

MSS:05B4=1460字節(jié)05A6/源端口:14460050/目的端口:80C7FBC12C/發(fā)送序號(hào):3355164972A3853DB8/確認(rèn)序號(hào):27434182965010/01010000000100000101/首部長度:5*4=20字節(jié)000000/保留:010000/標(biāo)志位:URG/ACK/PSH/RST/SYN/FINACK:1FFFF/窗口大?。?55356DC6/校驗(yàn)和:281020000/緊急指針:04.4.3可靠傳輸?shù)墓ぷ髟砝硐氲膫鬏敆l件有以下兩個(gè)特點(diǎn):傳輸信道不產(chǎn)生差錯(cuò)。不管發(fā)送方以多快的速度發(fā)送數(shù)據(jù),接收方總是來得及處理收到的數(shù)據(jù)。需要可靠傳輸協(xié)議做到:出現(xiàn)差錯(cuò)時(shí)讓發(fā)送方重傳出現(xiàn)差錯(cuò)的數(shù)據(jù);接收方來不及處理收到的數(shù)據(jù)時(shí),及時(shí)告訴發(fā)送方適當(dāng)降低發(fā)送數(shù)據(jù)的速度。只討論可靠傳輸?shù)囊话阍?,并不具體針對(duì)某一層!??!發(fā)送方如何知道發(fā)送成功還是失???分組丟失或遲到怎么辦?已經(jīng)發(fā)送的分組可以馬上丟棄么?如何區(qū)分重傳分組或新的分組?如何區(qū)分對(duì)哪個(gè)分組的確認(rèn)?否定確認(rèn)是否可以不用?Rdt1.0超時(shí)計(jì)時(shí)器的重傳時(shí)間設(shè)置多長比較合適?肯定確認(rèn)(acknowledgement)否定確認(rèn)(negativeacknowledgement)每發(fā)送完一個(gè)分組后啟動(dòng)計(jì)時(shí)器應(yīng)當(dāng)比數(shù)據(jù)在分組傳輸?shù)钠骄禃r(shí)間更長一些對(duì)發(fā)送分組和確認(rèn)分組編號(hào)必須暫時(shí)保留已發(fā)送的分組的副本,只有收到確認(rèn)后才能清除超時(shí)自動(dòng)重傳,通常只使用肯定確認(rèn)m0ack0m1m1×m1ack1m0ack0ack0×m0m0丟棄ack0timeouttimeout

m1超時(shí)重傳

m0超時(shí)重傳Rdt1.0——停等協(xié)議(StopandWait)停等協(xié)議的主要問題是什么?傳輸效率低1Gb/s帶寬,15ms端到端傳播時(shí)延,1K字節(jié)分組信道利用率萬分之2.7;吞吐量33kB/s

網(wǎng)絡(luò)協(xié)議限制了物理資源的使用!TDRTTATD+RTTB分組確認(rèn)tt分組確認(rèn)TD=8kb/pkt10**9b/sec=8msL(packetlengthinbits)R(transmissionrate,bps)=如何解決?可以在等待確認(rèn)的時(shí)間內(nèi)允許發(fā)送方連續(xù)發(fā)送,而不必等待確認(rèn)分組的到達(dá)可以在等待確認(rèn)的時(shí)間內(nèi)允許發(fā)送方連續(xù)發(fā)送,這種技術(shù)被稱為流水線或管道化技術(shù)(Pipelining)Rdt2.0——回退N幀協(xié)議(GO-Back-N,GBN)連續(xù)發(fā)送的數(shù)據(jù)中有一個(gè)被損壞了或丟失了,怎么辦?等待重傳B分組ttAACK接收方如何處理后續(xù)到達(dá)的正確分組呢?丟棄并且不發(fā)送確認(rèn),從出錯(cuò)的分組開始全部重傳GBN累積確認(rèn)(CumulativeAcknowledge)在分組n超時(shí)定時(shí)器到期之前收到對(duì)更高序號(hào)分組k的確認(rèn),則可認(rèn)為n到k之間所有的分組都已經(jīng)收到。可以不必對(duì)每個(gè)分組都逐個(gè)確認(rèn),可以等待若干個(gè)分組按序到達(dá)后發(fā)送一個(gè)確認(rèn)對(duì)某個(gè)分組的確認(rèn)丟失了,也不會(huì)因?yàn)榇_認(rèn)丟失而重傳這個(gè)分組例題:采用回退N幀協(xié)議,發(fā)送方已經(jīng)發(fā)送了0-7序號(hào)的分組,計(jì)時(shí)器超時(shí),只收到0,3序號(hào)的確認(rèn)分組,問需要重發(fā)哪幾個(gè)分組?需要重發(fā)4、5、6、7m0m1m2m3m0m1m0m1m2m2m3m3m1

×m2丟棄m3丟棄m1m1m2m2m3m3ack0timeouttimeoutack3m1超時(shí)重傳累積確認(rèn)Go-Back-Nack2ack2

×GBN協(xié)議的主要問題是什么?一個(gè)分組的差錯(cuò)可能引起大量正確接收(但失序)的分組重傳如何解決?僅重傳那些出錯(cuò)的分組Rdt3.0——選擇性重傳協(xié)議(Selectiverepeat,SR)接收方將正確的分組接收緩存起來而不管其是否有序,直到所有丟失分組都被收到,才可以將一批分組按序交付給上層。發(fā)送方只重傳出錯(cuò)的分組m0m1m2m3m0m1m0m1m2m2m3m3m1

×m1m1ack0timeouttimeoutack3m1超時(shí)重傳ack2ack1計(jì)時(shí)取消接收方緩沖區(qū)溢出,數(shù)據(jù)丟失如何解決?必須進(jìn)行流量控制保證數(shù)據(jù)的完整性流水線技術(shù)對(duì)可靠數(shù)據(jù)傳輸帶來哪些影響?發(fā)送方如何確定哪些分組是可以發(fā)送的?維持一個(gè)發(fā)送窗口(sendingwindow)窗口內(nèi)的分組可以發(fā)送接收方如何確定哪些分組是可以接收?維持一個(gè)接收窗口(receivingwindow)窗口內(nèi)的分組可以接收允許發(fā)送但尚未發(fā)送不允許發(fā)送已發(fā)送并收到確認(rèn)A的發(fā)送窗口01234567891617181920已發(fā)送但未收到確認(rèn)151011121314允許接收不允許接收已發(fā)送并交付主機(jī)B的接收窗口01234567891617181920未按序收到151011121314如何使用窗口控制流量?滑動(dòng)窗口012345678901234567890123456789012345678901234567890123456789×0123456789012340123456789012345678901234567891340123456789×13GBN協(xié)議——窗口示意圖0timeouttimeout0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567892401234567890123456789012345678901234567890123456789012345678901234567890123456789×01234567890123456789012345678901234567890123450123456789012345678901234567892012345678913SR協(xié)議——窗口示意圖00123456789452timeouttimeout可靠數(shù)據(jù)傳輸機(jī)制及用途總結(jié)機(jī)制用途和說明檢驗(yàn)和用于檢測(cè)在一個(gè)傳輸分組中的比特錯(cuò)誤。定時(shí)器用于檢測(cè)超時(shí)/重傳一個(gè)分組,可能因?yàn)樵摲纸M(或其ACK)在信道中丟失了。由于當(dāng)一個(gè)分組被時(shí)延但未丟失(過早超時(shí)),或當(dāng)一個(gè)分組已被接收方收到但從接收方到發(fā)送方的ACK丟失時(shí),可能產(chǎn)生超時(shí)事件,所以接收方可能會(huì)收到一個(gè)分組的多個(gè)冗余拷貝。序號(hào)用于為從發(fā)送方流向接收方的數(shù)據(jù)分組按順序編號(hào)。所接收分組的序號(hào)間的空隙可使該接收方檢測(cè)出丟失的分組。具有相同序號(hào)的分組可使接收方檢測(cè)出一個(gè)分組的冗余拷貝。確認(rèn)接收方用于告訴發(fā)送方一個(gè)分組或一組分組已被正確地接收到了。確認(rèn)報(bào)文通常攜帶著被確認(rèn)的分組或多個(gè)分組的序號(hào)。確認(rèn)可以是逐個(gè)的或累積的,這取決于協(xié)議。否定確認(rèn)接收方用于告訴發(fā)送方某個(gè)分組未被正確地接收。否定確認(rèn)報(bào)文通常攜帶著未被正確接收的分組的序號(hào)。(通常并不發(fā)送否定確認(rèn))窗口、流水線發(fā)送方也許被限制僅發(fā)送那些序號(hào)落在一個(gè)指定范圍內(nèi)的分組。通過允許一次發(fā)送多個(gè)分組但未被確認(rèn),發(fā)送方的利用率可在停等操作模式的基礎(chǔ)上得到增加。我們很快將會(huì)看到,窗口長度可根據(jù)接收方接收和緩存報(bào)文的能力或網(wǎng)絡(luò)中的擁塞程度,或兩者情況來進(jìn)行設(shè)置。4.4.4TCP可靠通信的具體實(shí)現(xiàn)

TCP的可靠傳輸機(jī)制用字節(jié)的序號(hào)進(jìn)行控制。TCP所有的確認(rèn)都是基于序號(hào)而不是基于報(bào)文段。TCP連接的每一端都必須設(shè)有兩個(gè)窗口——一個(gè)發(fā)送窗口和一個(gè)接收窗口。

TCP兩端的四個(gè)窗口經(jīng)常處于動(dòng)態(tài)變化之中。TCP連接的往返時(shí)間RTT也不是固定不變的。需要使用特定的算法估算較為合理的重傳時(shí)間。1.TCP序號(hào)和確認(rèn)號(hào)序號(hào):報(bào)文段中第1個(gè)數(shù)據(jù)字節(jié)在字節(jié)流中的位置編號(hào)確認(rèn)號(hào):期望從對(duì)方收到下一個(gè)字節(jié)的序號(hào)累計(jì)應(yīng)答問題:接收方如何處理失序報(bào)文段?回答:TCP規(guī)范沒有說明,由實(shí)現(xiàn)者自行選擇實(shí)現(xiàn):拋棄/緩存主機(jī)A主機(jī)BSeq=42,ACK=79,data=‘C’Seq=79,ACK=43,data=‘C’Seq=43,ACK=80用戶鍵入‘C’主機(jī)對(duì)接收到的‘C’回顯給出確認(rèn)主機(jī)對(duì)收到的‘C’給出確認(rèn),

回顯‘C’時(shí)間簡單的telnet情況捎帶確認(rèn)注意:TCP確認(rèn)針對(duì)流中的字節(jié)而不是段。累計(jì)的含義表示,如果某一方使用5643作為確認(rèn)號(hào),那么它就已經(jīng)收到了一直到5642和這以前的所有字節(jié)。應(yīng)當(dāng)注意的是,這并不表示這一方已經(jīng)收到了5642個(gè)字節(jié),因?yàn)榈谝粋€(gè)字節(jié)的編號(hào)不一定從0開始。累計(jì)確認(rèn)的優(yōu)點(diǎn):變長段方式下不會(huì)產(chǎn)生二義性確認(rèn)丟失后不一定導(dǎo)致重傳累計(jì)確認(rèn)的缺點(diǎn):發(fā)送方不能獲得關(guān)于所有成功的段傳輸?shù)男畔?,假如前面尚有?shù)據(jù)未得到確認(rèn),尚有數(shù)據(jù)未得到確認(rèn),則后面的所有成功傳輸?shù)亩我驳貌坏酱_認(rèn)。

考慮:假設(shè)主機(jī)A通過TCP連接向主機(jī)B連續(xù)發(fā)送兩個(gè)TCP報(bào)文段。第一個(gè)報(bào)文段的發(fā)送序號(hào)為90,第二個(gè)報(bào)文段的發(fā)送序號(hào)為110.1.第一個(gè)報(bào)文段中有多少數(shù)據(jù)?2.假設(shè)第一個(gè)報(bào)文段丟失第二個(gè)報(bào)文段到達(dá)主機(jī)B。那么主機(jī)B發(fā)送給A的確認(rèn)報(bào)文中,確認(rèn)序號(hào)應(yīng)該是多少?字節(jié)流傳輸?shù)臓顟B(tài)分類2.以字節(jié)為單位的滑動(dòng)窗口SendandackedSendandnotackedWaitingtobesentNotintheWindows前移不允許發(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ā)送窗口(又稱為通知窗口)P2–P1=已發(fā)送但尚未收到確認(rèn)的字節(jié)數(shù)P3–P2=允許發(fā)送但尚未發(fā)送的字節(jié)數(shù)(又稱為可用窗口)允許發(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ā)送窗口已滿,有效窗口為零262728293031323334353637383940414243444546474849505152535455已發(fā)送但未收到確認(rèn)56P1P2P3A的發(fā)送窗口內(nèi)的序號(hào)都已用完,但還沒有再收到確認(rèn),必須停止發(fā)送。緩存和窗口的關(guān)系發(fā)送方的應(yīng)用進(jìn)程把字節(jié)流寫入TCP的發(fā)送緩存,接收方的應(yīng)用進(jìn)程從TCP的就收緩存中讀取字節(jié)流。要明確兩點(diǎn):緩存空間和序號(hào)空間都是有限的,并循環(huán)使用;實(shí)際上緩存緩存或窗口中的字節(jié)數(shù)是非常大的。發(fā)送緩存最后被確認(rèn)的字節(jié)發(fā)送應(yīng)用程序發(fā)送緩存最后發(fā)送的字節(jié)發(fā)送窗口已發(fā)送TCP序號(hào)增大最后寫入的字節(jié)發(fā)送緩存用來暫時(shí)存放:1.發(fā)送應(yīng)用程序傳送給發(fā)送方TCP準(zhǔn)備發(fā)送的數(shù)據(jù);2.TCP已經(jīng)發(fā)送出但尚未收到確認(rèn)的數(shù)據(jù)。接收緩存接收應(yīng)用程序已收到接收窗口TCP接收緩存下一個(gè)讀取的字節(jié)序號(hào)增大下一個(gè)期望收到的字節(jié)(確認(rèn)號(hào))按序到達(dá)的未按序到達(dá)的接收緩存用來暫時(shí)存放:1.按序到達(dá)的、但尚未被接收應(yīng)用程序讀取的數(shù)據(jù);2.未按需到達(dá)的數(shù)據(jù);需要強(qiáng)調(diào)三點(diǎn)A的發(fā)送窗口并不總是和B的接收窗口一樣大(因?yàn)橛幸欢ǖ臅r(shí)間滯后)。發(fā)送方根據(jù)自身的狀況,根據(jù)接收到的窗口信息發(fā)送字節(jié)流,不一定要發(fā)送整個(gè)窗口大小的數(shù)據(jù)。TCP標(biāo)準(zhǔn)沒有規(guī)定對(duì)不按序到達(dá)的數(shù)據(jù)應(yīng)如何處理。通常是先臨時(shí)存放在接收窗口中,等到字節(jié)流中所缺少的字節(jié)收到后,再按序交付上層的應(yīng)用進(jìn)程。TCP要求接收方必須有累積確認(rèn)的功能,這樣可以減小傳輸開銷。接收方可以在合適的時(shí)候發(fā)送確認(rèn),在自己有數(shù)據(jù)要發(fā)送時(shí)把確認(rèn)信息捎帶上。接收方不應(yīng)過分推遲發(fā)送確認(rèn),會(huì)導(dǎo)致不必要的重傳,TCP規(guī)定推遲時(shí)間不應(yīng)超過05秒。若收到具有最大長度的報(bào)文段,則必須每隔一個(gè)報(bào)文段就要發(fā)送一個(gè)確認(rèn)。捎帶確認(rèn)實(shí)際上并不經(jīng)常發(fā)生,大多數(shù)應(yīng)用程序不同時(shí)在兩個(gè)方向上發(fā)送數(shù)據(jù)。3.超時(shí)重傳時(shí)間的選擇重傳機(jī)制是TCP中最重要和最復(fù)雜的問題之一。TCP每發(fā)送一個(gè)報(bào)文段,就對(duì)這個(gè)報(bào)文段設(shè)置一次重傳計(jì)時(shí)器。只要計(jì)時(shí)器設(shè)置的重傳時(shí)間到但還沒有收到確認(rèn),就要重傳這一報(bào)文段。重傳計(jì)時(shí)器重傳計(jì)時(shí)器用來處理報(bào)文確認(rèn)與等待重傳時(shí)間;重傳計(jì)時(shí)器的工作過程:95設(shè)定重傳計(jì)時(shí)器的時(shí)間值需要注意的幾個(gè)問題設(shè)定重傳計(jì)時(shí)器適當(dāng)?shù)臅r(shí)間值對(duì)于協(xié)議至關(guān)重要。一個(gè)主機(jī)同時(shí)與其他兩個(gè)主機(jī)建立兩條TCP連接,那么它就需要分別為每個(gè)TCP連接啟動(dòng)一個(gè)重傳計(jì)時(shí)器,不可能對(duì)不同的TCP連接使用一個(gè)重傳計(jì)時(shí)器;由于互聯(lián)網(wǎng)在不同時(shí)間段的用戶數(shù)量、流量與傳輸延遲變化也很大,因此即使是相同的兩個(gè)主機(jī)在不同時(shí)間建立的TCP連接,并且完成同樣的Web訪問操作,客戶端與服務(wù)器端之間的報(bào)文傳輸延遲也不會(huì)相同。在互聯(lián)網(wǎng)環(huán)境中為TCP連接確定合適的重傳定時(shí)器數(shù)值是很困難的,必然要選擇使用一種動(dòng)態(tài)的自適應(yīng)重傳方法。RFC2988“計(jì)算TCP重傳定時(shí)器”文檔詳細(xì)討論了這個(gè)問題。96計(jì)算重傳時(shí)間的方法——加權(quán)平均往返時(shí)間TCP保留了RTT的一個(gè)加權(quán)平均往返時(shí)間

RTTS(這又稱為平滑的往返時(shí)間)。第一次測(cè)量到RTT樣本時(shí),RTTS值就取為所測(cè)量到的RTT樣本值。以后每測(cè)量到一個(gè)新的RTT樣本,就按下式重新計(jì)算一次RTTS:新的RTTS

(1

)(舊的RTTS)

(新的RTT樣本)式中,0

1。若很接近于零,表示RTT值更新較慢。若選擇接近于1,則表示RTT值更新較快。RFC2988推薦的值為1/8,即0.125。超時(shí)重傳時(shí)間RTO(RetransmissionTime-Out)RTO應(yīng)略大于上面得出的加權(quán)平均往返時(shí)間RTTS。對(duì)于每個(gè)TCP連接都要維持一個(gè)RTT變量,它是當(dāng)前到達(dá)目的結(jié)點(diǎn)在最佳估計(jì)往返延時(shí)值。自適應(yīng)重傳定時(shí)基于往返時(shí)間(RTT),計(jì)算重傳時(shí)間的公式為:

Timeout=β×RTT其中,β為一個(gè)大于1的常數(shù)加權(quán)因子;RTT為估算的往返時(shí)間;往返時(shí)間RTT?往返時(shí)間的測(cè)量相當(dāng)復(fù)雜TCP報(bào)文段1沒有收到確認(rèn)。重傳(即報(bào)文段2)后,收到了確認(rèn)報(bào)文段ACK。如何判定此確認(rèn)報(bào)文段是對(duì)原來的報(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

算法討論:α決定RTT對(duì)延遲變化的反應(yīng)速度;當(dāng)α接近1時(shí),短暫的延遲變化對(duì)RTT不起作用;當(dāng)α接近0時(shí),RTT將緊緊跟隨延遲變化。β因子很難確定;當(dāng)β接近1時(shí),TCP能迅速檢測(cè)報(bào)文丟失,及時(shí)重傳,減少等待時(shí)間,但是可能引起很多重傳報(bào)文;當(dāng)β太大時(shí),重傳報(bào)文減少,但是等待確認(rèn)的時(shí)間太長;作為折衷,TCP推薦β=2;以往返時(shí)間(RTT)為基礎(chǔ)的重傳超時(shí)可以是動(dòng)態(tài)的。因此,使用最多的是設(shè)重傳時(shí)間為RTT的兩倍。102已知:收到了3個(gè)連接的確認(rèn)報(bào)文段,它們比相應(yīng)的數(shù)據(jù)報(bào)文段發(fā)送時(shí)間分別滯后26ms、32ms與24ms。假設(shè):α=0.9。求:新的估計(jì)往返延時(shí)值為多少?

解:從題意中可以找出以下的已知條件:α=0.9,舊RTT=30ms,M1=26ms,M2=32ms,M3=24ms。根據(jù)公式可以計(jì)算出:RTT1=0.9×30+(1-0.9)×26≈29.6(ms)RTT2=0.9×29.6+(1-0.9)×32≈29.8(ms)RTT3=0.9×29.8+(1-0.9)×24≈29.3(ms)答案:新的往返延時(shí)估計(jì)值分別為29.6(ms)、

29.8(ms)與29.3(ms)。1034.選擇確認(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),那么原來首部中的“確認(rèn)號(hào)字段”的用法仍然不變。只是以后在TCP報(bào)文段的首部中都增加了SACK選項(xiàng),以便報(bào)告收到的不連續(xù)的字節(jié)塊的邊界。由于首部選項(xiàng)的長度最多只有40字節(jié),而指明一個(gè)邊界就要用掉4字節(jié),因此在選項(xiàng)中最多只能指明4個(gè)字節(jié)塊的邊界信息。另外還需要兩個(gè)字節(jié)1個(gè)字節(jié)指明“SACK”選項(xiàng)。1個(gè)字節(jié)指明這個(gè)選項(xiàng)占用多少個(gè)字節(jié)。4.4.5TCP的流量控制

1利用滑動(dòng)窗口實(shí)現(xiàn)流量控制一般說來,我們總是希望數(shù)據(jù)傳輸?shù)酶煲恍?。但如果發(fā)送方把數(shù)據(jù)發(fā)送得過快,接收方就可能來不及接收,這就會(huì)造成數(shù)據(jù)的丟失。流量控制(flowcontrol)就是讓發(fā)送方的發(fā)送速率不要太快,既要讓接收方來得及接收,也不要使網(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é))”。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=100B丟失!持續(xù)計(jì)時(shí)器

(persistencetimer)。假定接收端的TCP通告窗口大小為零。發(fā)送方的TCP就停止傳送報(bào)文,直到接收端的TCP發(fā)送確認(rèn)并通告一個(gè)非零的窗口大小,這個(gè)確認(rèn)可能會(huì)丟失。對(duì)方的TCP都在永遠(yuǎn)地等待著對(duì)方,這就可能出現(xiàn)了死鎖;為了防止死鎖,TCP為每個(gè)連接使用一個(gè)堅(jiān)持計(jì)時(shí)器(或持續(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í)器。若窗口不是零,則死鎖的僵局就可以打破了。堅(jiān)持計(jì)時(shí)器的值設(shè)置為重傳時(shí)間值,這個(gè)值增大到門限值通常設(shè)定為60秒。

2必須考慮傳輸效率如何控制發(fā)送方TCP報(bào)文段的發(fā)送時(shí)機(jī):第一種機(jī)制是TCP維持一個(gè)變量,它等于最大報(bào)文段長度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)文段(但長度不能超過MSS)發(fā)送出去。如何控制接收方確認(rèn)報(bào)文段的發(fā)送時(shí)機(jī):糊涂窗口綜合癥:接收方發(fā)送只有1B的窗口更新報(bào)文。接收要等待一段時(shí)間,使得接收緩存已有足夠空間容納一個(gè)最大報(bào)文段,或緩存已有一半的空閑的空間。4.4.6TCP的擁塞控制

1.擁塞控制的一般原理在某段時(shí)間,若對(duì)網(wǎng)絡(luò)中某資源的需求超過了該資源所能提供的可用部分,網(wǎng)絡(luò)的性能就要變壞——產(chǎn)生擁塞(congestion)。出現(xiàn)資源擁塞的條件:對(duì)資源需求的總和>可用資源若網(wǎng)絡(luò)中有許多資源同時(shí)產(chǎn)生擁塞,網(wǎng)絡(luò)的性能就要明顯變壞,整個(gè)網(wǎng)絡(luò)的吞吐量將隨輸入負(fù)荷的增大而下降。擁塞控制與流量控制的關(guān)系擁塞控制是一個(gè)全局性的過程,涉及到所有的主機(jī)、所有的路由器,以及與降低網(wǎng)絡(luò)傳輸性能有關(guān)的所有因素。擁塞控制就是防止過多的數(shù)據(jù)注入到網(wǎng)絡(luò)中,這樣可以使網(wǎng)絡(luò)中的路由器或鏈路不致過載流量控制往往指在給定的發(fā)送端和接收端之間的點(diǎn)對(duì)點(diǎn)通信量的控制。流量控制所要做的就是抑制發(fā)送端發(fā)送數(shù)據(jù)的速率,以便使接收端來得及接收。擁塞控制所起的作用提供的負(fù)載吞吐量理想的擁塞控制實(shí)際的擁塞控制0死鎖(吞吐量=0)無擁塞控制擁塞輕度擁塞提供的負(fù)載:代表單位時(shí)間內(nèi)輸入給網(wǎng)絡(luò)的分組數(shù)目,也稱為輸入負(fù)載或網(wǎng)絡(luò)負(fù)載。吞吐量:代表單位時(shí)間內(nèi)從網(wǎng)絡(luò)輸出的分組數(shù)目。吞吐量達(dá)到飽和(輸入的某些分組被丟棄了)(吞吐量未達(dá)到飽和時(shí)就有輸入的分組被丟棄了)(吞吐量隨提供的負(fù)載的增大而下降)擁塞控制的一般原理擁塞控制是很難設(shè)計(jì)的,因?yàn)樗且粋€(gè)動(dòng)態(tài)的(而不是靜態(tài)的)問題。當(dāng)前網(wǎng)絡(luò)正朝著高速化的方向發(fā)展,這很容易出現(xiàn)緩存不夠大而造成分組的丟失。但分組的丟失是網(wǎng)絡(luò)發(fā)生擁塞的征兆而不是原因。開環(huán)控制和閉環(huán)控制開環(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)的問題。2.幾種擁塞控制方法

慢開始和擁塞避免發(fā)送方維持一個(gè)叫做擁塞窗口cwnd(congestionwindow)的狀態(tài)變量。擁塞窗口的大小取決于網(wǎng)絡(luò)的擁塞程度,并且動(dòng)態(tài)地在變化。發(fā)送方讓自己的發(fā)送窗口等于擁塞窗口。如再考慮到接收方的接收能力,則發(fā)送窗口還可能小于擁塞窗口。發(fā)送方控制擁塞窗口的原則是:只要網(wǎng)絡(luò)沒有出現(xiàn)擁塞,擁塞窗口就再增大一些,以便把更多的分組發(fā)送出去。但只要網(wǎng)絡(luò)出現(xiàn)擁塞,擁塞窗口就減小一些,以減少注入到網(wǎng)絡(luò)中的分組數(shù)。慢開始算法的原理在主機(jī)剛剛開始發(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ā)送方接收方發(fā)送M1

確認(rèn)M1發(fā)送M2~M3

確認(rèn)M2~M3發(fā)送M4~M7

確認(rèn)M4~M7cwnd=1cwnd=2cwnd=4發(fā)送M8~M15cwnd=8…tt發(fā)送方每收到一個(gè)對(duì)新報(bào)文段的確認(rèn)(重傳的不算在內(nèi))就使cwnd

加1。輪次1輪次2輪次3傳輸輪次

(transmissionround)使用慢開始算法后,每經(jīng)過一個(gè)傳輸輪次,擁塞窗口cwnd

就加倍。一個(gè)傳輸輪次所經(jīng)歷的時(shí)間其實(shí)就是往返時(shí)間RTT。“傳輸輪次”更加強(qiáng)調(diào):把擁塞窗口cwnd

所允許發(fā)送的報(bào)文段都連續(xù)發(fā)送出去,并收到了對(duì)已發(fā)送的最后一個(gè)字節(jié)的確認(rèn)。例如,擁塞窗口cwnd=4,這時(shí)的往返時(shí)間RTT就是發(fā)送方連續(xù)發(fā)送4個(gè)報(bào)文段,并收到這4個(gè)報(bào)文段的確認(rèn),總共經(jīng)歷的時(shí)間。設(shè)置慢開始門限狀態(tài)變量ssthresh慢開始門限ssthresh

的用法如下:當(dāng)cwnd<ssthresh

時(shí),使用慢開始算法。當(dāng)cwnd>ssthresh

時(shí),停止使用慢開始算法而改用擁塞避免算法。當(dāng)cwnd=ssthresh

時(shí),既可使用慢開始算法,也可使用擁塞避免算法。擁塞避免算法的思路是讓擁塞窗口cwnd

緩慢地增大,即每經(jīng)過一個(gè)往返時(shí)間RTT就把發(fā)送方的擁塞窗口cwnd

加1,而不是加倍,使擁塞窗口cwnd

按線性規(guī)律緩慢增長。當(dāng)網(wǎng)絡(luò)出現(xiàn)擁塞時(shí)無論在慢開始階段還是在擁塞避免階段,只要發(fā)送方判斷網(wǎng)絡(luò)出現(xiàn)擁塞(其根據(jù)就是沒有按時(shí)收到確認(rèn)),就要把慢開始門限ssthresh

設(shè)置為出現(xiàn)擁塞時(shí)的發(fā)送方窗口值的一半(但不能小于2)。然后把擁塞窗口cwnd

重新設(shè)置為1,執(zhí)行慢開始算法。這樣做的目的就是要迅速減少主機(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個(gè)報(bào)文段,即ssthresh=16?!俺朔p小”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

的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次慢開始和擁塞避免算法的實(shí)現(xiàn)舉例在執(zhí)行慢開始算法時(shí),擁塞窗口cwnd

的初始值為1,發(fā)送第一個(gè)報(bào)文段M0。

2216“乘法減小”24681012141618200048122024擁塞窗口cwnd新的ssthresh

值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh

的初始值慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次慢開始和擁塞避免算法的實(shí)現(xiàn)舉例發(fā)送端每收到一個(gè)確認(rèn),就把cwnd

加1。于是發(fā)送端可以接著發(fā)送M1和M2兩個(gè)報(bào)文段。2216“乘法減小”24681012141618200048122024擁塞窗口cwnd新的ssthresh

值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh

的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次慢開始和擁塞避免算法的實(shí)現(xiàn)舉例接收端共發(fā)回兩個(gè)確認(rèn)。發(fā)送端每收到一個(gè)對(duì)新報(bào)文段的確認(rèn),就把發(fā)送端的cwnd

加1?,F(xiàn)在cwnd

從2增大到4,并可接著發(fā)送后面的4個(gè)報(bào)文段。2216“乘法減小”24681012141618200048122024擁塞窗口cwnd新的ssthresh

值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh

的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次慢開始和擁塞避免算法的實(shí)現(xiàn)舉例發(fā)送端每收到一個(gè)對(duì)新報(bào)文段的確認(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新的ssthresh

值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh

的初始值慢開

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論