運輸層課件制作人_第1頁
運輸層課件制作人_第2頁
運輸層課件制作人_第3頁
運輸層課件制作人_第4頁
運輸層課件制作人_第5頁
已閱讀5頁,還剩142頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課件制作人:李琳第 7 章 運輸層課件制作人:李琳目錄7.1 運輸層協(xié)議概述7.2 TCP/IP 體系中的運輸層7.3 用戶數(shù)據(jù)報協(xié)議 UDP 7.4 傳輸控制協(xié)議 TCP課件制作人:李琳7.1 運輸層協(xié)議概述 從通信和信息處理的角度看,運輸層向它上面的應用層提供通信服務(wù),它屬于面向通信部分的最高層,同時也是用戶功能中的最低層。 物理層網(wǎng)絡(luò)層運輸層應用層數(shù)據(jù)鏈路層面向信息處理面向通信用戶功能網(wǎng)絡(luò)功能課件制作人:李琳運輸層為相互通信的應用進程提供了邏輯通信 54321運輸層提供應用進程間的邏輯通信主機 A主機 B應用進程應用進程路由器 1路由器 2AP1LAN2WANAP2AP3AP4IP 層L

2、AN1AP1AP2AP4端口端口54321IP 協(xié)議的作用范圍運輸層協(xié)議 TCP 和 UDP 的作用范圍AP3課件制作人:李琳應用進程之間的通信兩個主機進行通信實際上就是兩個主機中的應用進程互相通信。 應用進程之間的通信又稱為端到端的通信。 運輸層的一個很重要的功能就是復用和分用。應用層不同進程的報文通過不同的端口向下交到運輸層,再往下就共用網(wǎng)絡(luò)層提供的服務(wù)?!斑\輸層提供應用進程間的邏輯通信”?!斑壿嬐ㄐ拧钡囊馑际牵哼\輸層之間的通信好像是沿水平方向傳送數(shù)據(jù)。但事實上這兩個運輸層之間并沒有一條水平方向的物理連接。課件制作人:李琳運輸層協(xié)議和網(wǎng)絡(luò)層協(xié)議的主要區(qū)別 應用進程應用進程IP 協(xié)議的作用范

3、圍(提供主機之間的邏輯通信)TCP 和 UDP 協(xié)議的作用范圍(提供進程之間的邏輯通信)因 特 網(wǎng)課件制作人:李琳運輸層的主要功能 運輸層為應用進程之間提供端到端的邏輯通信(但網(wǎng)絡(luò)層是為主機之間提供邏輯通信)。運輸層還要對收到的報文進行差錯檢測。運輸層需要有兩種不同的運輸協(xié)議,即面向連接的 TCP 和無連接的 UDP。 課件制作人:李琳運輸層與其上下層之間的關(guān)系的 OSI 表示法 運輸實體運輸實體運輸協(xié)議運輸層層接口 運輸服務(wù)用戶(應用層實體) 運輸服務(wù)用戶 (應用層實體)層接口 網(wǎng)絡(luò)層(或網(wǎng)際層)應用層主機 A主機 B運輸層服務(wù)訪問點TSAP網(wǎng)絡(luò)層服務(wù)訪問點NSAP課件制作人:李琳兩種不同的

4、運輸協(xié)議運輸層向高層用戶屏蔽了下面網(wǎng)絡(luò)核心的細節(jié)(如網(wǎng)絡(luò)拓撲、所采用的路由選擇協(xié)議等),它使應用進程看見的就是好像在兩個運輸層實體之間有一條端到端的邏輯通信信道。當運輸層采用面向連接的 TCP 協(xié)議時,盡管下面的網(wǎng)絡(luò)是不可靠的(只提供盡最大努力服務(wù)),但這種邏輯通信信道就相當于一條全雙工的可靠信道。當運輸層采用無連接的 UDP 協(xié)議時,這種邏輯通信信道是一條不可靠信道。 運輸層向上提供可靠的和不可靠的邏輯通信信道 ?應用層運輸層發(fā)送進程接收進程接收進程數(shù)據(jù)數(shù)據(jù)全雙工可靠信道數(shù)據(jù)數(shù)據(jù)使用 TCP 協(xié)議使用 UDP 協(xié)議不可靠信道發(fā)送進程課件制作人:李琳網(wǎng)絡(luò)環(huán)境中的進程通信與單機系統(tǒng)內(nèi)部的進程通信

5、的主要區(qū)別:網(wǎng)絡(luò)中主機的高度自治性;不是在同一個主機系統(tǒng)之中,沒有一個統(tǒng)一的高層進行控制與管理;網(wǎng)絡(luò)中一臺主機對其它主機的 活動狀態(tài) 位于其它主機系統(tǒng)中的各個進程狀態(tài) 這些進程什么時間參與網(wǎng)絡(luò)活動 希望與網(wǎng)絡(luò)中哪一臺主機的什么進程通信一 概無從知道網(wǎng)絡(luò)環(huán)境中分布式進程通信的特點課件制作人:李琳網(wǎng)絡(luò)環(huán)境中分布式進程通信需要解決:進程命名與尋址方法多重協(xié)議的識別進程間相互作用的模式課件制作人:李琳網(wǎng)絡(luò)環(huán)境中進程標識在一臺計算機中,不同的進程用進程號或進程標識(process ID)惟一地標識出來 網(wǎng)絡(luò)環(huán)境中完整的進程標識應該是: 本地主機地址-本地進程標識 遠程主機地址-遠程進程標識進程地址也叫做

6、端口號(port number) 課件制作人:李琳多重協(xié)議的識別UNIX操作系統(tǒng)的TCP/IP的傳輸層就有TCP協(xié)議和UDP協(xié)議;網(wǎng)絡(luò)環(huán)境中一個進程的全網(wǎng)惟一的標識需要一個三元組來表示:協(xié)議,本地地址,本地端口號。網(wǎng)絡(luò)環(huán)境中一個完整的進程通信標識需要一個五元組來表示: 協(xié)議 本地地址 本地端口號 遠地地址 遠地端口號課件制作人:李琳進程間的作用模式在TCP/IP協(xié)議體系中,進程間的相互作用采用客戶/服務(wù)器(Client/Server)模式 ;客戶與服務(wù)器分別表示相互通信的兩個應用程序的進程;客戶向服務(wù)器發(fā)出服務(wù)請求,服務(wù)器響應客戶的請求,提供客戶機所需要的網(wǎng)絡(luò)服務(wù); 課件制作人:李琳與數(shù)據(jù)鏈路

