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

下載本文檔

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

文檔簡(jiǎn)介

1、課件制作人:謝希仁計(jì)算機(jī)網(wǎng)絡(luò)原理第 5 章 運(yùn)輸層課件制作人:謝希仁第 5 章 運(yùn)輸層5.1 *運(yùn)輸層協(xié)議概述 5.1.1 進(jìn)程之間的通信 5.1.2 運(yùn)輸層的兩個(gè)主要協(xié)議 5.1.3 運(yùn)輸層的端口5.2 用戶數(shù)據(jù)報(bào)協(xié)議 UDP 5.2.1 *UDP 概述5.2.2 UDP 的首部格式課件制作人:謝希仁第 5 章 運(yùn)輸層(續(xù))5.3 傳輸控制協(xié)議 TCP 概述 5.3.1 *TCP 最主要的特點(diǎn) 5.3.2 TCP 的連接5.4 *可靠傳輸?shù)墓ぷ髟?5.4.1 停止等待協(xié)議 5.4.2 連續(xù) ARQ 協(xié)議5.5 *TCP 報(bào)文段的首部格式課件制作人:謝希仁第 5 章 運(yùn)輸層(續(xù))5.6 TC

2、P 可靠傳輸?shù)膶?shí)現(xiàn) 5.6.1 *以字節(jié)為單位的滑動(dòng)窗口 5.6.2 *超時(shí)重傳時(shí)間的選擇 5.6.3 選擇確認(rèn) SACK5.7 TCP的流量控制 5.7.1 *利用滑動(dòng)窗口實(shí)現(xiàn)流量控制 5.7.1 必須考慮傳輸效率課件制作人:謝希仁第 5 章 運(yùn)輸層(續(xù))5.8 TCP 的擁塞控制 5.8.1 擁塞控制的一般原理 5.8.2 幾種擁塞控制方法 5.8.3 隨機(jī)早期檢測(cè) RED5.9 TCP 的運(yùn)輸連接管理 5.9.1 TCP 的連接建立 5.9.2 TCP 的連接釋放 5.9.3 TCP 的有限狀態(tài)機(jī) 課件制作人:謝希仁5.1 運(yùn)輸層協(xié)議概述5.1.1 進(jìn)程之間的通信n從通信和信息處理的角度

3、看,運(yùn)輸層向它上面的應(yīng)用層提供通信服務(wù),它屬于面向通信部分的最高層,同時(shí)也是用戶功能中的最低層。n當(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í)都只用到下三層的功能。 運(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)程之間的

4、通信n兩個(gè)主機(jī)進(jìn)行通信實(shí)際上就是兩個(gè)主機(jī)中的應(yīng)用進(jìn)程互相通信。 n應(yīng)用進(jìn)程之間的通信又稱為端到端的通信。 n運(yùn)輸層的一個(gè)很重要的功能就是復(fù)用和分用。應(yīng)用層不同進(jìn)程的報(bào)文通過(guò)不同的端口向下交到運(yùn)輸層,再往下就共用網(wǎng)絡(luò)層提供的服務(wù)。n“運(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)輸層的主要功

5、能 n運(yùn)輸層為應(yīng)用進(jìn)程之間提供端到端的邏輯通信(但網(wǎng)絡(luò)層是為主機(jī)之間提供邏輯通信)。n運(yùn)輸層還要對(duì)收到的報(bào)文進(jìn)行差錯(cuò)檢測(cè)。n運(yùn)輸層需要有兩種不同的運(yùn)輸協(xié)議,即面向連接的 TCP 和無(wú)連接的 UDP。 課件制作人:謝希仁兩種不同的運(yùn)輸協(xié)議n運(yùn)輸層向高層用戶屏蔽了下面網(wǎng)絡(luò)核心的細(xì)節(jié)(如網(wǎng)絡(luò)拓?fù)?、所采用的路由選擇協(xié)議等),它使應(yīng)用進(jìn)程看見(jiàn)的就是好像在兩個(gè)運(yùn)輸層實(shí)體之間有一條端到端的邏輯通信信道。n當(dāng)運(yùn)輸層采用面向連接的 TCP 協(xié)議時(shí),盡管下面的網(wǎng)絡(luò)是不可靠的(只提供盡最大努力服務(wù)),但這種邏輯通信信道就相當(dāng)于一條全雙工的可靠信道。n當(dāng)運(yùn)輸層采用無(wú)連接的 UDP 協(xié)議時(shí),這種邏輯通信信道是一條不可靠

6、信道。 課件制作人:謝希仁TCP/IP 的運(yùn)輸層有兩個(gè)不同的協(xié)議:(1) 用戶數(shù)據(jù)報(bào)協(xié)議 UDP (User Datagram Protocol)(2) 傳輸控制協(xié)議 TCP (Transmission Control Protocol)5.1.2 運(yùn)輸層的兩個(gè)主要協(xié)議 課件制作人:謝希仁n按照OSI術(shù)語(yǔ),兩個(gè)對(duì)等運(yùn)輸實(shí)體在通信時(shí)傳送的數(shù)據(jù)單位叫作運(yùn)輸協(xié)議數(shù)據(jù)單元 TPDU (Transport Protocol Data Unit)。n在TCP/IP體系中,TCP 傳送的數(shù)據(jù)單位是 TCP 報(bào)文段(segment); UDP 傳送的數(shù)據(jù)單位是 UDP 用戶數(shù)據(jù)報(bào)。 TPDU課件制作人:謝希仁

