《數(shù)據(jù)通信技術(shù)(本科)》課件-項(xiàng)目5 傳輸層技術(shù)_第1頁
《數(shù)據(jù)通信技術(shù)(本科)》課件-項(xiàng)目5 傳輸層技術(shù)_第2頁
《數(shù)據(jù)通信技術(shù)(本科)》課件-項(xiàng)目5 傳輸層技術(shù)_第3頁
《數(shù)據(jù)通信技術(shù)(本科)》課件-項(xiàng)目5 傳輸層技術(shù)_第4頁
《數(shù)據(jù)通信技術(shù)(本科)》課件-項(xiàng)目5 傳輸層技術(shù)_第5頁
已閱讀5頁,還剩201頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

傳輸層技術(shù)1.1傳輸層基本功能應(yīng)用層運(yùn)輸層網(wǎng)絡(luò)層表示層會(huì)話層數(shù)據(jù)鏈路層物理層7654321OSI的七層協(xié)議體系結(jié)構(gòu)TCP/IP的四層協(xié)議體系結(jié)構(gòu)(a)(b)(c)五層協(xié)議的體系結(jié)構(gòu)4應(yīng)用層1網(wǎng)絡(luò)接口層2網(wǎng)際層IP(各種應(yīng)用層協(xié)議,如DNS,HTTP,SMTP等)3運(yùn)輸層(TCP或UDP)(這一層并沒有具體內(nèi)容)運(yùn)輸層網(wǎng)絡(luò)層應(yīng)用層數(shù)據(jù)鏈路層物理層54321計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)54321運(yùn)輸層提供應(yīng)用進(jìn)程間的邏輯通信主機(jī)A主機(jī)B應(yīng)用進(jìn)程應(yīng)用進(jìn)程路由器1路由器2AP1AP2AP3AP4IP層AP1AP2AP4AP3網(wǎng)絡(luò)層為主機(jī)之間的通信提供服務(wù)運(yùn)輸層為應(yīng)用層進(jìn)程之間的通信提供服務(wù)主機(jī)A的協(xié)議棧主機(jī)B的協(xié)議棧LAN2WANLAN154321復(fù)用分用,差錯(cuò)檢測運(yùn)輸層的作用互聯(lián)網(wǎng)應(yīng)用進(jìn)程AP應(yīng)用進(jìn)程AP邏輯通信信道屏蔽作用運(yùn)輸層向高層用戶屏蔽了下面網(wǎng)絡(luò)核心的細(xì)節(jié)(如網(wǎng)絡(luò)拓?fù)?、所采用的路由選擇協(xié)議等),使應(yīng)用進(jìn)程看見的就是好像在兩個(gè)運(yùn)輸層實(shí)體之間有一條端到端的邏輯通信信道。應(yīng)用層運(yùn)輸層全雙工可靠信道使用面向連接的協(xié)議,如TCP。接收進(jìn)程發(fā)送進(jìn)程數(shù)據(jù)數(shù)據(jù)?接收進(jìn)程數(shù)據(jù)使用無連接的協(xié)議,如UDP。不可靠信道發(fā)送進(jìn)程數(shù)據(jù)可靠信道與不可靠信道TCPUDPIP應(yīng)用層與各種網(wǎng)絡(luò)接口運(yùn)輸層運(yùn)輸層的兩個(gè)主要協(xié)議互聯(lián)網(wǎng)的正式標(biāo)準(zhǔn):用戶數(shù)據(jù)報(bào)協(xié)議UDP(UserDatagramProtocol)傳輸控制協(xié)議TCP

(TransmissionControlProtocol)運(yùn)輸協(xié)議數(shù)據(jù)單元兩個(gè)對等運(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)文或用戶數(shù)據(jù)報(bào)。UDP與TCP的區(qū)別UDP傳送數(shù)據(jù)之前不需要先建立連接。收到UDP報(bào)后,不需要給出任何確認(rèn)。不提供可靠交付,但是一種最有效的工作方式。TCP提供可靠的、面向連接的運(yùn)輸服務(wù)。不提供廣播或多播服務(wù)。開銷較多。IPTCPUDP運(yùn)輸層網(wǎng)絡(luò)層DNSDHCPRIP…域名解析服務(wù)動(dòng)態(tài)主機(jī)配置路由選擇…應(yīng)用層應(yīng)用TFTP文件傳輸專用協(xié)議流式多媒體通信HTTPSMTPFTP…萬維網(wǎng)WWW電子郵件文件傳送…TELNET遠(yuǎn)程終端接入使用UDP和TCP的典型應(yīng)用和應(yīng)用層協(xié)議DNS傳輸層技術(shù)1.2傳輸層端口54321運(yùn)輸層提供應(yīng)用進(jìn)程間的邏輯通信應(yīng)用進(jìn)程應(yīng)用進(jìn)程IP層AP1AP2AP4AP3主機(jī)A的協(xié)議棧主機(jī)B的協(xié)議棧54321復(fù)用分用運(yùn)輸層的端口復(fù)用:應(yīng)用進(jìn)程都可以通過運(yùn)輸層再傳送到IP層(網(wǎng)絡(luò)層)。分用:運(yùn)輸層從IP層收到發(fā)送給應(yīng)用進(jìn)程的數(shù)據(jù)后,必須分別交付給指明的各應(yīng)用進(jìn)程。如何指明各應(yīng)用進(jìn)程?需要考慮的問題進(jìn)程的創(chuàng)建和撤銷都是動(dòng)態(tài)的,因此發(fā)送方幾乎無法識(shí)別其他機(jī)器上的進(jìn)程。我們往往需要利用目的主機(jī)提供的功能來識(shí)別終點(diǎn),而不需要知道具體實(shí)現(xiàn)這個(gè)功能的進(jìn)程是哪一個(gè)。有時(shí)我們會(huì)改換接收報(bào)文的進(jìn)程,但并不需要通知所有的發(fā)送方。數(shù)據(jù)8058800端口5880080主機(jī)B主機(jī)A運(yùn)輸層運(yùn)輸層數(shù)據(jù)8058800目的端口源端口端口號(hào)(protocolportnumber)解決方法:在運(yùn)輸層使用協(xié)議端口號(hào)(protocolportnumber),或通常簡稱為端口