7、層的區(qū)別主機路由器主機網(wǎng)絡(luò)網(wǎng)絡(luò)數(shù)據(jù)鏈路層的職責數(shù)據(jù)鏈路層的職責傳輸層的職責課件制作人:李琳TCP/IP的運輸層有兩個不同的協(xié)議:(1) 用戶數(shù)據(jù)報協(xié)議 UDP (User Datagram Protocol)(2) 傳輸控制協(xié)議 TCP (Transmission Control Protocol)7.2 TCP/IP 體系中的運輸層7.2.1 運輸層中的兩個協(xié)議課件制作人:李琳兩個對等運輸實體在通信時傳送的數(shù)據(jù)單位叫作運輸協(xié)議數(shù)據(jù)單元 TPDU (Transport Protocol Data Unit)。TCP 傳送的數(shù)據(jù)單位協(xié)議是 TCP 報文段(segment) UDP 傳送的數(shù)據(jù)單位

8、協(xié)議是 UDP 報文或用戶數(shù)據(jù)報。 TCP 與 UDP 課件制作人:李琳TPDU結(jié)構(gòu)與IP分組、幀結(jié)構(gòu)的關(guān)系課件制作人:李琳TCP/IP 體系中的運輸層協(xié)議 TCPUDPIP應用層與各種網(wǎng)絡(luò)接口運輸層課件制作人:李琳TCP 與 UDP UDP 在傳送數(shù)據(jù)之前不需要先建立連接。對方的運輸層在收到 UDP 報文后,不需要給出任何確認。雖然 UDP 不提供可靠交付,但在某些情況下 UDP 是一種最有效的工作方式。TCP 則提供面向連接的服務(wù)。TCP 不提供廣播或多播服務(wù)。由于 TCP 要提供可靠的、面向連接的運輸服務(wù),因此不可避免地增加了許多的開銷。這不僅使協(xié)議數(shù)據(jù)單元的首部增大很多,還要占用許多的

9、處理機資源。 課件制作人:李琳還要強調(diào)兩點 運輸層的 UDP 用戶數(shù)據(jù)報與網(wǎng)際層的IP數(shù)據(jù)報有很大區(qū)別。IP 數(shù)據(jù)報要經(jīng)過互連網(wǎng)中許多路由器的存儲轉(zhuǎn)發(fā),但 UDP 用戶數(shù)據(jù)報是在運輸層的端到端抽象的邏輯信道中傳送的。TCP 報文段是在運輸層抽象的端到端邏輯信道中傳送,這種信道是可靠的全雙工信道。但這樣的信道卻不知道究竟經(jīng)過了哪些路由器,而這些路由器也根本不知道上面的運輸層是否建立了 TCP 連接。 課件制作人:李琳7.2.2 端口的概念端口就是運輸層服務(wù)訪問點 TSAP。端口的作用就是讓應用層的各種應用進程都能將其數(shù)據(jù)通過端口向下交付給運輸層,以及讓運輸層知道應當將其報文段中的數(shù)據(jù)向上通過端口

10、交付給應用層相應的進程。從這個意義上講,端口是用來標志應用層的進程。 端口在進程之間的通信中所起的作用 應用層運輸層網(wǎng)絡(luò)層TCP 報文段UDP用戶數(shù)據(jù)報應用進程TCP 復用IP 復用UDP 復用TCP 報文段UDP用戶數(shù)據(jù)報應用進程端口端口TCP 分用UDP 分用IP 分用IP 數(shù)據(jù)報IP 數(shù)據(jù)報發(fā)送方接收方課件制作人:李琳課件制作人:李琳端口 端口用一個 16 bit 端口號進行標志。端口號只具有本地意義,即端口號只是為了標志本計算機應用層中的各進程。在因特網(wǎng)中不同計算機的相同端口號是沒有聯(lián)系的。課件制作人:李琳兩類端口 一類是熟知端口,其數(shù)值一般為 01023。當一種新的應用程序出現(xiàn)時,必

11、須為它指派一個熟知端口。另一類則是一般端口,用來隨時分配給請求通信的客戶進程。 課件制作人:李琳熟知端口號的分配方法UDP的熟知端口號的分配29端口號服務(wù)進程說明53domain域名服務(wù)67/68DHCP動態(tài)主機配置協(xié)議69TFTP簡單文件傳送協(xié)議111RPC遠程過程調(diào)用123NTP網(wǎng)絡(luò)時間協(xié)議161/162SNMP簡單網(wǎng)絡(luò)管理協(xié)議520RIP路由信息協(xié)議課件制作人:李琳TCP的熟知端口號的分配30端口號服務(wù)進程說明20FTP文件傳輸協(xié)議(數(shù)據(jù)連接)21FTP文件傳輸協(xié)議(控制連接)23TELNET網(wǎng)絡(luò)虛擬終端協(xié)議25SMTP簡單郵件傳輸協(xié)議80HTTP超文本傳輸協(xié)議119NNTP網(wǎng)絡(luò)新聞傳輸

12、協(xié)議179BGP邊界路由協(xié)議課件制作人:李琳插口(socket) TCP 使用“連接”(而不僅僅是“端口”)作為最基本的抽象,同時將 TCP 連接的端點稱為插口(socket),或套接字、套接口。插口和端口、IP 地址的關(guān)系是: IP 地址3 端口號1500 3, 1500插口(socket)課件制作人:李琳同一個名詞 socket有多種不同的意思 應用編程接口 API 稱為 socket API, 簡稱為 socket。socket API 中使用的一個函數(shù)名也叫作socket。調(diào)用 socket 函數(shù)的端點稱為 socket。調(diào)用 socke t函數(shù)時其返回值稱為 socket描述符,可簡

13、稱為 socket。在操作系統(tǒng)內(nèi)核中連網(wǎng)協(xié)議的 Berkeley 實現(xiàn),稱為 socket 實現(xiàn)。 課件制作人:李琳7.3 用戶數(shù)據(jù)報協(xié)議 UDP 7.3.1 UDP 概述 UDP 只在 IP 的數(shù)據(jù)報服務(wù)之上增加了很少一點的功能,即端口的功能和差錯檢測的功能。雖然 UDP 用戶數(shù)據(jù)報只能提供不可靠的交付,但 UDP 在某些方面有其特殊的優(yōu)點。發(fā)送數(shù)據(jù)之前不需要建立連接UDP 的主機不需要維持復雜的連接狀態(tài)表。UDP 用戶數(shù)據(jù)報只有8個字節(jié)的首部開銷。網(wǎng)絡(luò)出現(xiàn)的擁塞不會使源主機的發(fā)送速率降低。這對某些實時應用是很重要的。 課件制作人:李琳UDP 的主要特點 UDP 是無連接的,即發(fā)送數(shù)據(jù)之前不