7、TCP/IP 體系中的運(yùn)輸層協(xié)議 TCPUDPIP應(yīng)用層與各種網(wǎng)絡(luò)接口運(yùn)輸層課件制作人:謝希仁TCP 與 UDP nUDP 在傳送數(shù)據(jù)之前不需要先建立連接。對(duì)方的運(yùn)輸層在收到 UDP 報(bào)文后,不需要給出任何確認(rèn)。雖然 UDP 不提供可靠交付,但在某些情況下 UDP 是一種最有效的工作方式。nTCP 則提供面向連接的服務(wù)。TCP 不提供廣播或多播服務(wù)。由于 TCP 要提供可靠的、面向連接的運(yùn)輸服務(wù),因此不可避免地增加了許多的開(kāi)銷,如確認(rèn)、流量控制、計(jì)時(shí)器以及連接管理等。這不僅使協(xié)議數(shù)據(jù)單元的首部增大很多,還要占用許多的處理機(jī)資源。 表5-1 使用UDP和TCP的各種應(yīng)用和應(yīng)用層協(xié)議應(yīng)用應(yīng)用層協(xié)議

8、運(yùn)輸層協(xié)議名字轉(zhuǎn)換DNSUDP文件傳送TFTPUDP路由選擇協(xié)議RIPUDPIP地址配置BOOTP, DHCPUDP網(wǎng)絡(luò)管理SNMPUDP遠(yuǎn)程文件服務(wù)器NFSUDPIP電話專用協(xié)議UDP流式多媒體通信專用協(xié)議UDP電子郵件SMTPTCP遠(yuǎn)程終端接入TELNETTCP萬(wàn)維網(wǎng)HTTPTCP文件傳送FTPTCP課件制作人:謝希仁5.1.3 運(yùn)輸層的端口 n運(yùn)行在單個(gè)計(jì)算機(jī)中的進(jìn)程是用進(jìn)程標(biāo)識(shí)符來(lái)標(biāo)志的。n但在因特網(wǎng)環(huán)境下,運(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)種類很多,而不同的操作系統(tǒng)又使用不同格式的進(jìn)程標(biāo)識(shí)符。n為了使運(yùn)行不同

9、操作系統(tǒng)的計(jì)算機(jī)的應(yīng)用進(jìn)程能夠互相通信,就必須用統(tǒng)一的方法對(duì) TCP/IP 體系的應(yīng)用進(jìn)程進(jìn)行標(biāo)志。 課件制作人:謝希仁需要解決的問(wèn)題 n把一個(gè)特定機(jī)器上運(yùn)行的特定進(jìn)程指明為因特網(wǎng)上通信最后的終點(diǎn)還是不可行的。這是因?yàn)檫M(jìn)程的創(chuàng)建和撤銷都是動(dòng)態(tài)的,通信的一方幾乎無(wú)法識(shí)別對(duì)方機(jī)器上的進(jìn)程。n我們往往需要利用目的主機(jī)提供的功能來(lái)識(shí)別終點(diǎn),而不需要知道實(shí)現(xiàn)這個(gè)功能的進(jìn)程是哪一個(gè)。課件制作人:謝希仁端口號(hào)(protocol port number)簡(jiǎn)稱為端口(port)n解決這個(gè)問(wèn)題的方法就是在運(yùn)輸層使用協(xié)議端口號(hào)(protocol port number),或通常簡(jiǎn)稱為端口(port)。n雖然通信的終

10、點(diǎn)是應(yīng)用進(jìn)程,但我們可以把端口想象是通信的終點(diǎn),因?yàn)槲覀冎灰岩獋魉偷膱?bào)文交到目的主機(jī)的某一個(gè)合適的目的端口,剩下的工作(即最后交付目的進(jìn)程)就由 TCP 來(lái)完成。課件制作人:謝希仁軟件端口與硬件端口n這種在協(xié)議棧層間的抽象的協(xié)議端口是軟件端口。n路由器或交換機(jī)上的端口是硬件端口。n硬件端口是不同硬件設(shè)備進(jìn)行交互的接口,而軟件端口是應(yīng)用層的各種協(xié)議進(jìn)程與運(yùn)輸實(shí)體進(jìn)行層間交互的一種地址。 課件制作人:謝希仁TCP /IP運(yùn)輸層的端口 n端口用一個(gè) 16 位端口號(hào)進(jìn)行標(biāo)志。n端口號(hào)只具有本地意義,即端口號(hào)只是為了標(biāo)志本計(jì)算機(jī)應(yīng)用層中的各進(jìn)程在和運(yùn)輸層交互時(shí)的層間接口。n在因特網(wǎng)中不同計(jì)算機(jī)中,相同

11、端口號(hào)是沒(méi)有關(guān)聯(lián)的。課件制作人:謝希仁兩類端口 n(1)服務(wù)器端使用的端口號(hào)n(2)客戶端使用的端口號(hào)或短暫端口號(hào)課件制作人:謝希仁服務(wù)器端使用的端口號(hào)(分為兩類)(1)熟知端口號(hào)或系統(tǒng)端口號(hào),數(shù)值一般為 01023。常用熟知端口號(hào):見(jiàn)下表表5-2。(2)登記端口號(hào),數(shù)值為102449151,為沒(méi)有熟知端口號(hào)的應(yīng)用程序使用的。使用這個(gè)范圍的端口號(hào)必須在 IANA 登記,以防止重復(fù)。應(yīng)用程序FTPTELNETSMTPDNSTFTPHTTPSNMP熟知端口號(hào)212325536980161表5-2 常用熟知端口號(hào)課件制作人:謝希仁客戶端使用的端口號(hào)或短暫端口號(hào)n數(shù)值為4915265535,留給客戶進(jìn)

12、程選擇暫時(shí)使用。當(dāng)服務(wù)器進(jìn)程收到客戶進(jìn)程的報(bào)文時(shí),就知道了客戶進(jìn)程所使用的動(dòng)態(tài)端口號(hào)。通信結(jié)束后,這個(gè)端口號(hào)可供其他客戶進(jìn)程以后使用。 課件制作人:謝希仁5.2 用戶數(shù)據(jù)報(bào)協(xié)議 UDP 5.2.1 UDP 概述 nUDP 只在 IP 的數(shù)據(jù)報(bào)服務(wù)之上增加了很少一點(diǎn)的功能,即復(fù)用和分用以及差錯(cuò)檢測(cè)的功能。課件制作人:謝希仁UDP 的主要特點(diǎn) n(1)UDP 是無(wú)連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接。n(2)UDP 使用盡最大努力交付,即不保證可靠交付,同時(shí)也不使用擁塞控制。n(3)UDP 是面向報(bào)文的。n(4)UDP 沒(méi)有擁塞控制,很適合多媒體通信的要求。 n(5)UDP 支持一對(duì)一、一對(duì)多、多