(port)。把端口設(shè)為通信的抽象終點(diǎn)。軟件端口與硬件端口軟件端口協(xié)議棧層間的抽象的協(xié)議端口。是應(yīng)用層的各種協(xié)議進(jìn)程與運(yùn)輸實(shí)體進(jìn)行層間交互的地點(diǎn)。不同系統(tǒng)實(shí)現(xiàn)端口的方法可以不同。硬件端口不同硬件設(shè)備進(jìn)行交互的接口。進(jìn)程端口號(hào)端口用一個(gè)16位端口號(hào)進(jìn)行標(biāo)志,允許有65,535個(gè)不同的端口號(hào)。端口號(hào)只具有本地意義,只是為了標(biāo)志本計(jì)算機(jī)應(yīng)用層中的各進(jìn)程。在互聯(lián)網(wǎng)中,不同計(jì)算機(jī)的相同端口號(hào)沒有聯(lián)系。708090P2P1P3192.168.1.7:80708090P2P1P3192.168.10.2:80端口由此可見,兩個(gè)計(jì)算機(jī)中的進(jìn)程要互相通信,不僅必須知道對方的端口號(hào),而且還要知道對方的IP地址。01023102449,15149,15265,535服務(wù)器端使用的端口號(hào)客戶端使用的端口號(hào)熟知端口(全球通用端口號(hào))(IANA負(fù)責(zé)分配)登記端口(在IANA登記)(為沒有熟知端口的應(yīng)用程序使用)短暫端口(通信結(jié)束后,被系統(tǒng)收回)兩大類、三種類型的端口UDPTCPIPSMTPFTPTelnetRPCDNSSNMPTFTP53161692523HTTP80HTTPS443SNMP(trap)2120162111常用的熟知端口傳輸層技術(shù)2.1UDP概述UDP概述復(fù)用和分用UDP只在IP的數(shù)據(jù)報(bào)服務(wù)之上增加了一些功能:差錯(cuò)檢測無連接。發(fā)送數(shù)據(jù)之前不需要建立連接。使用盡最大努力交付。即不保證可靠交付。面向報(bào)文。UDP一次傳送和交付一個(gè)完整的報(bào)文。沒有擁塞控制。網(wǎng)絡(luò)出現(xiàn)的擁塞不會(huì)使源主機(jī)的發(fā)送速率降低。很適合多媒體通信的要求。支持一對一、一對多、多對一、多對多等交互通信。首部開銷小,只有8個(gè)字節(jié)。UDP的主要特點(diǎn)UDP通信的特點(diǎn):簡單方便,但不可靠。IP數(shù)據(jù)報(bào)的數(shù)據(jù)部分IP首部IP層UDP首部UDP用戶數(shù)據(jù)報(bào)的數(shù)據(jù)部分運(yùn)輸層應(yīng)用層報(bào)文應(yīng)用層UDP是面向報(bào)文的發(fā)送方UDP對應(yīng)用層交下來的報(bào)文,既不合并,也不拆分,按照樣發(fā)送。接收方UDP對IP層交上來的UDP用戶數(shù)據(jù)報(bào),去除首部后就原封不動(dòng)地交付上層的應(yīng)用進(jìn)程,一次交付一個(gè)完整的報(bào)文。報(bào)文UDP數(shù)據(jù)UDP首部IP數(shù)據(jù)IP首部報(bào)文UDP數(shù)據(jù)UDP首部IP數(shù)據(jù)IP首部UDP是面向報(bào)文的應(yīng)用程序必須選擇合適大小的報(bào)文。若報(bào)文太長,IP層在傳送時(shí)可能要進(jìn)行分片,降低IP層的效率。若報(bào)文太短,會(huì)使IP數(shù)據(jù)報(bào)的首部的相對長度太大,降低IP層的效率。應(yīng)用層運(yùn)輸層端口abc(請注意:運(yùn)輸層之間的這條虛線不是一條連接,表示的是一條邏輯通道)xy運(yùn)輸層端口應(yīng)用進(jìn)程應(yīng)用進(jìn)程H1H2a→xb→xc→y復(fù)用分用不可靠的信道

P1P2P3

應(yīng)用層P4P5多對一的通信UDP通信和端口號(hào)的關(guān)系復(fù)用:將UDP用戶數(shù)據(jù)報(bào)組裝成不同的IP數(shù)據(jù)報(bào),發(fā)送到互聯(lián)網(wǎng)。分用:根據(jù)UDP用戶數(shù)據(jù)報(bào)首部中的目的端口號(hào),將數(shù)據(jù)報(bào)分別傳送到相應(yīng)的端口,以便應(yīng)用進(jìn)程到端口讀取數(shù)據(jù)。H2一對多的通信應(yīng)用層運(yùn)輸層端口abc(請注意:運(yùn)輸層之間的這條虛線不是一條連接,表示的是一條邏輯通道)xy運(yùn)輸層端口應(yīng)用進(jìn)程應(yīng)用進(jìn)程H1復(fù)用分用不可靠的信道

P1P2P3

應(yīng)用層P4P5a→xa→yc→yUDP通信和端口號(hào)的關(guān)系復(fù)用:將UDP用戶數(shù)據(jù)報(bào)組裝成不同的IP數(shù)據(jù)報(bào),發(fā)送到互聯(lián)網(wǎng)。分用:根據(jù)UDP用戶數(shù)據(jù)報(bào)首部中的目的端口號(hào),將數(shù)據(jù)報(bào)分別傳送到相應(yīng)的端口,以便應(yīng)用進(jìn)程到端口讀取數(shù)據(jù)。傳輸層技術(shù)2.2UDP報(bào)文格式源端口目的端口長度檢驗(yàn)和2222首部字段:8個(gè)字節(jié),4個(gè)字段,每個(gè)字段為2個(gè)字節(jié)。字節(jié)數(shù)據(jù)首部IP數(shù)據(jù)報(bào)發(fā)送在前2個(gè)字段:首部,數(shù)據(jù)。數(shù)據(jù)首部UDP用戶數(shù)據(jù)報(bào)UDP的首部格式源端口:源端口號(hào)。在需要對方回信時(shí)選用。不需要時(shí)可用全0。目的端口:目的端口號(hào)。終點(diǎn)交付報(bào)文時(shí)必須使用。長度:UDP用戶數(shù)據(jù)報(bào)的長度,其最小值是8(僅有首部)。檢驗(yàn)和:檢測UDP用戶數(shù)據(jù)報(bào)在傳輸中是否有錯(cuò)。有錯(cuò)就丟棄。用戶數(shù)據(jù)報(bào)UDP有兩個(gè)部分:數(shù)據(jù)字段和首部字段。首部字段有8個(gè)字節(jié),由4個(gè)字段組成,每個(gè)字段都是2個(gè)字節(jié)。偽首部源端口目的端口長度檢驗(yàn)和數(shù)據(jù)首部UDP長度源IP地址目的IP地址017IP數(shù)據(jù)報(bào)字節(jié)44112122222字節(jié)發(fā)送在前數(shù)據(jù)首部UDP用戶數(shù)據(jù)報(bào)IP層UDP報(bào)文到達(dá)端口2端口3端口1UDP分用UDP基于端口的分用接收方UDP根據(jù)首部中的目的端口號(hào),把報(bào)文通過相應(yīng)的端口上交給應(yīng)用進(jìn)程。如果接收方UDP發(fā)現(xiàn)收到的報(bào)文中的目的端口號(hào)不正確(即不存在對應(yīng)于該端口號(hào)的應(yīng)用進(jìn)程),就丟棄該報(bào)文,并由ICMP發(fā)送“端口不可達(dá)”差錯(cuò)報(bào)文給發(fā)送方。在計(jì)算檢驗(yàn)和時(shí),臨時(shí)把12字節(jié)的“偽首部”和UDP用戶數(shù)據(jù)報(bào)連接在一起。偽首部僅僅是為了計(jì)算檢驗(yàn)和(不傳輸)。偽首部源端口目的端口長度檢驗(yàn)和數(shù)據(jù)首部UDP長度源IP地址目的IP地址017IP數(shù)據(jù)報(bào)字節(jié)44112122222字節(jié)發(fā)送在前數(shù)據(jù)首部UDP用戶數(shù)據(jù)報(bào)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)和按二進(jìn)制反碼運(yùn)算求和將得出的結(jié)果求反碼04112字節(jié)偽首部8字節(jié)UDP首部7字節(jié)數(shù)據(jù)填充UDP的檢驗(yàn)和是把首部和數(shù)據(jù)部分一起都檢驗(yàn)。全0171510871315全0數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)全0計(jì)算UDP檢驗(yàn)和的例子接收端計(jì)算結(jié)果為全1,證明正確傳輸層技術(shù)3.1TCP特點(diǎn)TCP最主要的特點(diǎn)TCP是面向連接的運(yùn)輸層協(xié)議,在無連接的、不可靠的IP網(wǎng)絡(luò)服務(wù)基礎(chǔ)之上提供可靠交付的服務(wù)。為此,在IP的數(shù)據(jù)報(bào)服務(wù)基礎(chǔ)之上,增加了保證可靠性的一系列措施。TCP最主要的特點(diǎn)TCP是面向連接的運(yùn)輸層協(xié)議。每一條TCP連接只能有兩個(gè)端點(diǎn)(endpoint),每一條TCP連接只能是點(diǎn)對點(diǎn)的(一對一)。TCP提供可靠交付的服務(wù)。TCP提供全雙工通信。面向字節(jié)流1.TCP中的“流”(stream)指的是流入或流出進(jìn)程的字節(jié)序列。2.面向字節(jié)流:雖然應(yīng)用程序和TCP的交互是一次一個(gè)數(shù)據(jù)塊,但TCP把應(yīng)用程序交下來的數(shù)據(jù)看成僅僅是一連串無結(jié)構(gòu)的字節(jié)流。TCP面向流的概念TCP不保證接收方應(yīng)用程序所收到的數(shù)據(jù)塊和發(fā)送方應(yīng)用程序所發(fā)出的數(shù)據(jù)塊具有對應(yīng)大小的關(guān)系。但接收方應(yīng)用程序收到的字節(jié)流必須和發(fā)送方應(yīng)用程序發(fā)出的字節(jié)流完全一樣。768H