14、需要建立連接。UDP 使用盡最大努力交付,即不保證可靠交付,同時也不使用擁塞控制。UDP 是面向報文的。UDP 沒有擁塞控制,很適合多媒體通信的要求。 UDP 支持一對一、一對多、多對一和多對多的交互通信。UDP 的首部開銷小,只有 8 個字節(jié)。 課件制作人:李琳面向報文的 UDP發(fā)送方 UDP 對應用程序交下來的報文,在添加首部后就向下交付 IP 層。UDP 對應用層交下來的報文,既不合并,也不拆分,而是保留這些報文的邊界。應用層交給 UDP 多長的報文,UDP 就照樣發(fā)送,即一次發(fā)送一個報文。接收方 UDP 對 IP 層交上來的 UDP 用戶數(shù)據(jù)報,在去除首部后就原封不動地交付上層的應用進

15、程,一次交付一個完整的報文。應用程序必須選擇合適大小的報文。課件制作人:李琳UDP 是面向報文的 IP 數(shù)據(jù)報的數(shù)據(jù)部分IP 首部IP 層UDP 首部UDP 用戶數(shù)據(jù)報的數(shù)據(jù)部分運輸層應用層報文應用層課件制作人:李琳端口是用報文隊列來實現(xiàn) UDP 端口 51000UDP 端口 69出隊列入隊列出隊列入隊列TFTP 服務(wù)器TFTP 客戶UDP 用戶數(shù)據(jù)報應用層運輸層課件制作人:李琳7.3.2 UDP 用戶數(shù)據(jù)報的首部格式 偽首部源端口目的端口長 度檢驗和數(shù) 據(jù)首 部UDP長度源 IP 地址目的 IP 地址017IP 數(shù)據(jù)報字節(jié)44112122222字節(jié)發(fā)送在前數(shù) 據(jù)首 部UDP 用戶數(shù)據(jù)報偽首部

16、源端口目的端口長 度檢驗和數(shù) 據(jù)首 部UDP長度源 IP 地址目的 IP 地址017IP 數(shù)據(jù)報字節(jié)44112122222字節(jié)發(fā)送在前數(shù) 據(jù)首 部UDP 用戶數(shù)據(jù)報用戶數(shù)據(jù)報 UDP 有兩個字段:數(shù)據(jù)字段和首部字段。首部字段有 8 個字節(jié),由 4 個字段組成,每個字段都是兩個字節(jié)。 偽首部源端口目的端口長 度檢驗和數(shù) 據(jù)首 部UDP長度源 IP 地址目的 IP 地址017IP 數(shù)據(jù)報字節(jié)44112122222字節(jié)發(fā)送在前數(shù) 據(jù)首 部UDP 用戶數(shù)據(jù)報在計算檢驗和時,臨時把“偽首部”和 UDP 用戶數(shù)據(jù)報連接在一起。偽首部僅僅是為了計算檢驗和。計算 UDP 檢驗和的例子 10011001 000

17、10011 153.1900001000 01101000 8.10410101011 00000011 171.300001110 00001011 14.1100000000 00010001 0 和 1700000000 00001111 1500000100 00111111 108700000000 00001101 1300000000 00001111 1500000000 00000000 0(檢驗和)01010100 01000101 數(shù)據(jù)01010011 01010100 數(shù)據(jù)01001001 01001110 數(shù)據(jù)01000111 00000000 數(shù)據(jù)和 0(填充)10

18、010110 11101011 求和得出的結(jié)果01101001 00010100 檢驗和 04112 字節(jié)偽首部8 字節(jié)UDP 首部7 字節(jié)數(shù)據(jù)填充按二進制反碼運算求和將得出的結(jié)果求反碼全 0 17 15 1087 13 15 全 0數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù)數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù) 全 0課件制作人:李琳確定應用程序在傳輸層是否采用UDP協(xié)議的原則:系統(tǒng)對性能的要求高于對數(shù)據(jù)完整性的要求;需要“簡短快捷”的數(shù)據(jù)交換;需要多播和廣播的應用; UDP協(xié)議是一種適用于實時語音與視頻傳輸?shù)膫鬏攲訁f(xié)議。42課件制作人:李琳 TCP與UDP協(xié)議的比較特征/描述TCPUDP一般描述允許應用程序可靠地發(fā)送數(shù)據(jù),功能齊全

19、簡單、高速,只負責將應用層與網(wǎng)絡(luò)層銜接起來面向連接或無連接面向連接,在TPDU傳輸之前需要建立TCP連接無連接,在TPDU傳輸之前不需要建立UDP連接與應用層的數(shù)據(jù)接口基于字節(jié)流,應用層不需要規(guī)定特定的數(shù)據(jù)格式基于報文,應用層需要將數(shù)據(jù)分成包來傳送可靠性與確認可靠報文傳輸,對所有的數(shù)據(jù)均要確認不可靠,不需要對傳輸?shù)臄?shù)據(jù)確認,盡力而為地交付重傳自動重傳丟失的數(shù)據(jù)不負責檢查是否丟失數(shù)據(jù)和重傳開銷低,但高于UDP很低傳輸速率高,但低于UDP很高適用的數(shù)據(jù)量從少量到幾個GB的數(shù)據(jù)從少量到幾百個字節(jié)的數(shù)據(jù)適用的應用類型對數(shù)據(jù)傳輸可靠性要求較高的應用,例如文件與報文傳輸發(fā)送數(shù)量比較少、對數(shù)據(jù)傳輸可靠性要求