13、對(duì)一和多對(duì)多的交互通信。n(6)UDP 的首部開(kāi)銷小,只有 8 個(gè)字節(jié)。 課件制作人:謝希仁面向報(bào)文的 UDPn發(fā)送方 UDP 對(duì)應(yīng)用程序交下來(lái)的報(bào)文,在添加首部后就向下交付 IP 層。UDP 對(duì)應(yīng)用層交下來(lái)的報(bào)文,既不合并,也不拆分,而是保留這些報(bào)文的邊界。n應(yīng)用層交給 UDP 多長(zhǎng)的報(bào)文,UDP 就照樣發(fā)送,即一次發(fā)送一個(gè)報(bào)文。n接收方 UDP 對(duì) IP 層交上來(lái)的 UDP 用戶數(shù)據(jù)報(bào),在去除首部后就原封不動(dòng)地交付上層的應(yīng)用進(jìn)程,一次交付一個(gè)完整的報(bào)文。n應(yīng)用程序必須選擇合適大小的報(bào)文。課件制作人:謝希仁UDP 是面向報(bào)文的 IP 數(shù)據(jù)報(bào)的數(shù)據(jù)部分IP 首部IP 層UDP 首部UDP 用戶

14、數(shù)據(jù)報(bào)的數(shù)據(jù)部分運(yùn)輸層應(yīng)用層報(bào)文應(yīng)用層課件制作人:謝希仁5.3 傳輸控制協(xié)議 TCP 概述 5.3.1 TCP 最主要的特點(diǎn) n(1)TCP 是面向連接的運(yùn)輸層協(xié)議。n(2)每一條 TCP 連接只能有兩個(gè)端點(diǎn)(endpoint),每一條 TCP 連接只能是點(diǎn)對(duì)點(diǎn)的(一對(duì)一)。 n(3)TCP 提供可靠交付的服務(wù)。通過(guò)TCP連接傳送的數(shù)據(jù),無(wú)差錯(cuò)、不丟失、不重復(fù)并且按序到達(dá)。n (4)TCP 提供全雙工通信。n(5)面向字節(jié)流。 課件制作人:謝希仁7 68H圖5-8 TCP 面向流的概念 發(fā)送 TCP 報(bào)文段發(fā)送方接收方把字節(jié)寫(xiě)入發(fā)送緩存從接收緩存讀取字節(jié)應(yīng)用進(jìn)程應(yīng)用進(jìn)程123018171615

15、1419202145131211H109 H加上 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)注意nTCP 連接是一條虛連接而不是一條真正的物理連接。nTCP 對(duì)應(yīng)用進(jìn)程一次把多長(zhǎng)的報(bào)文發(fā)送到TCP 的緩存中是不關(guān)心的。nTCP 根據(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)程給出的)。nTCP 可把太長(zhǎng)的數(shù)據(jù)塊劃分短一些再傳送。TCP 也可等待積累有足夠多的字節(jié)后再構(gòu)成報(bào)文段發(fā)送出去。 課件制作人:謝希仁5.3.2 TCP 的連接 n

16、TCP 把連接作為最基本的抽象。n每一條 TCP 連接有兩個(gè)端點(diǎn)。nTCP 連接的端點(diǎn)不是主機(jī),不是主機(jī)的IP 地址,不是應(yīng)用進(jìn)程,也不是運(yùn)輸層的協(xié)議端口。TCP 連接的端點(diǎn)叫做套接字(socket)或插口。n端口號(hào)拼接到(contatenated with) IP 地址即構(gòu)成了套接字。 課件制作人:謝希仁套接字 (socket) 套接字 socket = (IP地址: 端口號(hào)) (5-1)n每一條 TCP 連接唯一地被通信兩端的兩個(gè)端點(diǎn)(即兩個(gè)套接字)所確定。即: TCP 連接 := socket1, socket2 = (IP1: port1), (IP2: port2) (5-2)課件制

17、作人:謝希仁同一個(gè)名詞 socket有多種不同的意思 n應(yīng)用編程接口 API 稱為 socket API, 簡(jiǎn)稱為 socket。nsocket API 中使用的一個(gè)函數(shù)名也叫作 socket。n調(diào)用 socket 函數(shù)的端點(diǎn)稱為 socket。n調(diào)用 socket 函數(shù)時(shí)其返回值稱為 socket 描述符,可簡(jiǎn)稱為 socket。n在操作系統(tǒng)內(nèi)核中連網(wǎng)協(xié)議的 Berkeley 實(shí)現(xiàn),稱為 socket 實(shí)現(xiàn)。 上述 socket的意思都與本章定義的socket(指端口號(hào)拼接到IP地址)不同。課件制作人:謝希仁5.4 可靠傳輸?shù)墓ぷ髟韓TCP必須采用適當(dāng)?shù)拇胧┎拍苁沟脙蓚€(gè)運(yùn)輸層之間的通信變得

18、可靠。n實(shí)際的網(wǎng)絡(luò)都不具備理想的傳輸條件,但是我們可以使用一些可靠的傳輸協(xié)議來(lái)逼近這些傳輸條件。n下面從最簡(jiǎn)單的停止等待協(xié)議講起。這種協(xié)議在計(jì)算機(jī)網(wǎng)絡(luò)發(fā)展的初期,用于鏈路層的可靠傳輸。課件制作人:謝希仁5.4 可靠傳輸?shù)墓ぷ髟?.4.1停止等待協(xié)議n停止等待 的含義:每發(fā)送一個(gè)傳送的數(shù)據(jù)單元(統(tǒng)稱分組)就停止發(fā)送,等待對(duì)方的確認(rèn),在收到確認(rèn)后再發(fā)送下一個(gè)分組。n下面分三種情況講。n1. 無(wú)差錯(cuò)情況n2. 出現(xiàn)差錯(cuò)n3. 確認(rèn)丟失和確認(rèn)遲到課件制作人:謝希仁5.4.1 停止等待協(xié)議 1. 無(wú)差錯(cuò)情況 2. 出現(xiàn)差錯(cuò)的情況圖5-9 (a) 無(wú)差錯(cuò)情況A發(fā)送 M1確認(rèn) M1B發(fā)送 M2發(fā)送 M3確