發(fā)送TCP報(bào)文段發(fā)送方接收方把字節(jié)寫入發(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連接(虛連接,邏輯連接)TCP面向流的概念

端口…TCP…TCP接收緩存發(fā)送緩存端口發(fā)送端接收端向發(fā)送緩存寫入數(shù)據(jù)塊從接收緩存讀取數(shù)據(jù)塊應(yīng)用進(jìn)程應(yīng)用進(jìn)程

TCP不關(guān)心應(yīng)用進(jìn)程一次把多長的報(bào)文發(fā)送到TCP緩存。TCP根據(jù)對方給出的窗口值和當(dāng)前網(wǎng)絡(luò)擁塞程度來決定一個(gè)報(bào)文段應(yīng)包含多少個(gè)字節(jié),形成TCP報(bào)文段。TCP連接(虛連接,邏輯連接)報(bào)文段報(bào)文段報(bào)文段…TCP面向流的概念傳輸層技術(shù)3.2TCP連接端口服務(wù)器客戶TCPTCP客戶每一條TCP連接有兩個(gè)端點(diǎn)。TCP連接套接字TCP連接的端點(diǎn):套接字(socket)或插口。TCP的連接TCP把連接作為最基本的抽象。例如:套接字(socket)套接字socket=(IP地址:端口號(hào))套接字socket=(0:2028)每一條TCP連接唯一地被通信兩端的兩個(gè)端點(diǎn)(即兩個(gè)套接字)所確定:TCP連接::={socket1,socket2}={(IP1:port1),(IP2:port2)}TCP連接,IP地址,套接字TCP連接就是由協(xié)議軟件所提供的一種抽象。TCP連接的端點(diǎn)是抽象的套接字,即(IP地址:端口號(hào))。同一個(gè)IP地址可以有多個(gè)不同的TCP連接。同一個(gè)端口號(hào)也可以出現(xiàn)在多個(gè)不同的TCP連接中。Socket有多種不同的意思應(yīng)用編程接口API稱為socketAPI,簡稱為socket。socketAPI中使用的一個(gè)函數(shù)名也叫作socket。調(diào)用socket函數(shù)的端點(diǎn)稱為socket。調(diào)用socket函數(shù)時(shí)其返回值稱為socket描述符,可簡稱為socket。在操作系統(tǒng)內(nèi)核中連網(wǎng)協(xié)議的Berkeley實(shí)現(xiàn),稱為socket實(shí)現(xiàn)。傳輸層技術(shù)4.1停止等待協(xié)議IP網(wǎng)絡(luò)提供的是不可靠的傳輸不可靠傳輸理想傳輸條件的特點(diǎn)1.傳輸信道不產(chǎn)生差錯(cuò)。2.不管發(fā)送方以多快的速度發(fā)送數(shù)據(jù),接收方總是來得及處理收到的數(shù)據(jù)。在理想傳輸條件下,不需要采取任何措施就能夠?qū)崿F(xiàn)可靠傳輸。但實(shí)際網(wǎng)絡(luò)都不具備理想傳輸條件。必須使用一些可靠傳輸協(xié)議,在不可靠的傳輸信道實(shí)現(xiàn)可靠傳輸。停止等待協(xié)議每發(fā)送完一個(gè)分組就停止發(fā)送,等待對方的確認(rèn)。在收到確認(rèn)后再發(fā)送下一個(gè)分組。全雙工通信的雙方既是發(fā)送方也是接收方。假設(shè)僅考慮A發(fā)送數(shù)據(jù),而B接收數(shù)據(jù)并發(fā)送確認(rèn)。因此A叫做發(fā)送方,而B叫做接收方。A發(fā)送完分組M1后就暫停發(fā)送,等待B的確認(rèn)(ACK)。B收到M1

向A發(fā)送ACK。A在收到了對M1

的確認(rèn)后,就再發(fā)送下一個(gè)分組M2。M1M2ACK1ACK2停止發(fā)送,等待ACK收到ACK,繼續(xù)發(fā)送確認(rèn)M1確認(rèn)M2時(shí)間時(shí)間停止發(fā)送,等待ACKAB1.無差錯(cuò)情況2.出現(xiàn)差錯(cuò)兩種情況:B接收M1時(shí)檢測出了差錯(cuò),就丟棄M1,其他什么也不做(不通知A收到有差錯(cuò)的分組)。M1在傳輸過程中丟失了,這時(shí)B當(dāng)然什么都不知道,也什么都不做。在這兩種情況下,B都不會(huì)發(fā)送任何信息。2.出現(xiàn)差錯(cuò)問題:A如何知道B是否正確收到了M1呢?解決方法:超時(shí)重傳A為每一個(gè)已發(fā)送的分組設(shè)置一個(gè)超時(shí)計(jì)時(shí)器。A只要在超時(shí)計(jì)時(shí)器到期之前收到了相應(yīng)的確認(rèn),就撤銷該超時(shí)計(jì)時(shí)器,繼續(xù)發(fā)送下一個(gè)分組M2。若A在超時(shí)計(jì)時(shí)器規(guī)定時(shí)間內(nèi)沒有收到B的確認(rèn),就認(rèn)為分組錯(cuò)誤或丟失,就重發(fā)該分組。分組錯(cuò)誤ABM1M1ACK1丟棄超時(shí)重傳toutABM1M1分組丟失ACK1超時(shí)重傳tout啟動(dòng)超時(shí)計(jì)時(shí)器