20、較低的應用,例如IP電話、視頻會議、多播與廣播43課件制作人:李琳7.4 傳輸控制協(xié)議 TCP 7.4.1 TCP 概述 端口發(fā)送 TCP 報文段TCPTCP接收緩存發(fā)送緩存報文段報文段報文段端口發(fā)送端接收端向發(fā)送緩存寫入數(shù)據(jù)塊從接收緩存讀取數(shù)據(jù)塊應用進程應用進程課件制作人:李琳TCP 最主要的特點1.TCP 是面向連接的運輸層協(xié)議。 應用程序在使用TCP協(xié)議之前,必須先建立TCP連接,在傳送數(shù)據(jù)完畢后,必須釋放已經(jīng)建立的TCP連接。TCP 連接是一條虛連接而不是一條真正的物理連接。每一條 TCP 連接只能有兩個端點(endpoint),每一條 TCP 連接只能是點對點的(一對一),無廣播和多

21、播。 TCP 連接的端點不是主機,不是主機的IP 地址,不是應用進程,也不是運輸層的協(xié)議端口。TCP 連接的端點叫做套接字(socket)或插口。課件制作人:李琳套接字 (socket) 套接字 socket = (IP地址: 端口號) (5-1)每一條 TCP 連接唯一地被通信兩端的兩個端點(即兩個套接字)所確定。即: TCP 連接 := socket1, socket2 = (IP1: port1), (IP2: port2) (5-2)注意:同一個IP地址可以有多個不同的TCP連接,同一個端口號也可以出現(xiàn)在多個不同的TCP連接中。課件制作人:李琳2. 支持同時建立多個并發(fā)的TCP連接根據(jù)

22、應用程序的需要,TCP協(xié)議支持一個服務(wù)器與多個客戶端同時建立多個TCP連接;也支持一個客戶端與多個服務(wù)器同時建立多個TCP連接;TCP軟件將分別管理多個TCP連接。47課件制作人:李琳舉例:一個Web服務(wù)器的套接字為“1:80”,同時有三個客戶端要訪問此服務(wù)器,它們的套接字分別為“:53022”、“:63522”和“:57122”,則服務(wù)器需要同時建立3個TCP連接,用五元組表示這3個連接,分別為:TCP, 1:80, :53022TCP, 1:80, :63522TCP, 1:80, :57122課件制作人:李琳3.TCP 提供可靠交付的服務(wù)。TCP是一種可靠的傳輸服務(wù)協(xié)議,它使用確認機制檢

23、查數(shù)據(jù)是否安全和完整地到達,并且提供擁塞控制功能;TCP支持可靠數(shù)據(jù)通信的關(guān)鍵是對發(fā)送和接收的數(shù)據(jù)進行跟蹤、確認與重傳;傳輸層傳輸?shù)目煽啃允墙⒃诰W(wǎng)絡(luò)層基礎(chǔ)上,同時也就會受到它們的限制。通過TCP連接傳送的數(shù)據(jù),無差錯、不丟失、不重復、按序到達。課件制作人:李琳TCP允許通信雙方的應用進程在任何時候都能發(fā)送數(shù)據(jù)。TCP連接的兩端都設(shè)有發(fā)送緩存和接收緩存,用來臨時存放雙向通信的數(shù)據(jù)。在發(fā)送時,應用程序把數(shù)據(jù)傳送給TCP的緩存后,就可以做自己的事,TCP在合適的時候把數(shù)據(jù)發(fā)送出去。在接收時,TCP把收到的數(shù)據(jù)放入緩存,上層的應用進程在合適的時候讀取緩存中的數(shù)據(jù)。4. TCP 提供全雙工通信。課件制

24、作人:李琳 “流”指的是流入到進程或從進程流出的字節(jié)序列?!懊嫦蜃止?jié)流”的含義是:雖然應用程序和TCP交互的是一次一個大小不等的數(shù)據(jù)塊,但TCP把應用程序交下來的數(shù)據(jù)看成僅僅是一連串的無結(jié)構(gòu)的字節(jié)流。TCP不保證接收方應用程序所收到的數(shù)據(jù)塊和發(fā)送方應用程序所發(fā)出的數(shù)據(jù)塊具有對應大小的關(guān)系,但接收方應用程序收到的字節(jié)流必須和送方應用程序發(fā)出的字節(jié)流完全一樣。接收方的應用程序必須有能力識別收到的字節(jié)流,把它還原成有意義的應用層數(shù)據(jù)。5.面向字節(jié)流。課件制作人:李琳TCP 面向流的概念 課件制作人:李琳應當注意TCP 對應用進程一次把多長的報文發(fā)送到TCP 的緩存中是不關(guān)心的。TCP 根據(jù)對方給出的

25、窗口值和當前網(wǎng)絡(luò)擁塞的程度來決定一個報文段應包含多少個字節(jié)(UDP 發(fā)送的報文長度是應用進程給出的)。如果應用進程傳送到TCP緩存的數(shù)據(jù)塊太長,TCP就可以把它劃分短一些再傳送。如果應用進程一次只發(fā)來一個字節(jié),TCP也可以等待積累足夠多的字節(jié)后再構(gòu)成報文段發(fā)送出去。課件制作人:李琳流(stream)相當于一個管道,從一端放入什么內(nèi)容,從另一端可以照原樣取出什么內(nèi)容,它描述了一個不出現(xiàn)丟失、重復和亂序的數(shù)據(jù)傳輸過程;TCP在傳輸過程中將應用程序提交的數(shù)據(jù)看成是一連串的、無結(jié)構(gòu)的字節(jié)流;因此接收端應用程序數(shù)據(jù)字節(jié)的起始與終結(jié)位置必須由應用程序自己確定。課件制作人:李琳 總結(jié): TCP協(xié)議是面向連接