19、認(rèn) M2確認(rèn) M3A發(fā)送 M1B超時(shí)重傳 M1發(fā)送 M2確認(rèn) M1丟棄有差錯(cuò)的報(bào)文圖5-9(b) 出現(xiàn)差錯(cuò)情況(需超時(shí)重傳)tttt課件制作人:謝希仁圖5-9 (a) 無(wú)差錯(cuò)情況nA發(fā)送分組M1,發(fā)送完畢就暫停發(fā)送,等待B的確認(rèn)。nB收到了M1,就向A發(fā)送確認(rèn)。nA在收到了對(duì)M1的確認(rèn)后,就再發(fā)送下一個(gè)分組M2。nA在收到B對(duì)M2的確認(rèn)后,再發(fā)送M3。課件制作人:謝希仁圖5-9 (b) 出現(xiàn)差錯(cuò)情況nB收到M1時(shí)檢測(cè)出了差錯(cuò),就丟棄M1,其他什么也不做,也不通知A收到了有差錯(cuò)的分組。也可能是M1在傳輸過(guò)程中丟失了。在這兩種情況下,B都不會(huì)發(fā)送如何信息。nA在超時(shí)計(jì)時(shí)器到期之后沒(méi)有收到M1的確認(rèn)

20、,就超時(shí)重傳M1。超時(shí)重傳:發(fā)送方在超過(guò)了一段時(shí)間仍然沒(méi)有收到確認(rèn),就認(rèn)為剛才發(fā)送的分組丟失了,因而重傳前面發(fā)送過(guò)的分組。n要實(shí)現(xiàn)超時(shí)重傳,就要在每發(fā)送完一個(gè)分組就設(shè)置一個(gè)超時(shí)計(jì)時(shí)器。在超時(shí)計(jì)時(shí)器到期之前收到對(duì)方的確認(rèn),就撤銷已設(shè)置的超時(shí)計(jì)時(shí)器,否則就超時(shí)重傳。這樣,超時(shí)計(jì)時(shí)器在沒(méi)有差錯(cuò)的情況也是要設(shè)置的。n問(wèn)題:超時(shí)重傳分組時(shí)是否需要設(shè)置超時(shí)計(jì)時(shí)器?課件制作人:謝希仁對(duì)于無(wú)差錯(cuò)和出現(xiàn)差錯(cuò)情況,請(qǐng)注意n在發(fā)送完一個(gè)分組后,必須暫時(shí)保留已發(fā)送的分組的副本。以便發(fā)生超時(shí)重傳時(shí)使用。n分組和確認(rèn)分組都必須進(jìn)行編號(hào)。以便能夠區(qū)分開(kāi)在分組或確認(rèn)分組中,哪些是新發(fā)送的,哪些是重傳的。對(duì)于發(fā)送的分組,編號(hào)較

21、大的是新發(fā)送的,編號(hào)相同的是重傳的;對(duì)于確認(rèn)分組,其編號(hào)就是所確認(rèn)的分組的編號(hào)。n超時(shí)計(jì)時(shí)器的重傳時(shí)間應(yīng)當(dāng)比數(shù)據(jù)在分組傳輸?shù)钠骄禃r(shí)間更長(zhǎng)一些。關(guān)于重傳時(shí)間應(yīng)該如何選擇,在后面的5.6.2節(jié)還要進(jìn)一步討論。課件制作人:謝希仁3.確認(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課件制作人:謝希仁圖5-10 (a)確認(rèn)丟失nB所發(fā)送的對(duì)M1的確認(rèn)丟失了。nA在超時(shí)計(jì)時(shí)器到期之后沒(méi)有收到M1的確認(rèn),就超時(shí)重傳

22、M1。nB又收到了重傳的分組M1。B應(yīng)采取兩個(gè)行動(dòng):第一,丟棄這個(gè)重復(fù)的分組M1;第二,向A發(fā)送確認(rèn)。因?yàn)锳之所以重傳M1就表示A沒(méi)有收到對(duì)M1的確認(rèn)。n問(wèn)題:確認(rèn)出現(xiàn)差錯(cuò)該如何做?課件制作人:謝希仁圖5-10 (b) 確認(rèn)遲到nB所發(fā)送的對(duì)M1的確認(rèn)遲到了。nA會(huì)收到重復(fù)的確認(rèn)。A采取的行動(dòng)是:收下這個(gè)重復(fù)的確認(rèn)后就丟棄。因?yàn)镸1已經(jīng)成功接收了。課件制作人:謝希仁停止等待協(xié)議小結(jié)n發(fā)送方超時(shí)重傳的原因有:n發(fā)送的分組丟失、出現(xiàn)差錯(cuò);n確認(rèn)的分組丟失、出現(xiàn)差錯(cuò)、遲到。n接收方重傳的原因有:n收到重復(fù)的分組課件制作人:謝希仁停止等待協(xié)議歸納n發(fā)送方n在每發(fā)送完一個(gè)分組后,就設(shè)置一個(gè)超時(shí)計(jì)時(shí)器,并