,等待ACK啟動(dòng)超時(shí)計(jì)時(shí)器

,等待ACK確認(rèn)M1確認(rèn)M12.出現(xiàn)差錯(cuò)3.確認(rèn)丟失和確認(rèn)遲到確認(rèn)丟失若B所發(fā)送的對M1的確認(rèn)丟失了,那么A在設(shè)定的超時(shí)重傳時(shí)間內(nèi)將不會(huì)收到確認(rèn),因此A在超時(shí)計(jì)時(shí)器到期后重傳

M1。假定B正確收到了A重傳的分組M1。這時(shí)B應(yīng)采取兩個(gè)行動(dòng):(1)丟棄這個(gè)重復(fù)的分組M1,不向上層交付。(2)向A發(fā)送確認(rèn)。3.確認(rèn)丟失和確認(rèn)遲到確認(rèn)遲到B對分組M1的確認(rèn)遲到了,因此A在超時(shí)計(jì)時(shí)器到期后重傳

M1。B會(huì)收到重復(fù)的M1,丟棄重復(fù)的M1,并重傳確認(rèn)分組。A會(huì)收到重復(fù)的確認(rèn)。對重復(fù)的確認(rèn)的處理:丟棄。ABM1M1確認(rèn)丟失ACK1超時(shí)重傳toutACK1ABM1M1確認(rèn)遲到ACK1超時(shí)重傳toutM2重復(fù)ACK1,丟棄等待ACK2

ACK1重復(fù),丟棄確認(rèn)M1

重復(fù),丟棄確認(rèn)M1

確認(rèn)M1確認(rèn)M1發(fā)送下一個(gè)3.確認(rèn)丟失和確認(rèn)遲到優(yōu)點(diǎn):簡單。缺點(diǎn):信道利用率太低。TDRTTATD+RTT+TAB分組確認(rèn)tt分組確認(rèn)(5-3)信道利用率當(dāng)往返時(shí)間RTT遠(yuǎn)大于分組發(fā)送時(shí)間TD

時(shí),信道的利用率會(huì)非常低。4.信道利用率停止等待協(xié)議要點(diǎn)停止等待。發(fā)送方每次只發(fā)送一個(gè)分組。在收到確認(rèn)后再發(fā)送下一個(gè)分組。暫存:在發(fā)送完一個(gè)分組后,發(fā)送方必須暫存已發(fā)送的分組的副本,以備重發(fā)。編號(hào)。對發(fā)送的每個(gè)分組和確認(rèn)都進(jìn)行編號(hào)。超時(shí)重傳。發(fā)送方為發(fā)送的每個(gè)分組設(shè)置一個(gè)超時(shí)計(jì)時(shí)器。若超時(shí)計(jì)時(shí)器超時(shí)位收到確認(rèn),發(fā)送方會(huì)自動(dòng)超時(shí)重傳分組。超時(shí)計(jì)時(shí)器的重傳時(shí)間應(yīng)當(dāng)比數(shù)據(jù)在分組傳輸?shù)钠骄禃r(shí)間更長一些,防止不必要的重傳。簡單,但信道利用率太低。由于信道上一直有數(shù)據(jù)不間斷地傳送,流水線傳輸可獲得很高的信道利用率。B分組ttAACK流水線傳輸:在收到確認(rèn)之前,發(fā)送方連續(xù)發(fā)出多個(gè)分組。連續(xù)ARQ協(xié)議和滑動(dòng)窗口協(xié)議采用流水線傳輸方式。提高傳輸效率:流水線傳輸傳輸層技術(shù)4.2連續(xù)ARQ協(xié)議連續(xù)ARQ協(xié)議發(fā)送窗口:發(fā)送方維持一個(gè)發(fā)送窗口,位于發(fā)送窗口內(nèi)的分組都可被連續(xù)發(fā)送出去,而不需要等待對方的確認(rèn)。發(fā)送窗口滑動(dòng):發(fā)送方每收到一個(gè)確認(rèn),就把發(fā)送窗口向前滑動(dòng)一個(gè)分組的位置。累積確認(rèn):接收方對按序到達(dá)的最后一個(gè)分組發(fā)送確認(rèn),表示:到這個(gè)分組為止的所有分組都已正確收到了。123456789101112(a)發(fā)送方維持發(fā)送窗口(發(fā)送窗口大小是5)發(fā)送窗口(b)收到一個(gè)確認(rèn)后,發(fā)送窗口向前滑動(dòng)窗口向前滑動(dòng)發(fā)送窗口被確認(rèn)123456789101112發(fā)送窗口M3

正確M4

正確M5

正確M0M1M4M5ACK0ACK1

確認(rèn)M0,將M0

提交給上層協(xié)議或用戶ACK2

確認(rèn)M1,將M1

提交給上層協(xié)議或用戶M2

正確ACK5

為累積確認(rèn),表示M5

及之前的M2、M3、M4

都正確。將M2、M3、M4、M5提交給上層協(xié)議或用戶ACK5M2ACK1M3累積確認(rèn)連續(xù)ARQ協(xié)議采用Go-back-N(回退N)。Go-back-N(回退N):表示需要再退回來重傳已發(fā)送過的N個(gè)分組。當(dāng)通信線路質(zhì)量不好時(shí),連續(xù)ARQ協(xié)議會(huì)帶來負(fù)面的影響。累積確認(rèn)優(yōu)點(diǎn)容易實(shí)現(xiàn),即使確認(rèn)丟失也不必重傳。缺點(diǎn)不能向發(fā)送方反映出接收方已經(jīng)正確收到的所有分組的信息。選擇性重傳只重傳沒有被確認(rèn)的分組減少重傳的數(shù)據(jù)量管理復(fù)雜,需要接收端緩存失序的數(shù)據(jù)

發(fā)送方接收方網(wǎng)絡(luò)01234567012…01234567012…DATA3DATA2DATA1DATA0選擇性重傳

發(fā)送方接收方網(wǎng)絡(luò)01234567012…01234567012…ACK1ACK2ACK3選擇性重傳

發(fā)送方接收方網(wǎng)絡(luò)01234567012…01234567012…超時(shí)DATA0選擇性重傳重傳

發(fā)送方接收方網(wǎng)絡(luò)01234567012…01234567012…DATA0選擇性重傳

發(fā)送方接收方網(wǎng)絡(luò)01234567012…01234567012…ACK0選擇性重傳

發(fā)送方接收方網(wǎng)絡(luò)01234567012…01234567012…ACK0選擇性重傳

發(fā)送方接收方網(wǎng)絡(luò)01234567012…01234567012…選擇性重傳差錯(cuò)控制常用方法停止-等待協(xié)議回退N幀協(xié)議選擇重傳協(xié)議實(shí)現(xiàn)簡單性能差、延時(shí)長發(fā)一個(gè)-等確認(rèn)-再發(fā)下一個(gè)

不用管理窗口和緩存連續(xù)發(fā),信道利用率高性能較差發(fā)多個(gè)-有錯(cuò)誤-重發(fā)錯(cuò)誤后的N個(gè)

實(shí)現(xiàn)較簡單連續(xù)發(fā),信道利用率高性能好只重傳錯(cuò)誤的數(shù)據(jù)