26、、面向字節(jié)流、支持全雙工、支持并發(fā)連接、提供確認重傳與擁塞控制的可靠傳輸層協(xié)議。55課件制作人:李琳7.4.2 TCP報文段的首部TCP首部20 字節(jié)的固定首部目 的 端 口數(shù)據(jù)偏移檢 驗 和選 項 (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認 號保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充TCP 數(shù)據(jù)部分TCP 首部TCP 報文段IP 數(shù)據(jù)部分IP 首部發(fā)送在前TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗 和選 項 (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認 號保 留FINSYNRSTPSHACKURG

27、比特 0 8 16 24 31填 充源端口和目的端口字段各占 2 字節(jié)。端口是運輸層與應用層的服務(wù)接口。運輸層的復用和分用功能都要通過端口才能實現(xiàn)。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗 和選 項 (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認 號保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充序號字段占 4 字節(jié)。TCP 連接中傳送的數(shù)據(jù)流中的每一個字節(jié)都編上一個序號。序號字段的值則指的是本報文段所發(fā)送的數(shù)據(jù)的第一個字節(jié)的序號。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗 和選 項 (長 度 可 變)源 端 口序 號緊

28、 急 指 針窗 口確 認 號保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充確認號字段占 4 字節(jié),是期望收到對方的下一個報文段的數(shù)據(jù)的第一個字節(jié)的序號。 是對收到的數(shù)據(jù)的最高序號表示確認,確認號是對是對最高序號加1。TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗 和選 項 (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認 號保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充數(shù)據(jù)偏移占 4 bit,它指出 TCP 報文段的數(shù)據(jù)起始處距離 TCP 報文段的起始處有多遠(即首部長度)?!皵?shù)據(jù)偏移”的單位不是字節(jié)而是 32

29、 bit 字(4 字節(jié)為計算單位)。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗 和選 項 (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認 號保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充保留字段占 6 bit,保留為今后使用,但目前應置為 0。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗 和選 項 (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認 號保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充緊急比特 URG 當 URG 1 時,表明緊急指針字段有效。它告訴系統(tǒng)此報文段中有緊急

30、數(shù)據(jù),應盡快傳送(相當于高優(yōu)先級的數(shù)據(jù))。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗 和選 項 (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認 號保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充確認比特 ACK 只有當 ACK 1 時確認號字段才有效。當 ACK 0 時,確認號無效。TCP規(guī)定,在連接建立后所有傳送的報文段都必須把ACK置1。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗 和選 項 (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認 號保 留FINSYNRSTPSHACKURG比特 0 8 16 24

31、 31填 充推送比特 PSH (PuSH) 發(fā)送方置1,并立即創(chuàng)建一個報文段發(fā)送出去。接收 TCP 收到推送比特置 1 的報文段,就盡快地交付給接收應用進程,而不再等到整個緩存都填滿了后再向上交付。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗 和選 項 (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認 號保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充復位比特 RST (ReSeT) 當 RST 1 時,表明 TCP 連接中出現(xiàn)嚴重差錯(如由于主機崩潰或其他原因),必須釋放連接,然后再重新建立運輸連接。還可用來拒絕一個非法的報文段或拒絕打開

32、一個連接。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗 和選 項 (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認 號保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充同步比特 SYN 同步比特 SYN 置為 1,就表示這是一個連接請求或連接接受報文。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗 和選 項 (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認 號保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充終止比特 FIN (FINal) 用來釋放一個連接。當FIN 1 時,表明此報文段的發(fā)

33、送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運輸連接。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗 和選 項 (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認 號保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充窗口字段 占 2 字節(jié)。窗口字段用來控制對方發(fā)送的數(shù)據(jù)量,單位為字節(jié)。TCP 連接的一端根據(jù)設(shè)置的緩存空間大小確定自己的接收窗口大小,然后通知對方以確定對方的發(fā)送窗口的上限。窗口指的是發(fā)送本報文段的一方的接收窗口。窗口值告訴對方:從本報文段首部中的確認號算起,接收方目前允許對方發(fā)送的數(shù)據(jù)量。窗口值作為接收方讓發(fā)送方設(shè)置其發(fā)送窗口的依據(jù)。窗口值是經(jīng)

34、常在動態(tài)變化的。TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗 和選 項 (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認 號保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充檢驗和 占 2 字節(jié)。檢驗和字段檢驗的范圍包括首部和數(shù)據(jù)這兩部分。在計算檢驗和時,要在 TCP 報文段的前面加上 12 字節(jié)的偽首部。TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗 和選 項 (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認 號保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充緊急指針字段 占 16 bit。緊

35、急指針指出在本報文段中的緊急數(shù)據(jù)的最后一個字節(jié)的序號。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗 和選 項 (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認 號保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充選項字段 長度可變。TCP 只規(guī)定了一種選項,即最大報文段長度 MSS (Maximum Segment Size)。MSS 告訴對方 TCP:“我的緩存所能接收的報文段的數(shù)據(jù)字段的最大長度是 MSS 個字節(jié)。” MSS 是 TCP 報文段中的數(shù)據(jù)字段的最大長度。數(shù)據(jù)字段加上 TCP 首部才等于整個的 TCP 報文段。課件制作人:李琳

36、其他選項窗口擴大選項 占 3 字節(jié),其中有一個字節(jié)表示移位值 S。新的窗口值等于TCP 首部中的窗口位數(shù)增大到(16 + S),相當于把窗口值向左移動 S 位后獲得實際的窗口大小。時間戳選項占10 字節(jié),其中最主要的字段時間戳值字段(4 字節(jié))和時間戳回送回答字段(4 字節(jié))。選擇確認選項。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗 和選 項 (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認 號保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充填充字段 這是為了使整個首部長度是 4 字節(jié)的整數(shù)倍。 課件制作人:李琳7.4.3 TCP 的數(shù)據(jù)

37、編號與確認 TCP 協(xié)議是面向字節(jié)的。TCP 將所要傳送的報文看成是字節(jié)組成的數(shù)據(jù)流,并使每一個字節(jié)對應于一個序號。在連接建立時,雙方要商定初始序號。TCP 每次發(fā)送的報文段的首部中的序號字段數(shù)值表示該報文段中的數(shù)據(jù)部分的第一個字節(jié)的序號。 TCP 的確認是對接收到的數(shù)據(jù)的最高序號表示確認。接收端返回的確認號是已收到的數(shù)據(jù)的最高序號加 1。因此確認號表示接收端期望下次收到的數(shù)據(jù)中的第一個數(shù)據(jù)字節(jié)的序號。 課件制作人:李琳控制報文段發(fā)送的三種機制TCP維持一個變量等于最大報文段長度MSS;推送操作;計時器機制。課件制作人:李琳思考:若收到的報文段無差錯,只是未按序號,那么應如何處理?課件制作人:

38、李琳7.4.4 TCP 的流量控制與擁塞控制1. 滑動窗口的概念TCP 采用大小可變的滑動窗口進行流量控制。窗口大小的單位是字節(jié)。在 TCP 報文段首部的窗口字段寫入的數(shù)值就是當前給對方設(shè)置的發(fā)送窗口數(shù)值的上限。發(fā)送窗口在連接建立時由雙方商定。但在通信的過程中,接收端可根據(jù)自己的資源情況,隨時動態(tài)地調(diào)整對方的發(fā)送窗口上限值(可增大或減小)。下面看例1 收到確認即可前移1002003004005006007008009001012013014015016017018011發(fā)送窗口可發(fā)送不可發(fā)送指針發(fā)送端要發(fā)送 900 字節(jié)長的數(shù)據(jù),劃分為 9 個 100 字節(jié)長的報文段,而發(fā)送窗口確定為 500

39、 字節(jié)。發(fā)送端只要收到了對方的確認,發(fā)送窗口就可前移。發(fā)送 TCP 要維護一個指針。每發(fā)送一個報文段,指針就向前移動一個報文段的距離。收到確認即可前移1002003004005006007008009001012013014015016017018011可發(fā)送不可發(fā)送指針1002003004005006007008009001012013014015016017018011發(fā)送窗口可發(fā)送不可發(fā)送指針發(fā)送窗口前移發(fā)送端已發(fā)送了 400 字節(jié)的數(shù)據(jù),但只收到對前 200 字節(jié)數(shù)據(jù)的確認,同時窗口大小不變?,F(xiàn)在發(fā)送端還可發(fā)送 300 字節(jié)。 已發(fā)送并被確認已發(fā)送但未被確認10020030040050

40、06007008009001012013014015016017018011已發(fā)送并被確認已發(fā)送但未被確認可發(fā)送不可發(fā)送指針1002003004005006007008009001012013014015016017018011已發(fā)送并被確認可發(fā)送不可發(fā)送指針發(fā)送窗口前移發(fā)送窗口縮小發(fā)送端收到了對方對前 400 字節(jié)數(shù)據(jù)的確認,但對方通知發(fā)送端必須把窗口減小到 400 字節(jié)?,F(xiàn)在發(fā)送端最多還可發(fā)送 400 字節(jié)的數(shù)據(jù)。 課件制作人:李琳例2前移不允許發(fā)送已發(fā)送并收到確認A 的發(fā)送窗口 = 20允許發(fā)送的序號26272829303132333435363738394041424344454647

41、484950515253545556B 期望收到的序號前沿后沿前移收縮根據(jù) B 給出的窗口值A(chǔ) 構(gòu)造出自己的發(fā)送窗口 TCP 標準強烈不贊成發(fā)送窗口前沿向后收縮 課件制作人:李琳不允許發(fā)送已發(fā)送并收到確認A 的發(fā)送窗口位置不變允許發(fā)送但尚未發(fā)送262728293031323334353637383940414243444546474849505152535455已發(fā)送但未收到確認56P1P2P3不允許接收已發(fā)送確認并交付主機B 的接收窗口允許接收26272829303132333435363738394041424344454647484950515253545556未按序收到可用窗口A 發(fā)送

42、了 11 個字節(jié)的數(shù)據(jù) P3 P1 = A 的發(fā)送窗口(又稱為通知窗口)P2 P1 = 已發(fā)送但尚未收到確認的字節(jié)數(shù)P3 P2 = 允許發(fā)送但尚未發(fā)送的字節(jié)數(shù)(又稱為可用窗口) 課件制作人:李琳允許發(fā)送但尚未發(fā)送A 的發(fā)送窗口向前滑動262728293031323334353637383940414243444546474849505152535455已發(fā)送并收到確認不允許發(fā)送已發(fā)送但未收到確認56P1P2P3允許接收B 的接收窗口向前滑動262728293031323334353637383940414243444546474849505152535455已發(fā)送確認并交付主機不允許接收56未

43、按序收到A 收到新的確認號,發(fā)送窗口向前滑動 先存下,等待缺少的數(shù)據(jù)的到達課件制作人:李琳不允許發(fā)送已發(fā)送并收到確認A 的發(fā)送窗口已滿,有效窗口為零262728293031323334353637383940414243444546474849505152535455已發(fā)送但未收到確認56P1P2P3A 的發(fā)送窗口內(nèi)的序號都已用完,但還沒有再收到確認,必須停止發(fā)送。 課件制作人:李琳發(fā)送緩存 最后被確認的字節(jié)發(fā)送應用程序發(fā)送緩存最后發(fā)送的字節(jié)發(fā)送窗口已發(fā)送TCP序號增大課件制作人:李琳接收緩存接收應用程序已收到接收窗口TCP接收緩存下一個讀取的字節(jié)序號增大下一個期望收到的字節(jié)(確認號)課件制作

44、人:李琳發(fā)送緩存與接收緩存的作用發(fā)送緩存用來暫時存放: 發(fā)送應用程序傳送給發(fā)送方 TCP 準備發(fā)送的數(shù)據(jù); TCP 已發(fā)送出但尚未收到確認的數(shù)據(jù)。接收緩存用來暫時存放: 按序到達的、但尚未被接收應用程序讀取的數(shù)據(jù); 不按序到達的數(shù)據(jù)。 課件制作人:李琳需要強調(diào)三點A 的發(fā)送窗口并不總是和 B 的接收窗口一樣大(因為有一定的時間滯后)。TCP 標準沒有規(guī)定對不按序到達的數(shù)據(jù)應如何處理。通常是先臨時存放在接收窗口中,等到字節(jié)流中所缺少的字節(jié)收到后,再按序交付上層的應用進程。TCP 要求接收方必須有累積確認的功能,這樣可以減小傳輸開銷。 利用可變窗口大小進行流量控制雙方確定的窗口值是 400 SEQ

45、 = 1SEQ = 201SEQ = 401SEQ = 301SEQ = 101SEQ = 501ACK = 201, WIN = 300ACK = 601, WIN = 0ACK = 501, WIN = 200主機 A主機 B允許 A 再發(fā)送 300 字節(jié)(序號 201 至 500)A 還能發(fā)送 200 字節(jié)A 還能發(fā)送 200 字節(jié)(序號 301 至 500)A 還能發(fā)送 300 字節(jié)A 還能發(fā)送 100 字節(jié)(序號 401 至 500)A 超時重發(fā),但不能發(fā)送序號 500 以后的數(shù)據(jù)允許 A 再發(fā)送 200 字節(jié)(序號 501 至 700)A 還能發(fā)送 100 字節(jié)(序號 501 至

46、700)不允許 A 再發(fā)送(到序號 600 的數(shù)據(jù)都已收到)SEQ = 201丟失!課件制作人:李琳持續(xù)計時器TCP 為每一個連接設(shè)有一個持續(xù)計時器。只要 TCP 連接的一方收到對方的零窗口通知,就啟動持續(xù)計時器。若持續(xù)計時器設(shè)置的時間到期,就發(fā)送一個零窗口探測報文段(僅攜帶 1 字節(jié)的數(shù)據(jù)),而對方就在確認這個探測報文段時給出了現(xiàn)在的窗口值。若窗口仍然是零,則收到這個報文段的一方就重新設(shè)置持續(xù)計時器。若窗口不是零,則死鎖的僵局就可以打破了課件制作人:李琳利用發(fā)送窗口調(diào)節(jié)發(fā)送端向網(wǎng)絡(luò)注入分組的速率不僅是為了流量控制,還為了對網(wǎng)絡(luò)進行擁塞控制。在運輸層討論時,常說“主機發(fā)送報文段”。在運輸層觀察

47、向網(wǎng)絡(luò)注入數(shù)據(jù)時往往不考慮首部字節(jié)。課件制作人:李琳運輸層的擁塞控制慢開始擁塞避免快重傳快恢復課件制作人:李琳2. 慢開始和擁塞避免發(fā)送端的主機在確定發(fā)送報文段的速率時,既要根據(jù)接收端的接收能力,又要從全局考慮不要使網(wǎng)絡(luò)發(fā)生擁塞。因此,每一個 TCP 連接需要有以下兩個狀態(tài)變量:接收端窗口 rwnd (receiver window) 又稱為通知窗口(advertised window)。擁塞窗口 cwnd (congestion window)。課件制作人:李琳接收端窗口 rwnd 和擁塞窗口 cwnd (1) 接收端窗口 rwnd 這是接收端根據(jù)其目前的接收緩存大小所許諾的最新的窗口值,是

48、來自接收端的流量控制。接收端將此窗口值放在 TCP 報文的首部中的窗口字段,傳送給發(fā)送端。(2) 擁塞窗口 cwnd (congestion window) 是發(fā)送端根據(jù)自己估計的網(wǎng)絡(luò)擁塞程度而設(shè)置的窗口值,是來自發(fā)送端的流量控制。課件制作人:李琳發(fā)送端確定擁塞窗口的原則 只要網(wǎng)絡(luò)沒有出現(xiàn)擁塞,發(fā)送端就使擁塞窗口再增大些,以便將更多的分組發(fā)送出去。只要網(wǎng)絡(luò)出現(xiàn)擁塞,發(fā)送端就使擁塞窗口減少一些,以減少注入到網(wǎng)絡(luò)中的分組數(shù)。判斷擁塞:發(fā)送端沒有按時收到應當?shù)竭_的確認報文ACK。課件制作人:李琳發(fā)送窗口的上限值發(fā)送端的發(fā)送窗口的上限值應當取為接收端窗口 rwnd 和擁塞窗口 cwnd 這兩個變量中較

49、小的一個,即應按以下公式確定:發(fā)送窗口的上限值 Min rwnd, cwnd (7-1)當 rwnd cwnd 時,是接收端的接收能力限制發(fā)送窗口的最大值。當 cwnd rwnd 時,則是網(wǎng)絡(luò)的擁塞限制發(fā)送窗口的最大值。 課件制作人:李琳慢開始算法的原理 在主機剛剛開始發(fā)送報文段時可先將擁塞窗口 cwnd 設(shè)置為一個最大報文段 MSS 的數(shù)值。在每收到一個對新的報文段的確認后,將擁塞窗口增加至多一個 MSS 的數(shù)值。用這樣的方法逐步增大發(fā)送端的擁塞窗口 cwnd,可以使分組注入到網(wǎng)絡(luò)的速率更加合理。 課件制作人:李琳發(fā)送方接收方發(fā)送 M1 確認 M1發(fā)送 M2M3 確認 M2M3 發(fā)送 M4M

50、7 確認 M4M7 cwnd = 1 cwnd = 2 cwnd = 4 發(fā)送 M8M15cwnd = 8 tt發(fā)送方每收到一個對新報文段的確認(重傳的不算在內(nèi))就使 cwnd 加 1。 輪次 1輪次 2輪次 3課件制作人:李琳設(shè)置慢開始門限狀態(tài)變量ssthresh慢開始門限 ssthresh 的用法如下:當 cwnd ssthresh 時,停止使用慢開始算法而改用擁塞避免算法。當 cwnd = ssthresh 時,既可使用慢開始算法,也可使用擁塞避免算法。擁塞避免算法的思路是讓擁塞窗口 cwnd 緩慢地增大,即每經(jīng)過一個往返時間 RTT 就把發(fā)送方的擁塞窗口 cwnd 加 1,而不是加倍,

51、使擁塞窗口 cwnd 按線性規(guī)律緩慢增長。課件制作人:李琳當網(wǎng)絡(luò)出現(xiàn)擁塞時無論在慢開始階段還是在擁塞避免階段,只要發(fā)送方判斷網(wǎng)絡(luò)出現(xiàn)擁塞(其根據(jù)就是沒有按時收到確認),就要把慢開始門限 ssthresh 設(shè)置為出現(xiàn)擁塞時的發(fā)送方窗口值的一半(但不能小于2)。然后把擁塞窗口 cwnd 重新設(shè)置為 1,執(zhí)行慢開始算法。這樣做的目的就是要迅速減少主機發(fā)送到網(wǎng)絡(luò)中的分組數(shù),使得發(fā)生擁塞的路由器有足夠時間把隊列中積壓的分組處理完畢。 慢開始和擁塞避免算法的實現(xiàn)舉例 當 TCP 連接進行初始化時,將擁塞窗口置為 1。圖中的窗口單位不使用字節(jié)而使用報文段。慢開始門限的初始值設(shè)置為 16 個報文段,即 sst

52、hresh = 16。246810121416182022004812162024傳輸次數(shù)擁塞窗口 cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始擁塞避免擁塞避免更新后的 ssthresh = 12進入擁塞避免慢開始和擁塞避免算法的實現(xiàn)舉例 發(fā)送端的發(fā)送窗口不能超過擁塞窗口 cwnd 和接收端窗口 rwnd 中的最小值。我們假定接收端窗口足夠大,因此現(xiàn)在發(fā)送窗口的數(shù)值等于擁塞窗口的數(shù)值。246810121416182022004812162024傳輸次數(shù)擁塞窗口 cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開

53、始擁塞避免擁塞避免更新后的 ssthresh = 12進入擁塞避免慢開始和擁塞避免算法的實現(xiàn)舉例 在執(zhí)行慢開始算法時,擁塞窗口 cwnd 的初始值為 1,發(fā)送第一個報文段 M0。 246810121416182022004812162024傳輸次數(shù)擁塞窗口 cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始擁塞避免擁塞避免更新后的 ssthresh = 12進入擁塞避免慢開始和擁塞避免算法的實現(xiàn)舉例 246810121416182022004812162024傳輸次數(shù)擁塞窗口 cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長線性規(guī)律增長ssthresh = 16

54、慢開始慢開始擁塞避免擁塞避免更新后的 ssthresh = 12進入擁塞避免發(fā)送端收到 ACK1 (確認 M0,期望收到 M1)后,將 cwnd 從 1 增大到 2,于是發(fā)送端可以接著發(fā)送 M1 和 M2 兩個報文段。 慢開始和擁塞避免算法的實現(xiàn)舉例 接收端發(fā)回 ACK2 和 ACK3。發(fā)送端每收到一個對新報文段的確認 ACK,就把發(fā)送端的擁塞窗口加 1?,F(xiàn)在發(fā)送端的 cwnd 從 2 增大到 4,并可發(fā)送 M3 M6共 4個報文段。 246810121416182022004812162024傳輸次數(shù)擁塞窗口 cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長線性規(guī)律增長ssthresh = 16慢開

55、始慢開始擁塞避免擁塞避免更新后的 ssthresh = 12進入擁塞避免慢開始和擁塞避免算法的實現(xiàn)舉例 發(fā)送端每收到一個對新報文段的確認 ACK,就把發(fā)送端的擁塞窗口加 1,因此擁塞窗口 cwnd 隨著傳輸次數(shù)按指數(shù)規(guī)律增長。 246810121416182022004812162024傳輸次數(shù)擁塞窗口 cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始擁塞避免擁塞避免更新后的 ssthresh = 12進入擁塞避免慢開始和擁塞避免算法的實現(xiàn)舉例 當擁塞窗口 cwnd 增長到慢開始門限值 ssthresh 時(即當 cwnd = 16 時),就改為執(zhí)行擁

56、塞避免算法,擁塞窗口按線性規(guī)律增長。 246810121416182022004812162024傳輸次數(shù)擁塞窗口 cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長ssthresh = 16慢開始慢開始線性規(guī)律增長擁塞避免擁塞避免更新后的 ssthresh = 12進入擁塞避免慢開始和擁塞避免算法的實現(xiàn)舉例 假定擁塞窗口的數(shù)值增長到 24 時,網(wǎng)絡(luò)出現(xiàn)超時(表明網(wǎng)絡(luò)擁塞了)。 246810121416182022004812162024傳輸次數(shù)擁塞窗口 cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始擁塞避免擁塞避免更新后的 ssthresh = 12進入擁塞

57、避免慢開始和擁塞避免算法的實現(xiàn)舉例 更新后的 ssthresh 值變?yōu)?12(即發(fā)送窗口數(shù)值 24 的一半),擁塞窗口再重新設(shè)置為 1,并執(zhí)行慢開始算法。 246810121416182022004812162024傳輸次數(shù)擁塞窗口 cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始擁塞避免擁塞避免更新后的 ssthresh = 12進入擁塞避免慢開始和擁塞避免算法的實現(xiàn)舉例 當 cwnd = 12 時改為執(zhí)行擁塞避免算法,擁塞窗口按按線性規(guī)律增長,每經(jīng)過一個往返時延就增加一個 MSS 的大小。 24681012141618202200481216202

58、4傳輸次數(shù)擁塞窗口 cwnd進入擁塞避免發(fā)生超時指數(shù)規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始擁塞避免擁塞避免更新后的 ssthresh = 12進入擁塞避免課件制作人:李琳乘法減小(multiplicative decrease) “乘法減小“是指不論在慢開始階段還是擁塞避免階段,只要出現(xiàn)一次超時(即出現(xiàn)一次網(wǎng)絡(luò)擁塞),就把慢開始門限值 ssthresh 設(shè)置為當前的擁塞窗口值乘以 0.5。當網(wǎng)絡(luò)頻繁出現(xiàn)擁塞時,ssthresh 值就下降得很快,以大大減少注入到網(wǎng)絡(luò)中的分組數(shù)。 課件制作人:李琳加法增大(additive increase) “加法增大”是指執(zhí)行擁塞避免算法后

59、,當收到對所有報文段的確認就將擁塞窗口 cwnd增加一個 MSS 大小,使擁塞窗口緩慢增大,以防止網(wǎng)絡(luò)過早出現(xiàn)擁塞。 課件制作人:李琳必須強調(diào)指出 “擁塞避免”并非指完全能夠避免了擁塞。利用以上的措施要完全避免網(wǎng)絡(luò)擁塞還是不可能的?!皳砣苊狻笔钦f在擁塞避免階段把擁塞窗口控制為按線性規(guī)律增長,使網(wǎng)絡(luò)比較不容易出現(xiàn)擁塞。 課件制作人:李琳3. 快重傳和快恢復快重傳算法規(guī)定,發(fā)送端只要一連收到三個重復的 ACK 即可斷定有分組丟失了,就應立即重傳丟失的報文段而不必繼續(xù)等待為該報文段設(shè)置的重傳計時器的超時。不難看出,快重傳并非取消重傳計時器,而是在某些情況下可更早地重傳丟失的報文段。 快重傳舉例M1

60、, M2ACK2, ACK3M4主機 A主機 BB 確認 M1 和 M2A 發(fā)送 M1 和 M2A 收到了三個重復的確認 ACK3,就立即重傳 M3,而不必等待超時重傳。M3丟失!A 發(fā)送 M3 但丟失了A 發(fā)送 M4ACK3M5A 發(fā)送 M5ACK3B 發(fā)送第二個重復確認 ACK3M6A 發(fā)送 M6ACK3M3B 發(fā)送第三個重復確認 ACK3B 只能再次確認 M2(因為 M3 沒有收到)課件制作人:李琳快恢復算法 (1) 當發(fā)送端收到連續(xù)三個重復的 ACK 時,就按“乘法減小”重新設(shè)置慢開始門限 ssthresh。(2) 與慢開始不同之處是擁塞窗口 cwnd 不是設(shè)置為 1,而是設(shè)置為 ss

溫馨提示

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

最新文檔

評論

0/150

提交評論