23、暫時(shí)保留已發(fā)送的分組的副本。在超時(shí)計(jì)時(shí)器到期之前收到對(duì)方的確認(rèn),就撤銷已設(shè)置的超時(shí)計(jì)時(shí)器,否則就超時(shí)重傳。n若收到對(duì)方重復(fù)的確認(rèn),則丟棄該確認(rèn)。n若收到對(duì)方有差錯(cuò)的確認(rèn),則丟棄該確認(rèn),重傳所確認(rèn)對(duì)應(yīng)的分組?課件制作人:謝希仁停止等待協(xié)議歸納n接收方n在每接收完一個(gè)分組后,就發(fā)送該分組的確認(rèn)分組。n若收到對(duì)方重復(fù)的分組,則丟棄該分組,并重傳該分組的確認(rèn)分組。n若收到對(duì)方有差錯(cuò)的分組,則丟棄該分組。課件制作人:謝希仁可靠通信的實(shí)現(xiàn)n使用上述的確認(rèn)和重傳機(jī)制,我們就可以在不可靠的傳輸網(wǎng)絡(luò)上實(shí)現(xiàn)可靠的通信。n這種可靠傳輸協(xié)議常稱為自動(dòng)重傳請(qǐng)求ARQ (Automatic Repeat reQuest)

24、。nARQ 表明重傳的請(qǐng)求是自動(dòng)進(jìn)行的。接收方不需要請(qǐng)求發(fā)送方重傳某個(gè)出錯(cuò)的分組 。課件制作人:謝希仁信道利用率 n停止等待協(xié)議的優(yōu)點(diǎn)是簡(jiǎn)單,但缺點(diǎn)是信道利用率太低。 TDRTTATD + RTT + TAB分組確認(rèn)tt分組確認(rèn)課件制作人:謝希仁信道的利用率 U ADDTTTURTT(5-3)課件制作人:謝希仁流水線傳輸 n發(fā)送方可連續(xù)發(fā)送多個(gè)分組,不必每發(fā)完一個(gè)分組就停頓下來(lái)等待對(duì)方的確認(rèn)。n由于信道上一直有數(shù)據(jù)不間斷地傳送,這種傳輸方式可獲得很高的信道利用率。 B分組ttAACKn流水線傳輸?shù)膮f(xié)議包括連續(xù)ARQ協(xié)議(5.4.2節(jié))和滑動(dòng)窗口協(xié)議(5.6節(jié))。課件制作人:謝希仁5.4.2 連

25、續(xù) ARQ 協(xié)議-最基本的概念 123456789101112(a) 發(fā)送方維持發(fā)送窗口(發(fā)送窗口是 5)發(fā)送窗口:位于發(fā)送窗口內(nèi)的所有分組可連續(xù)發(fā)送出去(b) 收到一個(gè)確認(rèn)后發(fā)送窗口向前滑動(dòng)向前123456789101112發(fā)送窗口課件制作人:謝希仁累積確認(rèn) n接收方一般采用累積確認(rèn)的方式。即不必對(duì)收到的分組逐個(gè)發(fā)送確認(rèn),而是對(duì)按序到達(dá)的最后一個(gè)分組發(fā)送確認(rèn),這樣就表示:到這個(gè)分組為止的所有分組都已正確收到了。n累積確認(rèn)有的優(yōu)點(diǎn)是:容易實(shí)現(xiàn),即使確認(rèn)丟失也不必重傳。缺點(diǎn)是:不能向發(fā)送方反映出接收方已經(jīng)正確收到的所有分組的信息。課件制作人:謝希仁Go-back-N(回退 N) n如果發(fā)送方發(fā)送

26、了前 5 個(gè)分組,而中間的第 3 個(gè)分組丟失了。這時(shí)接收方只能對(duì)前兩個(gè)分組發(fā)出確認(rèn)。發(fā)送方無(wú)法知道后面三個(gè)分組的下落,而只好把后面的三個(gè)分組都再重傳一次。n這就叫做 Go-back-N(回退 N),表示需要再退回來(lái)重傳已發(fā)送過(guò)的 N 個(gè)分組。n可見(jiàn)當(dāng)通信線路質(zhì)量不好時(shí),連續(xù) ARQ 協(xié)議會(huì)帶來(lái)負(fù)面的影響。 課件制作人:謝希仁5.5 TCP 報(bào)文段的首部格式n在深入討論TCP的可靠傳輸問(wèn)題之前,必須先了解TCP的報(bào)文段首部的格式。n因?yàn)橹挥信錞CP的報(bào)文段首部各個(gè)字段的作用才能掌握TCP的工作原理。課件制作人:謝希仁TCP首部20 字節(jié)的固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長(zhǎng) 度

27、 可 變)源 端 口序 號(hào)緊 急 指 針窗 口確 認(rèn) 號(hào)保 留FIN32 位SYNRSTPSHACKURG位 0 8 16 24 31填 充TCP 數(shù)據(jù)部分TCP 首部TCP 報(bào)文段IP 數(shù)據(jù)部分IP 首部發(fā)送在前5.5 TCP 報(bào)文段的首部格式 課件制作人:謝希仁TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長(zhǎng) 度 可 變)源 端 口序 號(hào)緊 急 指 針窗 口確 認(rèn) 號(hào)保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充源端口和目的端口字段各占 2 字節(jié)。端口是運(yùn)輸層與應(yīng)用層的服務(wù)接口。運(yùn)輸層的復(fù)用和分用功能都要通過(guò)端口才能實(shí)現(xiàn)。 課件制作人:謝

28、希仁TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長(zhǎng) 度 可 變)源 端 口序 號(hào)緊 急 指 針窗 口確 認(rèn) 號(hào)保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充序號(hào)字段占 4 字節(jié)。TCP 連接中傳送的數(shù)據(jù)流中的每一個(gè)字節(jié)都編上一個(gè)序號(hào)。序號(hào)字段的值則指的是本報(bào)文段所發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。 課件制作人:謝希仁序號(hào)字段n例如,一報(bào)文段的序號(hào)字段是301,而攜帶的數(shù)據(jù)共有100字節(jié)。n這表明,本報(bào)文段的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)是301,最后一個(gè)字節(jié)的序號(hào)是400。n該字段的名稱也叫做“報(bào)文段序號(hào)”。課件制作人:謝希仁TCP首部20字節(jié)固定首部