實(shí)現(xiàn)復(fù)雜傳輸層技術(shù)5.TCP首部5.5TCP報(bào)文段的首部格式TCP雖然是面向字節(jié)流的,但TCP傳送的數(shù)據(jù)單元卻是報(bào)文段。一個(gè)TCP報(bào)文段分為首部和數(shù)據(jù)兩部分,而TCP的全部功能都體現(xiàn)在它首部中各字段的作用。TCP報(bào)文段首部的前20個(gè)字節(jié)是固定的,后面有4n字節(jié)是根據(jù)需要而增加的選項(xiàng)(n是整數(shù))。因此TCP首部的最小長度是20字節(jié)。TCP首部20字節(jié)的固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FIN32位SYNRSTPSHACKURG填充TCP數(shù)據(jù)部分TCP首部TCP報(bào)文段IP數(shù)據(jù)報(bào)的

數(shù)據(jù)部分IP首部發(fā)送在前位08162431IP數(shù)據(jù)報(bào)TCP首部的長度是4n字節(jié)(n是整數(shù))。TCP首部的最小長度是20字節(jié)。5.5TCP報(bào)文段的首部格式我正在發(fā)送的編號(hào)你可以發(fā)送的編號(hào)我能接收多少TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG填充源端口和目的端口:各占2字節(jié)。端口是運(yùn)輸層與應(yīng)用層的服務(wù)接口。運(yùn)輸層的復(fù)用和分用功能通過端口實(shí)現(xiàn)。位0816243120字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG填充序號(hào):占4字節(jié)。TCP連接中傳送的數(shù)據(jù)流中的每一個(gè)字節(jié)都有一個(gè)序號(hào)。序號(hào)字段的值則指的是本報(bào)文段所發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。位08162431TCP首部現(xiàn)有5000個(gè)字節(jié)的數(shù)據(jù)。假設(shè)報(bào)文段的最大數(shù)據(jù)長度為1000個(gè)字節(jié),初始序號(hào)為1001。報(bào)文段1序號(hào)=1001(數(shù)據(jù)字節(jié)序號(hào):1001~2000)報(bào)文段2序號(hào)=2001(數(shù)據(jù)字節(jié)序號(hào):2001~3000)報(bào)文段3序號(hào)=3001

(數(shù)據(jù)字節(jié)序號(hào):3001~4000)報(bào)文段4序號(hào)=4001

(數(shù)據(jù)字節(jié)序號(hào):4001~5000)報(bào)文段5序號(hào)=5001

(數(shù)據(jù)字節(jié)序號(hào):5001~6000)20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG填充確認(rèn)號(hào):占4字節(jié),是期望收到對方的下一個(gè)報(bào)文段的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。位08162431TCP首部記住:若確認(rèn)號(hào)=N,則表明:到序號(hào)N–1為止的所有數(shù)據(jù)都已正確收到。20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG填充數(shù)據(jù)偏移(即首部長度):占4位,指出TCP報(bào)文段的數(shù)據(jù)部分起始處距離TCP報(bào)文段的起始處有多遠(yuǎn)。單位是32位字(以4字節(jié)為計(jì)算單位)。也叫做首部長度。位08162431TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG填充保留:占6位,保留為今后使用,但目前應(yīng)置為0。位08162431TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG填充緊急URG:控制位。當(dāng)URG=1時(shí),表明緊急指針字段有效,告訴系統(tǒng)此報(bào)文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級(jí)的數(shù)據(jù))。位08162431TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG填充確認(rèn)ACK:控制位。只有當(dāng)ACK=1時(shí),確認(rèn)號(hào)字段才有效。當(dāng)ACK=0時(shí),確認(rèn)號(hào)無效。位08162431TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG填充推送PSH(PuSH):控制位。接收TCP收到PSH=1的報(bào)文段后,就盡快(即“推送”向前)交付接收應(yīng)用進(jìn)程,而不再等到整個(gè)緩存都填滿后再交付。位08162431TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG填充復(fù)位RST(ReSeT):控制位。當(dāng)RST=1時(shí),表明TCP連接中出現(xiàn)嚴(yán)重差錯(cuò)(如主機(jī)崩潰或其他原因),必須釋放連接,然后再重新建立運(yùn)輸連接。位08162431TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG填充同步SYN(SYNchronization):控制位。同步SYN=1表示這是一個(gè)連接請求或連接接受報(bào)文。當(dāng)SYN=1,ACK=0時(shí),表明這是一個(gè)連接請求報(bào)文段。當(dāng)SYN=1,ACK=1時(shí),表明這是一個(gè)連接接受報(bào)文段。位08162431TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG填充終止FIN(FINish):控制位。用來釋放一個(gè)連接。FIN=1表明此報(bào)文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運(yùn)輸連接。位08162431TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG填充窗口:占2字節(jié)。窗口值告訴對方:從本報(bào)文段首部中的確認(rèn)號(hào)算起,接收方目前允許對方發(fā)送的數(shù)據(jù)量(以字節(jié)為單位)。位08162431TCP首部記住:窗口字段明確指出了現(xiàn)在允許對方發(fā)送的數(shù)據(jù)量。窗口值經(jīng)常在動(dòng)態(tài)變化。20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG填充檢驗(yàn)和:占2字節(jié)。檢驗(yàn)和字段檢驗(yàn)的范圍包括首部和數(shù)據(jù)這兩部分。在計(jì)算檢驗(yàn)和時(shí),要在TCP報(bào)文段的前面加上12字節(jié)的偽首部。位08162431TCP首部在計(jì)算檢驗(yàn)和時(shí),臨時(shí)把12字節(jié)的“偽首部”和TCP報(bào)文段連接在一起。偽首部僅僅是為了計(jì)算檢驗(yàn)和。偽首部TCP首部數(shù)據(jù)首部TCP總長度源IP地址目的IP地址06IP數(shù)據(jù)報(bào)字節(jié)4411212字節(jié)發(fā)送在前數(shù)據(jù)首部TCP報(bào)文段20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG填充緊急指針:占2字節(jié)。在URG=1時(shí),指出本報(bào)文段中的緊急數(shù)據(jù)的字節(jié)數(shù)(緊急數(shù)據(jù)結(jié)束后就是普通數(shù)據(jù)),指出了緊急數(shù)據(jù)的末尾在報(bào)文段中的位置。位08162431TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG填充選項(xiàng):長度可變,最長可達(dá)40字節(jié)。位08162431TCP首部填充:使整個(gè)TCP首部長度是4字節(jié)的整數(shù)倍。20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG填充位08162431TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG填充選項(xiàng):長度可變,最長可達(dá)40字節(jié)。——長度可變。TCP最初只規(guī)定了一種選項(xiàng),即最大報(bào)文段長度MSS。MSS告訴對方TCP:“我的緩存所能接收的報(bào)文段的數(shù)據(jù)字段的最大長度是MSS個(gè)字節(jié)?!蔽?8162431MSS(MaximumSegmentSize)是TCP報(bào)文段中的數(shù)據(jù)字段的最大長度。數(shù)據(jù)字段加上TCP首部才等于整個(gè)的TCP報(bào)文段。所以,MSS是“TCP報(bào)文段長度減去TCP首部長度”。TCP首部選項(xiàng)(2):最大報(bào)文段長度MSS最大報(bào)文段長度MSS(MaximumSegmentSize)是每個(gè)TCP報(bào)文段中的數(shù)據(jù)字段的最大長度。與接收窗口值沒有關(guān)系。TCP報(bào)文段長度=數(shù)據(jù)字段長度+TCP首部長度數(shù)據(jù)字段長度=TCP報(bào)文段長度–TCP首部長度鏈路層首部鏈路層尾部IP首部TCP首部數(shù)據(jù)TCP報(bào)文段MSSMTUIP數(shù)據(jù)報(bào)選項(xiàng)(2):最大報(bào)文段長度MSS不能太小網(wǎng)絡(luò)利用率降低。例如:僅1個(gè)字節(jié)。利用率就不會(huì)超過1/41。不能太大開銷增大。分片傳輸出錯(cuò)時(shí),要整個(gè)分組。應(yīng)盡可能大只要在IP層傳輸時(shí)不再分片。默認(rèn)值=536字節(jié)。報(bào)文段長度=536+20=556字節(jié)。IP數(shù)據(jù)報(bào)長度=576字節(jié)。主機(jī)A主機(jī)Bt1

64KB窗口t2

t3

t4

選項(xiàng)(3):窗口擴(kuò)大TCP窗口字段長度=16位,最大窗口大小=64K字節(jié)。對于傳播時(shí)延和帶寬都很大的網(wǎng)絡(luò),為獲得高吞吐率較,需要更大的窗口。主機(jī)A主機(jī)Bt2

t1

256KB窗口到達(dá)的選項(xiàng)(3):窗口擴(kuò)大窗口擴(kuò)大選項(xiàng):占3字節(jié),其中一個(gè)字節(jié)表示移位值S。新的窗口值位數(shù)從16增大到(16+S),相當(dāng)于把窗口值向左移動(dòng)S位。移位值允許使用的最大值是14,窗口最大值增大到2(16+14)–1=230–1。窗口擴(kuò)大選項(xiàng)可以在雙方初始建立TCP連接時(shí)進(jìn)行協(xié)商。選項(xiàng)(8):時(shí)間戳占10字節(jié)。最主要的2個(gè)字段:時(shí)間戳值字段(4字節(jié))和時(shí)間戳回送回答字段(4字節(jié))。2個(gè)主要功能:計(jì)算往返時(shí)間RTT防止序號(hào)繞回PAWS(ProtectAgainstWrappedSequencenumbers)。序號(hào)重復(fù)時(shí),為了使接收方能夠把新報(bào)文段和遲到很久的舊報(bào)文段區(qū)分開,可以在報(bào)文段中加上時(shí)間戳。TCP首部分析抓包分析TCP首部:傳輸層技術(shù)6.1TCP滑動(dòng)窗口以字節(jié)為單位的滑動(dòng)窗口TCP使用流水線傳輸和滑動(dòng)窗口協(xié)議實(shí)現(xiàn)高效、可靠的傳輸。TCP的滑動(dòng)窗口是以字節(jié)為單位的。發(fā)送方A和接收方B分別維持一個(gè)發(fā)送窗口和一個(gè)接收窗口。發(fā)送窗口:在沒有收到確認(rèn)的情況下,發(fā)送方可以連續(xù)把窗口內(nèi)的數(shù)據(jù)全部發(fā)送出去。凡是已經(jīng)發(fā)送過的數(shù)據(jù),在未收到確認(rèn)之前都必須暫時(shí)保留,以便在超時(shí)重傳時(shí)使用。接收窗口:只允許接收落入窗口內(nèi)的數(shù)據(jù)。前移待發(fā)送,但當(dāng)前不允許發(fā)送已發(fā)送并收到確認(rèn)A的發(fā)送窗口=20允許發(fā)送的序號(hào)26272829303132333435363738394041424344454647484950515253545556B期望收到的序號(hào)前沿后沿前移收縮發(fā)送窗口A根據(jù)B給出的窗口值,構(gòu)造出自己的發(fā)送窗口。發(fā)送窗口里面的序號(hào)表示允許發(fā)送的序號(hào)。窗口越大,發(fā)送方就可以在收到對方確認(rèn)之前連續(xù)發(fā)送更多的數(shù)據(jù),因而可能獲得更高的傳輸效率。待發(fā)送,但當(dāng)前不允許發(fā)送已發(fā)送并收到確認(rèn)A的發(fā)送窗口=20允許發(fā)送的序號(hào)26272829303132333435363738394041424344454647484950515253545556B期望收到的序號(hào)前沿后沿前移前移收縮發(fā)送窗口A根據(jù)B給出的窗口值,構(gòu)造出自己的發(fā)送窗口。發(fā)送窗口里面的序號(hào)表示允許發(fā)送的序號(hào)。窗口越大,發(fā)送方就可以在收到對方確認(rèn)之前連續(xù)發(fā)送更多的數(shù)據(jù),因而可能獲得更高的傳輸效率。假定A發(fā)送了序號(hào)為31~41共11個(gè)字節(jié)的數(shù)據(jù)P1=后沿,P2=當(dāng)前,P3=前沿。P3–P1=A的發(fā)送窗口(又稱為通知窗口)P2–P1=已發(fā)送但尚未收到確認(rèn)的字節(jié)數(shù)P3–P2=允許發(fā)送但尚未發(fā)送的字節(jié)數(shù)(又稱為可用窗口)待發(fā)送,但當(dāng)前不允許發(fā)送已發(fā)送并收到確認(rèn)A的發(fā)送窗口=20字節(jié),未收到確認(rèn)前位置不變允許發(fā)送但尚未發(fā)送262728293031323334353637383940414243444546474849505152535455已發(fā)送但未收到確認(rèn)56P1P2P3可用窗口發(fā)送窗口不允許接收已發(fā)送確認(rèn)并交付主機(jī)B的接收窗口=20字節(jié)允許接收26272829303132333435363738394041424344454647484950515253545556未按序收到B收到了序號(hào)為32和33的數(shù)據(jù),但未收到序號(hào)為31的數(shù)據(jù)。因此,因此發(fā)送的確認(rèn)報(bào)文段中的確認(rèn)號(hào)是31(即期望收到的序號(hào))。接收窗口不允許接收已發(fā)送確認(rèn)并交付主機(jī)B的接收窗口=20字節(jié)允許接收26272829303132333435363738394041424344454647484950515253545556收到待發(fā)送,但當(dāng)前不允許發(fā)送已發(fā)送并收到確認(rèn)26272829303132333435363738394041424344454647484950515253545556P1P2P3ACK=1,確認(rèn)號(hào)=31,窗口=20A的發(fā)送窗口=20窗口的滑動(dòng)窗口的滑動(dòng)不允許接收已發(fā)送確認(rèn)并交付主機(jī)B的接收窗口=20字節(jié)允許接收26272829303132333435363738394041424344454647484950515253545556待發(fā)送,但當(dāng)前不允許發(fā)送已發(fā)送并收到確認(rèn)26272829303132333435363738394041424344454647484950515253545556P1P2P3序號(hào)=31,確認(rèn)號(hào)=x,窗口=wA的發(fā)送窗口=20窗口的滑動(dòng)不允許接收已發(fā)送確認(rèn)并交付主機(jī)允許接收B的接收窗口=20字節(jié)26272829303132333435363738394041424344454647484950515253545556待發(fā)送,但當(dāng)前不允許發(fā)送已發(fā)送并收到確認(rèn)26272829303132333435363738394041424344454647484950515253545556P1P2P3序號(hào)=31,確認(rèn)號(hào)=x,窗口=wA的發(fā)送窗口=20前移窗口的滑動(dòng)不允許接收已發(fā)送確認(rèn)并交付主機(jī)B的接收窗口=20字節(jié)允許接收26272829303132333435363738394041424344454647484950515253545556待發(fā)送,但當(dāng)前不允許發(fā)送已發(fā)送并收到確認(rèn)26272829303132333435363738394041424344454647484950515253545556P1P2P3ACK=1,確認(rèn)號(hào)=34,窗口=20A的發(fā)送窗口=20收到窗口的滑動(dòng)不允許接收已發(fā)送確認(rèn)并交付主機(jī)B的接收窗口=20字節(jié)允許接收26272829303132333435363738394041424344454647484950515253545556不允許發(fā)送已發(fā)送并收到確認(rèn)26272829303132333435363738394041424344454647484950515253545556P1P2P3ACK=1,確認(rèn)號(hào)=34,窗口=20A的發(fā)送窗口=20收到可用窗口增大不允許發(fā)送已發(fā)送并收到確認(rèn)P1A的發(fā)送窗口=20字節(jié)(已滿,可用窗口=0)2627282930313233343536373839404153545556P2P3可用窗口=0停止發(fā)送序號(hào)=34,確認(rèn)號(hào)=x,窗口=u已發(fā)送但未收到確認(rèn)424344454647484950515253窗口的滑動(dòng)A未收到確認(rèn)的原因有:①