29、目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長(zhǎng) 度 可 變)源 端 口序 號(hào)緊 急 指 針窗 口確 認(rèn) 號(hào)保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充確認(rèn)號(hào)字段占 4 字節(jié),是期望收到對(duì)方的下一個(gè)報(bào)文段的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。 課件制作人:謝希仁確認(rèn)號(hào)字段n例如,B正確收到了A發(fā)送過(guò)來(lái)的一個(gè)報(bào)文段,其序號(hào)字段值是501,而數(shù)據(jù)長(zhǎng)度(本報(bào)文段的)是200字節(jié)(序號(hào)501到700),這表明B正確收到了A發(fā)送的、到序號(hào)700為止的數(shù)據(jù)。因此,B期望收到A的下一個(gè)數(shù)據(jù)序號(hào)是701,于是B在發(fā)送給A的確認(rèn)報(bào)文段中把確認(rèn)號(hào)置為701。n總之,若確認(rèn)號(hào)=N,則表明:到序號(hào)N-

30、1為止的所有數(shù)據(jù)都已經(jīng)正確收到。課件制作人:謝希仁TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長(zhǎng) 度 可 變)源 端 口序 號(hào)緊 急 指 針窗 口確 認(rèn) 號(hào)保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充確認(rèn) ACK 占1位,只有當(dāng) ACK 1 時(shí)確認(rèn)號(hào)字段才有效。當(dāng) ACK 0 時(shí),確認(rèn)號(hào)無(wú)效。 課件制作人:謝希仁TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長(zhǎng) 度 可 變)源 端 口序 號(hào)緊 急 指 針窗 口確 認(rèn) 號(hào)保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充*窗口字段 占 2 字節(jié)

31、,接收方讓發(fā)送方設(shè)置其發(fā)送窗口的依據(jù),單位為字節(jié)。課件制作人:謝希仁*窗口字段(續(xù))n窗口指的是發(fā)送本報(bào)文段的一方的接收窗口。n例如,設(shè)確認(rèn)號(hào)是701,窗口字段是1000。這表明,發(fā)送本報(bào)文段的一方的接收窗口大小為1000字節(jié)(序號(hào)是701到1700)。n窗口字段明確指出了現(xiàn)在允許對(duì)方發(fā)送的數(shù)據(jù)量。窗口的值是經(jīng)常在動(dòng)態(tài)變化著。課件制作人:謝希仁其他選項(xiàng)n時(shí)間戳選項(xiàng)占10 字節(jié),其中最主要的字段時(shí)間戳值字段(4 字節(jié))和時(shí)間戳回送回答字段(4 字節(jié))。n時(shí)間戳選項(xiàng)的功能有:用來(lái)計(jì)算RTT;防止序號(hào)繞回PAWS。n選擇確認(rèn)選項(xiàng)在后面的 5.6.3 節(jié)介紹。 課件制作人:謝希仁5.6 TCP 可靠傳

32、輸?shù)膶?shí)現(xiàn)滑動(dòng)窗口協(xié)議n首先介紹以字節(jié)為單位的滑動(dòng)窗口。n假定數(shù)據(jù)傳輸只在一個(gè)方向進(jìn)行,即A發(fā)送數(shù)據(jù),B給出確認(rèn)。這樣的好處是使討論限于兩個(gè)窗口,即發(fā)送方A的發(fā)送窗口和接收方的接收窗口。 課件制作人:謝希仁5.6.1 以字節(jié)為單位的滑動(dòng)窗口n假定A收到了B發(fā)來(lái)的確認(rèn)報(bào)文段,其中窗口是20字節(jié),而確認(rèn)號(hào)是31。報(bào)文段只包含一個(gè)字節(jié)的數(shù)據(jù)。n根據(jù)這兩個(gè)數(shù)據(jù),A就構(gòu)造出自己的發(fā)送窗口,如圖5-15所示。課件制作人:謝希仁5.6 TCP 可靠傳輸?shù)膶?shí)現(xiàn)滑動(dòng)窗口協(xié)議前移不允許發(fā)送已發(fā)送并收到確認(rèn)A 的發(fā)送窗口 = 20允許發(fā)送的序號(hào)26 27 28 29 30 31 32 33 34 35 36 37 3

33、8 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56B 期望收到的序號(hào)前沿后沿前移收縮圖5-15 根據(jù) B 給出的窗口值A(chǔ) 構(gòu)造出自己的發(fā)送窗口 TCP 標(biāo)準(zhǔn)強(qiáng)烈不贊成發(fā)送窗口前沿向后收縮 課件制作人:謝希仁圖5-15 的說(shuō)明n發(fā)送窗口表示:在沒(méi)有收到B的確認(rèn)的情況下,A可以連續(xù)的把窗口內(nèi)的數(shù)據(jù)(即31到50號(hào)字節(jié))都發(fā)送出去。凡是發(fā)送過(guò)的數(shù)據(jù),在未收到確認(rèn)之前都必須暫時(shí)保留,以便在超時(shí)重傳時(shí)使用。課件制作人:謝希仁發(fā)送窗口的前沿和后沿的可能的變化情況及其原因前移不動(dòng)后退前沿可能,因?yàn)槭盏叫碌拇_認(rèn)可能,因?yàn)槲词盏叫碌拇_認(rèn),或收到新的確認(rèn)