B未發(fā)送;②B已發(fā)送,但還未到達(dá)A。為保證可靠傳輸,A只能認(rèn)為B還沒有收到這些數(shù)據(jù)。A經(jīng)過一段時(shí)間后(由超時(shí)計(jì)時(shí)器控制)就重傳這部分?jǐn)?shù)據(jù),重新設(shè)置超時(shí)計(jì)時(shí)器,直到收到B的確認(rèn)為止。如果A按序收到落在發(fā)送窗口內(nèi)的確認(rèn)號(hào),就使發(fā)送窗口向前滑動(dòng),并發(fā)送新的數(shù)據(jù)。P2不允許發(fā)送已發(fā)送并收到確認(rèn)P1A的發(fā)送窗口=20字節(jié)(已滿,可用窗口=0)2627282930313233343536373839404153545556P2P3可用窗口=0停止發(fā)送序號(hào)=34,確認(rèn)號(hào)=x,窗口=u已發(fā)送但未收到確認(rèn)424344454647484950515253窗口的滑動(dòng)A未收到確認(rèn)的原因有:①

B未發(fā)送;②B已發(fā)送,但還未到達(dá)A。為保證可靠傳輸,A只能認(rèn)為B還沒有收到這些數(shù)據(jù)。A經(jīng)過一段時(shí)間后(由超時(shí)計(jì)時(shí)器控制)就重傳這部分?jǐn)?shù)據(jù),重新設(shè)置超時(shí)計(jì)時(shí)器,直到收到B的確認(rèn)為止。如果A按序收到落在發(fā)送窗口內(nèi)的確認(rèn)號(hào),就使發(fā)送窗口向前滑動(dòng),并發(fā)送新的數(shù)據(jù)。發(fā)送方的應(yīng)用進(jìn)程把字節(jié)流寫入TCP發(fā)送緩存。最后被確認(rèn)的字節(jié)發(fā)送方應(yīng)用程序發(fā)送緩存最后發(fā)送的字節(jié)發(fā)送窗口已發(fā)送TCP序號(hào)增大發(fā)送窗口通常只是發(fā)送緩存的一部分。不能發(fā)送太快,否則發(fā)送緩存會(huì)溢出。緩存中的字節(jié)數(shù)=發(fā)送應(yīng)用程序最后寫入緩存的字節(jié)-最后被確認(rèn)的字節(jié)最后寫入緩存的字節(jié)暫時(shí)存放:(1)發(fā)送應(yīng)用程序傳送給發(fā)送方TCP準(zhǔn)備發(fā)送的數(shù)據(jù);(2)TCP已發(fā)送出但尚未收到確認(rèn)的數(shù)據(jù)。發(fā)送緩存與發(fā)送窗口接收方的應(yīng)用進(jìn)程從TCP接收緩存中讀取尚未被讀取的字節(jié)。下一個(gè)期望收到的字節(jié)接收方應(yīng)用程序接收緩存接收窗口TCP序號(hào)增大下一個(gè)讀取的字節(jié)未按序到達(dá)的字節(jié)按序到達(dá)的字節(jié)暫時(shí)存放:(1)按序到達(dá)的、但尚未被接收應(yīng)用程序讀取的數(shù)據(jù);(2)未按序到達(dá)的數(shù)據(jù)。若不能及時(shí)讀取,緩存最終會(huì)被填滿,使接收窗口減小到零。如果能夠及時(shí)讀取,接收窗口就可以增大,但最大不能超過接收緩存的大小。接收緩存與接收窗口需要強(qiáng)調(diào)三點(diǎn)第一:發(fā)送窗口是根據(jù)接收窗口設(shè)置的,但在同一時(shí)刻,發(fā)送窗口并不總是和接收窗口一樣大(因?yàn)橛幸欢ǖ臅r(shí)間滯后)。第二:TCP標(biāo)準(zhǔn)沒有規(guī)定對不按序到達(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)致發(fā)送方不必要的重傳,捎帶確認(rèn)實(shí)際上并不經(jīng)常發(fā)生。傳輸層技術(shù)6.2TCP超時(shí)重傳超時(shí)重傳時(shí)間的選擇互聯(lián)網(wǎng)環(huán)境復(fù)雜,IP數(shù)據(jù)報(bào)所選擇的路由變化很大,導(dǎo)致運(yùn)輸層的往返時(shí)間(RTT)的變化也很大。TCP發(fā)送方在規(guī)定的時(shí)間內(nèi)沒有收到確認(rèn)就要重傳已發(fā)送的報(bào)文段。但重傳時(shí)間的選擇是TCP最復(fù)雜的問題之一。TCP超時(shí)重傳時(shí)間設(shè)置不能太短,否則會(huì)引起很多報(bào)文段的不必要的重傳,使網(wǎng)絡(luò)負(fù)荷增大。不能過長,會(huì)使網(wǎng)絡(luò)的空閑時(shí)間增大,降低了傳輸效率。TCP采用了一種自適應(yīng)算法,它記錄一個(gè)報(bào)文段發(fā)出的時(shí)間,以及收到相應(yīng)確認(rèn)的時(shí)間。這兩個(gè)時(shí)間之差就是報(bào)文段的往返時(shí)間RTT。新的RTTS

(1

)

(舊的RTTS)+

(新的RTT樣本)(5-4)

加權(quán)平均往返時(shí)間RTTS

加權(quán)平均往返時(shí)間RTTS

又稱為平滑的往返時(shí)間。超時(shí)重傳時(shí)間RTORTO(RetransmissionTime-Out)應(yīng)略大于加權(quán)平均往返時(shí)間RTTS。RFC6298建議RTO:其中:RTTD

是RTT偏差的加權(quán)平均值。RTO=RTTS+4RTTD (5-5)RFC6298建議RTTD

:其中:

是個(gè)小于1的系數(shù),其推薦值是1/4,即0.25。新的RTTD=(1

)

(舊的RTTD)+

RTTS

新的RTT樣本

(5-6)往返時(shí)間RTT發(fā)送一個(gè)報(bào)文段重傳報(bào)文段收到ACK時(shí)間往返時(shí)間RTT是對哪一個(gè)報(bào)文段的確認(rèn)?超時(shí)往返時(shí)間(RTT)的測量相當(dāng)復(fù)雜超時(shí)重傳報(bào)文段后,如何判定此確認(rèn)報(bào)文段是對原來的報(bào)文段的確認(rèn),還是對重傳報(bào)文段的確認(rèn)?Karn算法在計(jì)算平均往返時(shí)間RTT時(shí),只要報(bào)文段重傳了,就不采用其往返時(shí)間樣本。新問題:當(dāng)報(bào)文段的時(shí)延突然增大很多時(shí),在原來得出的重傳時(shí)間內(nèi),不會(huì)收到確認(rèn)報(bào)文段,于是就重傳報(bào)文段。但根據(jù)Karn算法,不考慮重傳的報(bào)文段的往返時(shí)間樣本。這樣,超時(shí)重傳時(shí)間就無法更新,造成很多不必要的重傳。修正的Karn算法報(bào)文段每重傳一次,就把RTO增大一些:新的RTO

(舊的RTO)系數(shù)

的典型值=2。當(dāng)不再發(fā)生報(bào)文段的重傳時(shí),才根據(jù)報(bào)文段的往返時(shí)延更新平均往返時(shí)延RTT和超時(shí)重傳時(shí)間RTO的數(shù)值。……連續(xù)的字節(jié)流………第一個(gè)字節(jié)塊第二個(gè)字節(jié)塊110001501300035014500假設(shè)最大報(bào)文段長度MSS=5000字節(jié),起始序號(hào)=1。接收方收到了和前面的字節(jié)流不連續(xù)的兩個(gè)字節(jié)塊,缺少序號(hào)1001~1500、3001~3500、4501~5000的字節(jié)。確認(rèn)報(bào)文:ACK=1,確認(rèn)號(hào)=1001,窗口=6000選擇確認(rèn)SACK問題:若收到的報(bào)文段無差錯(cuò),只是未按序號(hào),中間還缺少一些序號(hào)的數(shù)據(jù),那么能否設(shè)法只傳送缺少的數(shù)據(jù)而不重傳已經(jīng)正確到達(dá)接收方的數(shù)據(jù)?解決:選擇確認(rèn)SACK(SelectiveACK)類別=4長度=2允許SACK選項(xiàng)SACK選項(xiàng)類別=5長度=選項(xiàng)長度第1個(gè)字節(jié)塊的左邊界第1個(gè)字節(jié)塊的右邊界第2個(gè)字節(jié)塊的左邊界第2個(gè)字節(jié)塊的右邊界第3個(gè)字節(jié)塊的左邊界第3個(gè)字節(jié)塊的右邊界第4個(gè)字節(jié)塊的左邊界第4個(gè)字節(jié)塊的右邊界最多4個(gè)字節(jié)塊RFC2018對SACK的規(guī)定如果要使用選擇確認(rèn),在建立TCP連接時(shí),要在TCP首部的選項(xiàng)中加上允許SACK選項(xiàng),且雙方必須事先商定好。如果使用選擇確認(rèn),原來首部中的確認(rèn)號(hào)的用法仍然不變(累積確認(rèn))。只是在TCP首部中都增加了SACK選項(xiàng),以便報(bào)告收到的不連續(xù)的字節(jié)塊的邊界。確認(rèn)號(hào)=1001……連續(xù)的字節(jié)流………L1=1501R1=3001L2=3501R1=4501第一個(gè)字節(jié)塊第二個(gè)字節(jié)塊110001501300035014500確認(rèn)號(hào)=1001類別=5長度=181501300135014501左邊界=第一個(gè)字節(jié)的序號(hào),右邊界=最后一個(gè)字節(jié)序號(hào)+1。SACK傳輸層技術(shù)7.TCP流量控制目錄02TCP的傳輸效率01利用滑動(dòng)窗口實(shí)現(xiàn)流量控制5.7.1利用滑動(dòng)窗口實(shí)現(xiàn)流量控制流量控制

(flowcontrol):讓發(fā)送方的發(fā)送速率不要太快,使接收方來得及接收。利用滑動(dòng)窗口機(jī)制可以很方便地在TCP連接上實(shí)現(xiàn)對發(fā)送方的流量控制。ACK=1,ack=201,rwnd=300ACK=1,ack=601,rwnd=0ACK=1,ack=501,rwnd=100AB允許A發(fā)送序號(hào)201至500共300字節(jié)seq=101,DATAA發(fā)送了序號(hào)101至200,還能發(fā)送200字節(jié)seq=301,DATAA發(fā)送了序號(hào)301至400,還能再發(fā)送100字節(jié)新數(shù)據(jù)seq=1,DATAA發(fā)送了序號(hào)1至100,還能發(fā)送300字節(jié)seq=401,DATAA發(fā)送了序號(hào)401至500,不能再發(fā)送新數(shù)據(jù)了seq=201,DATAA超時(shí)重傳舊的數(shù)據(jù),但不能發(fā)送新的數(shù)據(jù)允許A發(fā)送序號(hào)501至600共100字節(jié)seq=501,DATAA發(fā)送了序號(hào)501至600,不能再發(fā)送了不允許A再發(fā)送(到序號(hào)600為止的數(shù)據(jù)都收到了)seq=201,DATA丟失!利用可變窗口進(jìn)行流量控制舉例A向B發(fā)送數(shù)據(jù),MSS(最大報(bào)文長度)=100字節(jié)。在連接建立時(shí),B告訴A:”我的接收窗口rwnd=400(字節(jié))”。A向B發(fā)送數(shù)據(jù),MSS=100字節(jié)。在連接建立時(shí),B告訴A:”我的接收窗口rwnd=400(字節(jié))”。ACK=1,ack=201,rwnd=300ACK=1,ack=601,rwnd=0ACK=1,ack=501,rwnd=100AB允許A發(fā)送序號(hào)201至500共300字節(jié)seq=101,DATAA發(fā)送了序號(hào)101至200,還能發(fā)送200字節(jié)seq=301,DATAA發(fā)送了序號(hào)301至400,還能再發(fā)送100字節(jié)新數(shù)據(jù)seq=1,DATAA發(fā)送了序號(hào)1至100,還能發(fā)送300字節(jié)seq=401,DATAA發(fā)送了序號(hào)401至500,不能再發(fā)送新數(shù)據(jù)了seq=201,DATAA超時(shí)重傳舊的數(shù)據(jù),但不能發(fā)送新的數(shù)據(jù)允許A發(fā)送序號(hào)501至600共100字節(jié)seq=501,DATAA發(fā)送了序號(hào)501至600,不能再發(fā)送了不允許A再發(fā)送(到序號(hào)600為止的數(shù)據(jù)都收到了)seq=201,DATA丟失!允許A發(fā)送序號(hào)601至1000共400字節(jié)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論