34、但對(duì)方的通知窗口縮小不贊成,因?yàn)闀?huì)產(chǎn)生錯(cuò)誤后沿可能,因?yàn)槭盏叫碌拇_認(rèn)可能,因?yàn)槲词盏叫碌拇_認(rèn)不可能,因?yàn)椴荒艹蜂N已收到的確認(rèn)課件制作人:謝希仁A和B之間的數(shù)據(jù)發(fā)送和接收的完整過(guò)程(1)nA 發(fā)送了 序號(hào)從31到41的11 個(gè)字節(jié)的數(shù)據(jù)(圖5-16(1) 。nB收到了序號(hào)為32、33的數(shù)據(jù)(圖5-16(2),但它們沒(méi)有按序到達(dá)。nB使用了選擇確認(rèn)SACK的選項(xiàng),向A發(fā)送了“收到了不連續(xù)的1個(gè)字節(jié)塊”的確認(rèn)。其中通知窗口值=20,確認(rèn)號(hào)=31。A收到該確認(rèn)后發(fā)送31號(hào)數(shù)據(jù)。課件制作人:謝希仁A和B之間的數(shù)據(jù)發(fā)送和接收的完整過(guò)程(2)nB收到了序號(hào)為31的數(shù)據(jù),收到了缺少的數(shù)據(jù)。并把序號(hào)31到33的

35、數(shù)據(jù)交付給主機(jī),并刪除它們。接著向前移動(dòng)接收窗口(圖5-17),并給A發(fā)送確認(rèn),其中通知窗口值=20,確認(rèn)號(hào)=34。nB收到了序號(hào)為37、38和40的數(shù)據(jù),但它們沒(méi)有按序到達(dá)。nB使用了選擇確認(rèn)SACK的選項(xiàng),向A發(fā)送了“收到了不連續(xù)的2個(gè)字節(jié)塊”的確認(rèn)。其中通知窗口值=20,確認(rèn)號(hào)=34。課件制作人:謝希仁A和B之間的數(shù)據(jù)發(fā)送和接收過(guò)程(3)nA收到B的確認(rèn),即其中通知窗口值=20,確認(rèn)號(hào)=34 。A收到該確認(rèn)后發(fā)送34、35、36、39號(hào)數(shù)據(jù)。 nB收到41號(hào)數(shù)據(jù)。并給A發(fā)送確認(rèn),其中通知窗口值=20,確認(rèn)號(hào)=42。nA繼續(xù)發(fā)送完畢從42到53號(hào)數(shù)據(jù)(圖5-18)。課件制作人:謝希仁不允許

36、發(fā)送已發(fā)送并收到確認(rèn)A 的發(fā)送窗口位置不變?cè)试S發(fā)送但尚未發(fā)送26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55已發(fā)送但未收到確認(rèn)56P1P2P3可用窗口圖5-16(1) A 發(fā)送了 序號(hào)從31到41的11 個(gè)字節(jié)的數(shù)據(jù) 描述發(fā)送窗口狀態(tài)的3個(gè)指針P3 P1 = A 的發(fā)送窗口(又稱為通知窗口)P2 P1 = 已發(fā)送但尚未收到確認(rèn)的字節(jié)數(shù)P3 P2 = 允許發(fā)送但尚未發(fā)送的字節(jié)數(shù)(又稱為可用窗口或有效窗口) 課件制作人:謝希仁不允許接收已發(fā)送確認(rèn)并交付主機(jī)B 的接收窗口

37、允許接收26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56未按序收到圖5-16(2) B收到了序號(hào)為32、33的數(shù)據(jù),但它們沒(méi)有按序到達(dá)。課件制作人:謝希仁允許發(fā)送但尚未發(fā)送A 的發(fā)送窗口向前滑動(dòng)26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55已發(fā)送并收到確認(rèn)不允許發(fā)送已發(fā)送但未收到確認(rèn)56P1P2P3允許接收B 的接收窗口向前滑動(dòng)2

38、6 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55已發(fā)送確認(rèn)并交付主機(jī)不允許接收56未按序收到圖5-17 A 收到新的確認(rèn)號(hào),發(fā)送窗口向前滑動(dòng) 先存下,等待缺少的數(shù)據(jù)的到達(dá)課件制作人:謝希仁不允許發(fā)送已發(fā)送并收到確認(rèn)A 的發(fā)送窗口已滿,可用窗口為零26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55已發(fā)送但未收到確認(rèn)56P1P2P3圖5-18 A

39、 的發(fā)送窗口內(nèi)的序號(hào)都已用完,但還沒(méi)有再收到確認(rèn),必須停止發(fā)送。 課件制作人:謝希仁窗口和緩存的關(guān)系n發(fā)送窗口通常只是發(fā)送緩存的一部分。n接收窗口通常只是接收緩存的一部分。課件制作人:謝希仁發(fā)送緩存 最后被確認(rèn)的字節(jié)發(fā)送應(yīng)用程序發(fā)送緩存最后發(fā)送的字節(jié)發(fā)送窗口TCP序號(hào)增大課件制作人:謝希仁接收緩存接收應(yīng)用程序已收到接收窗口TCP接收緩存下一個(gè)讀取的字節(jié)序號(hào)增大下一個(gè)期望收到的字節(jié)(確認(rèn)號(hào))課件制作人:謝希仁發(fā)送緩存與接收緩存的作用n發(fā)送緩存用來(lái)暫時(shí)存放:n 發(fā)送應(yīng)用程序傳送給發(fā)送方 TCP 準(zhǔn)備發(fā)送的數(shù)據(jù);n TCP 已發(fā)送出但尚未收到確認(rèn)的數(shù)據(jù)。n接收緩存用來(lái)暫時(shí)存放:n 按序到達(dá)的、但尚未

40、被接收應(yīng)用程序讀取的數(shù)據(jù);n 不按序到達(dá)的數(shù)據(jù)。 課件制作人:謝希仁需要強(qiáng)調(diào)三點(diǎn)nA 的發(fā)送窗口并不總是和 B 的接收窗口一樣大(因?yàn)橛幸欢ǖ臅r(shí)間滯后)。nTCP 標(biāo)準(zhǔn)沒(méi)有規(guī)定對(duì)不按序到達(dá)的數(shù)據(jù)應(yīng)如何處理。通常是先臨時(shí)存放在接收窗口中,等到字節(jié)流中所缺少的字節(jié)收到后,再按序交付上層的應(yīng)用進(jìn)程。nTCP 要求接收方必須有累積確認(rèn)的功能,這樣可以減小傳輸開(kāi)銷。 課件制作人:謝希仁5.6.2 超時(shí)重傳時(shí)間的選擇n重傳機(jī)制是 TCP 中最重要和最復(fù)雜的問(wèn)題之一。nTCP 每發(fā)送一個(gè)報(bào)文段,就對(duì)這個(gè)報(bào)文段設(shè)置一次計(jì)時(shí)器。只要計(jì)時(shí)器設(shè)置的重傳時(shí)間到但還沒(méi)有收到確認(rèn),就要重傳這一報(bào)文段。課件制作人:謝希仁往

41、返時(shí)延的方差很大n由于 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í)間nTCP 保留了 RTT 的一個(gè)加權(quán)平均往返時(shí)間 RTTS(這又稱為平滑的往返時(shí)間)。n第一次測(cè)量到 RTT 樣本時(shí),RTTS 值就取為所測(cè)量到的 RTT 樣本值。以后每測(cè)量到一個(gè)新的 RTT 樣本,就按下式重新計(jì)算一次 RTTS: 新的 RTTS (1 ) (舊的 RTTS) (新的 RTT 樣本) (5-4)n式中,0 1。若 很接近于零,表示 RTT 值更新較慢。若選擇 接近于 1,

42、則表示 RTT 值更新較快。nRFC 2988 推薦的 值為 1/8,即 0.125。課件制作人:謝希仁超時(shí)重傳時(shí)間 RTO (RetransmissionTime-Out) nRTO 應(yīng)略大于上面得出的加權(quán)平均往返時(shí)間 RTTS。nRFC 2988 建議使用下式計(jì)算 RTO:n RTO RTTS + 4 RTTD (5-5)nRTTD 是 RTT 的偏差的加權(quán)平均值。nRFC 2988 建議這樣計(jì)算 RTTD。第一次測(cè)量時(shí),RTTD 值取為測(cè)量到的 RTT 樣本值的一半。在以后的測(cè)量中,則使用下式計(jì)算加權(quán)平均的 RTTD:新的 RTTD = (1 ) (舊的RTTD) + RTTS 新的 R

43、TT 樣本 (5-6)n 是個(gè)小于 1 的系數(shù),其推薦值是 1/4,即 0.25。課件制作人:謝希仁超時(shí)重傳時(shí)間的計(jì)算時(shí)序圖( 前三次)序號(hào)序號(hào)RTT樣本樣本RTTSRTTDRTO1RTT樣本1RTTS1=RTT樣本1RTTD1=0.5RTT樣本1RTO1=RTTS1+4RTTD1=3RTT樣本12RTT樣本2RTTS2 =(1-)RTTS1 +RTT樣本2RTTD2=(1-)RTTD1 +|RTTS2-RTT樣本2|RTO2=RTTS2+4RTTD23RTT樣本3RTTS3 =(1-)RTTS2 +RTT樣本3 RTTD3=(1-)RTTD2 +|RTTS3-RTT樣本3|RTO3=RTTS

44、3+4RTTD3課件制作人:謝希仁往返時(shí)間 RTT?往返時(shí)間的測(cè)量相當(dāng)復(fù)雜 nTCP 報(bào)文段 1 沒(méi)有收到確認(rèn)。重傳(即報(bào)文段 2)后,收到了確認(rèn)報(bào)文段 ACK。n如何判定此確認(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 算法 n在計(jì)算平均往返時(shí)間 RTT 時(shí),只要報(bào)文段重傳了,就不采用其往返時(shí)間樣本。n這樣得出的加權(quán)平均平均往返時(shí)間 RTTS 和超時(shí)重傳時(shí)間 RTO 就較準(zhǔn)確。 課件制作人:謝希仁n報(bào)文段每重傳一次,就把 RTO 增大

45、一些:新的 RTO (舊的 RTO) n系數(shù) 的典型值是 2 。n當(dāng)不再發(fā)生報(bào)文段的重傳時(shí),才根據(jù)報(bào)文段的往返時(shí)延更新平均往返時(shí)延 RTT 和超時(shí)重傳時(shí)間 RTO 的數(shù)值。n實(shí)踐證明,這種策略較為合理。 修正的 Karn 算法 課件制作人:謝希仁5.6.3 選擇確認(rèn) SACK(Selective ACK) n接收方收到了和前面的字節(jié)流不連續(xù)的兩個(gè)字節(jié)塊。n如果這些字節(jié)的序號(hào)都在接收窗口之內(nèi),那么接收方就先收下這些數(shù)據(jù),但要把這些信息準(zhǔn)確地告訴發(fā)送方,使發(fā)送方不要再重復(fù)發(fā)送這些已收到的數(shù)據(jù)。 課件制作人:謝希仁1 1000 1501 3000 3501 4500確認(rèn)號(hào) = 1001L1 = 15

46、01L2 = 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。 課件制作人:謝希仁RFC 2018 的規(guī)定n如果要使用選擇確認(rèn),那么在建立 TCP 連接時(shí),就要在 TCP 首部的選項(xiàng)中加上“允許 SACK”的選項(xiàng),而雙

47、方必須都事先商定好。n如果使用選擇確認(rèn),那么原來(lái)首部中的“確認(rèn)號(hào)字段”的用法仍然不變。只是以后在 TCP 報(bào)文段的首部中都增加了 SACK 選項(xiàng),以便報(bào)告收到的不連續(xù)的字節(jié)塊的邊界。n由于首部選項(xiàng)的長(zhǎng)度最多只有 40 字節(jié),而指明一個(gè)邊界就要用掉 4 字節(jié),因此在選項(xiàng)中最多只能指明 4 個(gè)字節(jié)塊的邊界信息。課件制作人:謝希仁5.7 TCP 的流量控制5.7.1 利用滑動(dòng)窗口實(shí)現(xiàn)流量控制n一般說(shuō)來(lái),我們總是希望數(shù)據(jù)傳輸?shù)酶煲恍5绻l(fā)送方把數(shù)據(jù)發(fā)送得過(guò)快,接收方就可能來(lái)不及接收,這就會(huì)造成數(shù)據(jù)的丟失。n流量控制(flow control)就是讓發(fā)送方的發(fā)送速率不要太快,既要讓接收方來(lái)得及接收

48、,也不要使網(wǎng)絡(luò)發(fā)生擁塞。n利用滑動(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ā)送

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論