CH7 運(yùn)輸層ppt課件_第1頁
CH7 運(yùn)輸層ppt課件_第2頁
CH7 運(yùn)輸層ppt課件_第3頁
CH7 運(yùn)輸層ppt課件_第4頁
CH7 運(yùn)輸層ppt課件_第5頁
已閱讀5頁,還剩84頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、計(jì)算機(jī)網(wǎng)絡(luò),第 7 章 運(yùn)輸層,第 7 章 運(yùn)輸層,*7.1 運(yùn)輸層協(xié)議概述 *7.2 TCP/IP 體系中的運(yùn)輸層 7.2.1 運(yùn)輸層中的兩個(gè)協(xié)議 7.2.2 端口的概念 *7.3 用戶數(shù)據(jù)報(bào)協(xié)議 UDP 7.3.1 UDP 概述 7.3.2 UDP 用戶數(shù)據(jù)報(bào)的首部格式,第 7 章 運(yùn)輸層(續(xù)),7.4 傳輸控制協(xié)議 TCP *7.4.1 TCP 概述 *7.4.2 TCP 報(bào)文段的首部 *7.4.3 TCP 的數(shù)據(jù)編號(hào)與確認(rèn) *7.4.4 TCP 的流量控制與擁塞控制 *7.4.5 TCP 的重傳機(jī)制 7.4.6 采用隨機(jī)早期丟棄 RED 進(jìn)行擁塞控制 *7.4.7 TCP 的運(yùn)輸連接管

2、理 7.4.8 TCP 的有限狀態(tài)機(jī),7.1 運(yùn)輸層協(xié)議概述,從通信和信息處理的角度看,運(yùn)輸層向它上面的應(yīng)用層提供通信服務(wù),它屬于面向通信部分的最高層,同時(shí)也是用戶功能中的最低層。,物理層,網(wǎng)絡(luò)層,運(yùn)輸層,應(yīng)用層,數(shù)據(jù)鏈路層,面向信息處理,面向通信,用戶功能,網(wǎng)絡(luò)功能,運(yùn)輸層為相互通信的應(yīng)用進(jìn)程提供了邏輯通信,5 4 3 2 1,運(yùn)輸層提供應(yīng)用進(jìn)程間的邏輯通信,主機(jī) A,主機(jī) B,應(yīng)用進(jìn)程,應(yīng)用進(jìn)程,路由器 1,路由器 2,AP1,LAN2,WAN,AP2,AP3,AP4,IP 層,LAN1,AP1,AP2,AP4,端口,端口,5 4 3 2 1,IP 協(xié)議的作用范圍,運(yùn)輸層協(xié)議 TCP 和

3、UDP 的作用范圍,AP3,應(yīng)用進(jìn)程之間的通信,兩個(gè)主機(jī)進(jìn)行通信實(shí)際上就是兩個(gè)主機(jī)中的應(yīng)用進(jìn)程互相通信。 應(yīng)用進(jìn)程之間的通信又稱為端到端的通信。 運(yùn)輸層的一個(gè)很重要的功能就是復(fù)用和分用。應(yīng)用層不同進(jìn)程的報(bào)文通過不同的端口向下交到運(yùn)輸層,再往下就共用網(wǎng)絡(luò)層提供的服務(wù)。 “運(yùn)輸層提供應(yīng)用進(jìn)程間的邏輯通信”。“邏輯通信”的意思是:運(yùn)輸層之間的通信好像是沿水平方向傳送數(shù)據(jù)。但事實(shí)上這兩個(gè)運(yùn)輸層之間并沒有一條水平方向的物理連接。,運(yùn)輸層協(xié)議和網(wǎng)絡(luò)層協(xié)議的主要區(qū)別,應(yīng)用進(jìn)程,應(yīng)用進(jìn)程,IP 協(xié)議的作用范圍 (提供主機(jī)之間的邏輯通信),TCP 和 UDP 協(xié)議的作用范圍 (提供進(jìn)程之間的邏輯通信),因 特

4、網(wǎng),運(yùn)輸層的主要功能,運(yùn)輸層為應(yīng)用進(jìn)程之間提供端到端的邏輯通信(但網(wǎng)絡(luò)層是為主機(jī)之間提供邏輯通信)。 運(yùn)輸層還要對(duì)收到的報(bào)文進(jìn)行差錯(cuò)檢測(cè)。 運(yùn)輸層需要有兩種不同的運(yùn)輸協(xié)議,即面向連接的 TCP 和無連接的 UDP。,運(yùn)輸層與其上下層之間的關(guān)系的 OSI 表示法,運(yùn)輸實(shí)體,運(yùn)輸實(shí)體,運(yùn)輸協(xié)議,運(yùn)輸層,層接口,運(yùn)輸服務(wù)用戶 (應(yīng)用層實(shí)體),運(yùn)輸服務(wù)用戶 (應(yīng)用層實(shí)體),層接口,網(wǎng)絡(luò)層 (或網(wǎng)際層),應(yīng)用層,主機(jī) A,主機(jī) B,運(yùn)輸層服務(wù)訪問點(diǎn) TSAP,網(wǎng)絡(luò)層服務(wù)訪問點(diǎn) NSAP,運(yùn)輸層向上提供可靠的和不可靠的邏輯通信信道,?,應(yīng) 用 層,運(yùn) 輸 層,發(fā) 送 進(jìn) 程,接 收 進(jìn) 程,接 收 進(jìn) 程

5、,數(shù)據(jù),數(shù)據(jù),全雙工可靠信道,數(shù)據(jù),數(shù)據(jù),使用 TCP 協(xié)議,使用 UDP 協(xié)議,不可靠信道,發(fā) 送 進(jìn) 程,TCP/IP的運(yùn)輸層有兩個(gè)不同的協(xié)議: (1) 用戶數(shù)據(jù)報(bào)協(xié)議 UDP (User Datagram Protocol) (2) 傳輸控制協(xié)議 TCP (Transmission Control Protocol),7.2 TCP/IP 體系中的運(yùn)輸層7.2.1 運(yùn)輸層中的兩個(gè)協(xié)議,兩個(gè)對(duì)等運(yùn)輸實(shí)體在通信時(shí)傳送的數(shù)據(jù)單位叫作運(yùn)輸協(xié)議數(shù)據(jù)單元 TPDU (Transport Protocol Data Unit)。 TCP 傳送的數(shù)據(jù)單位協(xié)議是 TCP 報(bào)文段(segment) UDP

6、傳送的數(shù)據(jù)單位協(xié)議是 UDP 報(bào)文或用戶數(shù)據(jù)報(bào)。,TCP 與 UDP,TCP/IP 體系中的運(yùn)輸層協(xié)議,TCP,UDP,IP,應(yīng)用層,與各種網(wǎng)絡(luò)接口,運(yùn)輸層,TCP 與 UDP,UDP 在傳送數(shù)據(jù)之前不需要先建立連接。對(duì)方的運(yùn)輸層在收到 UDP 報(bào)文后,不需要給出任何確認(rèn)。雖然 UDP 不提供可靠交付,但在某些情況下 UDP 是一種最有效的工作方式。 TCP 則提供面向連接的服務(wù)。TCP 不提供廣播或多播服務(wù)。由于 TCP 要提供可靠的、面向連接的運(yùn)輸服務(wù),因此不可避免地增加了許多的開銷。這不僅使協(xié)議數(shù)據(jù)單元的首部增大很多,還要占用許多的處理機(jī)資源。,還要強(qiáng)調(diào)兩點(diǎn),運(yùn)輸層的 UDP 用戶數(shù)據(jù)報(bào)

7、與網(wǎng)際層的IP數(shù)據(jù)報(bào)有很大區(qū)別。IP 數(shù)據(jù)報(bào)要經(jīng)過互連網(wǎng)中許多路由器的存儲(chǔ)轉(zhuǎn)發(fā),但 UDP 用戶數(shù)據(jù)報(bào)是在運(yùn)輸層的端到端抽象的邏輯信道中傳送的。 TCP 報(bào)文段是在運(yùn)輸層抽象的端到端邏輯信道中傳送,這種信道是可靠的全雙工信道。但這樣的信道卻不知道究竟經(jīng)過了哪些路由器,而這些路由器也根本不知道上面的運(yùn)輸層是否建立了 TCP 連接。,7.2.2 端口的概念,端口就是運(yùn)輸層服務(wù)訪問點(diǎn) TSAP。 端口的作用就是讓應(yīng)用層的各種應(yīng)用進(jìn)程都能將其數(shù)據(jù)通過端口向下交付給運(yùn)輸層,以及讓運(yùn)輸層知道應(yīng)當(dāng)將其報(bào)文段中的數(shù)據(jù)向上通過端口交付給應(yīng)用層相應(yīng)的進(jìn)程。 從這個(gè)意義上講,端口是用來標(biāo)志應(yīng)用層的進(jìn)程。,端口在進(jìn)程

8、之間的通信中所起的作用,應(yīng) 用 層,運(yùn) 輸 層,網(wǎng) 絡(luò) 層,TCP 報(bào)文段,UDP 用戶數(shù)據(jù)報(bào),應(yīng)用進(jìn)程,TCP 復(fù)用,IP 復(fù)用,UDP 復(fù)用,TCP 報(bào)文段,UDP 用戶數(shù)據(jù)報(bào),應(yīng)用進(jìn)程,端口,端口,TCP 分用,UDP 分用,IP 分用,發(fā)送方,接收方,端口,端口用一個(gè) 16 bit 端口號(hào)進(jìn)行標(biāo)志。 端口號(hào)只具有本地意義,即端口號(hào)只是為了標(biāo)志本計(jì)算機(jī)應(yīng)用層中的各進(jìn)程。在因特網(wǎng)中不同計(jì)算機(jī)的相同端口號(hào)是沒有聯(lián)系的。,兩類端口,一類是熟知端口,其數(shù)值一般為 01023。當(dāng)一種新的應(yīng)用程序出現(xiàn)時(shí),必須為它指派一個(gè)熟知端口。 另一類則是一般端口,用來隨時(shí)分配給請(qǐng)求通信的客戶進(jìn)程。,插口(soc

9、ket),TCP 使用“連接”(而不僅僅是“端口”)作為最基本的抽象,同時(shí)將 TCP 連接的端點(diǎn)稱為插口(socket),或套接字、套接口。 插口和端口、IP 地址的關(guān)系是:,7.3 用戶數(shù)據(jù)報(bào)協(xié)議 UDP 7.3.1 UDP 概述,UDP 只在 IP 的數(shù)據(jù)報(bào)服務(wù)之上增加了很少一點(diǎn)的功能,即端口的功能和差錯(cuò)檢測(cè)的功能。 雖然 UDP 用戶數(shù)據(jù)報(bào)只能提供不可靠的交付,但 UDP 在某些方面有其特殊的優(yōu)點(diǎn)。 發(fā)送數(shù)據(jù)之前不需要建立連接 UDP 的主機(jī)不需要維持復(fù)雜的連接狀態(tài)表。 UDP 用戶數(shù)據(jù)報(bào)只有8個(gè)字節(jié)的首部開銷。 網(wǎng)絡(luò)出現(xiàn)的擁塞不會(huì)使源主機(jī)的發(fā)送速率降低。這對(duì)某些實(shí)時(shí)應(yīng)用是很重要的。,端

10、口是用報(bào)文隊(duì)列來實(shí)現(xiàn),UDP 端口 51000,UDP 端口 69,出隊(duì)列,入隊(duì)列,出隊(duì)列,入隊(duì)列,TFTP 服務(wù)器,TFTP 客戶,UDP 用戶數(shù)據(jù)報(bào),應(yīng) 用 層,運(yùn) 輸 層,7.3.2 UDP 用戶數(shù)據(jù)報(bào)的首部格式,偽首部,源端口,目的端口,長 度,檢驗(yàn)和,數(shù) 據(jù),首 部,UDP長度,源 IP 地址,目的 IP 地址,0,17,IP 數(shù)據(jù)報(bào),字節(jié),4,4,1,1,2,12,2,2,2,2,字節(jié),發(fā)送在前,數(shù) 據(jù),首 部,UDP 用戶數(shù)據(jù)報(bào),偽首部,源端口,目的端口,長 度,檢驗(yàn)和,數(shù) 據(jù),首 部,UDP長度,源 IP 地址,目的 IP 地址,0,17,IP 數(shù)據(jù)報(bào),字節(jié),4,4,1,1,2

11、,12,2,2,2,2,字節(jié),發(fā)送在前,數(shù) 據(jù),首 部,UDP 用戶數(shù)據(jù)報(bào),用戶數(shù)據(jù)報(bào) UDP 有兩個(gè)字段:數(shù)據(jù)字段和首部字段。首部字段有 8 個(gè)字節(jié),由 4 個(gè)字段組成,每個(gè)字段都是兩個(gè)字節(jié)。,偽首部,源端口,目的端口,長 度,檢驗(yàn)和,數(shù) 據(jù),首 部,UDP長度,源 IP 地址,目的 IP 地址,0,17,IP 數(shù)據(jù)報(bào),字節(jié),4,4,1,1,2,12,2,2,2,2,字節(jié),發(fā)送在前,數(shù) 據(jù),首 部,UDP 用戶數(shù)據(jù)報(bào),在計(jì)算檢驗(yàn)和時(shí),臨時(shí)把“偽首部”和 UDP 用戶數(shù)據(jù)報(bào)連接在一起。偽首部僅僅是為了計(jì)算檢驗(yàn)和。,7.4 傳輸控制協(xié)議 TCP 7.4.1 TCP 概述,端口,發(fā)送 TCP 報(bào)文

12、段,TCP,TCP,接收緩存,發(fā)送緩存,報(bào)文段,報(bào)文段,報(bào)文段,端口,發(fā)送端,接收端,向發(fā)送緩存 寫入數(shù)據(jù)塊,從接收緩存 讀取數(shù)據(jù)塊,應(yīng)用進(jìn)程,應(yīng)用進(jìn)程,TCP 首部,20 字節(jié)的 固定首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,32 bit,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,TCP 數(shù)據(jù)部分,TCP 首部,TCP 報(bào)文段,IP 數(shù)據(jù)部分,IP 首部,發(fā)送在前,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移

13、,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,源端口和目的端口字段各占 2 字節(jié)。端口是運(yùn)輸層與應(yīng)用層的服務(wù)接口。運(yùn)輸層的復(fù)用和分用功能都要通過端口才能實(shí)現(xiàn)。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24

14、31,填 充,序號(hào)字段占 4 字節(jié)。TCP 連接中傳送的數(shù)據(jù)流中的每一個(gè)字節(jié)都編上一個(gè)序號(hào)。序號(hào)字段的值則指的是本報(bào)文段所發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,確認(rèn)號(hào)字段占 4 字節(jié),是期望收到對(duì)方的下一個(gè)報(bào)文段的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng)

15、 (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,數(shù)據(jù)偏移占 4 bit,它指出 TCP 報(bào)文段的數(shù)據(jù)起始處距離 TCP 報(bào)文段的起始處有多遠(yuǎn)。“數(shù)據(jù)偏移”的單位不是字節(jié)而是 32 bit 字(4 字節(jié)為計(jì)算單位)。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U

16、R G,比特 0 8 16 24 31,填 充,保留字段占 6 bit,保留為今后使用,但目前應(yīng)置為 0。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,緊急比特 URG 當(dāng) URG 1 時(shí),表明緊急指針字段有效。它告訴系統(tǒng)此報(bào)文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級(jí)的數(shù)據(jù))。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選

17、 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,確認(rèn)比特 ACK 只有當(dāng) ACK 1 時(shí)確認(rèn)號(hào)字段才有效。當(dāng) ACK 0 時(shí),確認(rèn)號(hào)無效。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,推送比特 PSH (Pu

18、SH) 接收 TCP 收到推送比特置 1 的報(bào)文段,就盡快地交付給接收應(yīng)用進(jìn)程,而不再等到整個(gè)緩存都填滿了后再向上交付。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,復(fù)位比特 RST (ReSeT) 當(dāng) RST 1 時(shí),表明 TCP 連接中出現(xiàn)嚴(yán)重差錯(cuò)(如由于主機(jī)崩潰或其他原因),必須釋放連接,然后再重新建立運(yùn)輸連接。,TCP 首部,20 字節(jié) 固定 首部,目

19、 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,同步比特 SYN 同步比特 SYN 置為 1,就表示這是一個(gè)連接請(qǐng)求或連接接受報(bào)文。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31

20、,填 充,終止比特 FIN (FINal) 用來釋放一個(gè)連接。當(dāng)FIN 1 時(shí),表明此報(bào)文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運(yùn)輸連接。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,窗口字段 占 2 字節(jié)。窗口字段用來控制對(duì)方發(fā)送的數(shù)據(jù)量,單位為字節(jié)。TCP 連接的一端根據(jù)設(shè)置的緩存空間大小確定自己的接收窗口大小,然后通知對(duì)方以確定對(duì)方的發(fā)送窗口的上限。,T

21、CP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,檢驗(yàn)和 占 2 字節(jié)。檢驗(yàn)和字段檢驗(yàn)的范圍包括首部和數(shù)據(jù)這兩部分。在計(jì)算檢驗(yàn)和時(shí),要在 TCP 報(bào)文段的前面加上 12 字節(jié)的偽首部。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S

22、 Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,緊急指針字段 占 16 bit。緊急指針指出在本報(bào)文段中的緊急數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,選項(xiàng)字段 長度可變。TCP 只規(guī)定了一種選項(xiàng),即最大報(bào)文段長度 MSS (Maximum Segment Size)。MSS 告訴

23、對(duì)方 TCP:“我的緩存所能接收的報(bào)文段的數(shù)據(jù)字段的最大長度是 MSS 個(gè)字節(jié)?!?MSS 是 TCP 報(bào)文段中的數(shù)據(jù)字段的最大長度。 數(shù)據(jù)字段加上 TCP 首部 才等于整個(gè)的 TCP 報(bào)文段。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,填充字段 這是為了使整個(gè)首部長度是 4 字節(jié)的整數(shù)倍。,7.4.3 TCP 的數(shù)據(jù)編號(hào)與確認(rèn),TCP 協(xié)議是面向字節(jié)的。T

24、CP 將所要傳送的報(bào)文看成是字節(jié)組成的數(shù)據(jù)流,并使每一個(gè)字節(jié)對(duì)應(yīng)于一個(gè)序號(hào)。 在連接建立時(shí),雙方要商定初始序號(hào)。TCP 每次發(fā)送的報(bào)文段的首部中的序號(hào)字段數(shù)值表示該報(bào)文段中的數(shù)據(jù)部分的第一個(gè)字節(jié)的序號(hào)。 TCP 的確認(rèn)是對(duì)接收到的數(shù)據(jù)的最高序號(hào)表示確認(rèn)。接收端返回的確認(rèn)號(hào)是已收到的數(shù)據(jù)的最高序號(hào)加 1。因此確認(rèn)號(hào)表示接收端期望下次收到的數(shù)據(jù)中的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)。,7.4.4 TCP 的流量控制與擁塞控制1. 滑動(dòng)窗口的概念,TCP 采用大小可變的滑動(dòng)窗口進(jìn)行流量控制。窗口大小的單位是字節(jié)。 在 TCP 報(bào)文段首部的窗口字段寫入的數(shù)值就是當(dāng)前給對(duì)方設(shè)置的發(fā)送窗口數(shù)值的上限。 發(fā)送窗口在連接建

25、立時(shí)由雙方商定。但在通信的過程中,接收端可根據(jù)自己的資源情況,隨時(shí)動(dòng)態(tài)地調(diào)整對(duì)方的發(fā)送窗口上限值(可增大或減小)。,收到確認(rèn)即可前移,100,200,300,400,500,600,700,800,900,101,201,301,401,501,601,701,801,1,可發(fā)送,不可發(fā)送,發(fā)送端要發(fā)送 900 字節(jié)長的數(shù)據(jù),劃分為 9 個(gè) 100 字節(jié)長的報(bào)文段,而發(fā)送窗口確定為 500 字節(jié)。 發(fā)送端只要收到了對(duì)方的確認(rèn),發(fā)送窗口就可前移。 發(fā)送 TCP 要維護(hù)一個(gè)指針。每發(fā)送一個(gè)報(bào)文段,指針就向前移動(dòng)一個(gè)報(bào)文段的距離。,收到確認(rèn)即可前移,100,200,300,400,500,600,7

26、00,800,900,101,201,301,401,501,601,701,801,1,不可發(fā)送,100,200,300,400,500,600,700,800,900,101,201,301,401,501,601,701,801,1,發(fā)送窗口,可發(fā)送,不可發(fā)送,發(fā)送窗口前移,發(fā)送端已發(fā)送了 400 字節(jié)的數(shù)據(jù),但只收到對(duì)前 200 字節(jié)數(shù)據(jù)的確認(rèn),同時(shí)窗口大小不變。 現(xiàn)在發(fā)送端還可發(fā)送 300 字節(jié)。,100,200,300,400,500,600,700,800,900,101,201,301,401,501,601,701,801,1,已發(fā)送 并被確認(rèn),已發(fā)送但 未被確認(rèn),可發(fā)送,不

27、可發(fā)送,指針,100,200,300,400,500,600,700,800,900,101,201,301,401,501,601,701,801,1,不可 發(fā)送,指針,發(fā)送窗口前移,發(fā)送端收到了對(duì)方對(duì)前 400 字節(jié)數(shù)據(jù)的確認(rèn),但對(duì)方通知發(fā)送端必須把窗口減小到 400 字節(jié)。 現(xiàn)在發(fā)送端最多還可發(fā)送 400 字節(jié)的數(shù)據(jù)。,利用可變窗口大小進(jìn)行流量控制雙方確定的窗口值是 400,主機(jī) A,主機(jī) B,允許 A 再發(fā)送 300 字節(jié)(序號(hào) 201 至 500),A 還能發(fā)送 200 字節(jié),A 還能發(fā)送 200 字節(jié)(序號(hào) 301 至 500),A 還能發(fā)送 300 字節(jié),A 還能發(fā)送 100 字

28、節(jié)(序號(hào) 401 至 500),A 超時(shí)重發(fā),但不能發(fā)送序號(hào) 500 以后的數(shù)據(jù),允許 A 再發(fā)送 200 字節(jié)(序號(hào) 501 至 700),A 還能發(fā)送 100 字節(jié)(序號(hào) 501 至 700),不允許 A 再發(fā)送(到序號(hào) 600 的數(shù)據(jù)都已收到),2. 慢開始和擁塞避免,發(fā)送端的主機(jī)在確定發(fā)送報(bào)文段的速率時(shí),既要根據(jù)接收端的接收能力,又要從全局考慮不要使網(wǎng)絡(luò)發(fā)生擁塞。 因此,每一個(gè) TCP 連接需要有以下兩個(gè)狀態(tài)變量: 接收端窗口 rwnd (receiver window) 又稱為通知窗口(advertised window)。 擁塞窗口 cwnd (congestion window)

29、。,接收端窗口 rwnd 和擁塞窗口 cwnd,(1) 接收端窗口 rwnd 這是接收端根據(jù)其目前的接收緩存大小所許諾的最新的窗口值,是來自接收端的流量控制。接收端將此窗口值放在 TCP 報(bào)文的首部中的窗口字段,傳送給發(fā)送端。 (2) 擁塞窗口 cwnd (congestion window) 是發(fā)送端根據(jù)自己估計(jì)的網(wǎng)絡(luò)擁塞程度而設(shè)置的窗口值,是來自發(fā)送端的流量控制。,發(fā)送窗口的上限值,發(fā)送端的發(fā)送窗口的上限值應(yīng)當(dāng)取為接收端窗口 rwnd 和擁塞窗口 cwnd 這兩個(gè)變量中較小的一個(gè),即應(yīng)按以下公式確定: 發(fā)送窗口的上限值 Min rwnd, cwnd (7-1) 當(dāng) rwnd cwnd 時(shí),

30、是接收端的接收能力限制發(fā)送窗口的最大值。 當(dāng) cwnd rwnd 時(shí),則是網(wǎng)絡(luò)的擁塞限制發(fā)送窗口的最大值。,慢開始算法的原理,在主機(jī)剛剛開始發(fā)送報(bào)文段時(shí)可先將擁塞窗口 cwnd 設(shè)置為一個(gè)最大報(bào)文段 MSS 的數(shù)值。 在每收到一個(gè)對(duì)新的報(bào)文段的確認(rèn)后,將擁塞窗口增加至多一個(gè) MSS 的數(shù)值。 用這樣的方法逐步增大發(fā)送端的擁塞窗口 cwnd,可以使分組注入到網(wǎng)絡(luò)的速率更加合理。,慢開始和擁塞避免算法的實(shí)現(xiàn)舉例,當(dāng) TCP 連接進(jìn)行初始化時(shí),將擁塞窗口置為 1。圖中的窗口單位不使用字節(jié)而使用報(bào)文段。,慢開始門限的初始值設(shè)置為 16 個(gè)報(bào)文段, 即 ssthresh = 16。,2,4,6,8,10

31、,12,14,16,18,20,22,0,0,4,8,12,16,20,24,傳輸次數(shù),擁塞窗口 cwnd,ssthresh = 16,慢開始,慢開始,擁塞避免,擁塞避免,更新后的 ssthresh = 12,慢開始和擁塞避免算法的實(shí)現(xiàn)舉例,發(fā)送端的發(fā)送窗口不能超過擁塞窗口 cwnd 和接收端窗口 rwnd 中的最小值。我們假定接收端窗口足夠大,因此現(xiàn)在發(fā)送窗口的數(shù)值等于擁塞窗口的數(shù)值。,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,24,傳輸次數(shù),擁塞窗口 cwnd,ssthresh = 16,慢開始,慢開始,擁塞避免,擁塞避免,更新后的 sst

32、hresh = 12,慢開始和擁塞避免算法的實(shí)現(xiàn)舉例,在執(zhí)行慢開始算法時(shí),擁塞窗口 cwnd 的初始值為 1,發(fā)送第一個(gè)報(bào)文段 M0。,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,24,傳輸次數(shù),擁塞窗口 cwnd,ssthresh = 16,慢開始,慢開始,擁塞避免,擁塞避免,更新后的 ssthresh = 12,慢開始和擁塞避免算法的實(shí)現(xiàn)舉例,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,24,傳輸次數(shù),擁塞窗口 cwnd,ssthresh = 16,慢開始,慢開始,擁塞避免,擁塞避免,更新后的

33、ssthresh = 12,發(fā)送端收到 ACK1 (確認(rèn) M0,期望收到 M1)后,將 cwnd 從 1 增大到 2,于是發(fā)送端可以接著發(fā)送 M1 和 M2 兩個(gè)報(bào)文段。,慢開始和擁塞避免算法的實(shí)現(xiàn)舉例,接收端發(fā)回 ACK2 和 ACK3。發(fā)送端每收到一個(gè)對(duì)新報(bào)文段的確認(rèn) ACK,就把發(fā)送端的擁塞窗口加 1。現(xiàn)在發(fā)送端的 cwnd 從 2 增大到 4,并可發(fā)送 M4 M6共 4個(gè)報(bào)文段。,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,24,傳輸次數(shù),擁塞窗口 cwnd,ssthresh = 16,慢開始,慢開始,擁塞避免,擁塞避免,更新后的 sst

34、hresh = 12,慢開始和擁塞避免算法的實(shí)現(xiàn)舉例,發(fā)送端每收到一個(gè)對(duì)新報(bào)文段的確認(rèn) ACK,就把發(fā)送端的擁塞窗口加 1,因此擁塞窗口 cwnd 隨著傳輸次數(shù)按指數(shù)規(guī)律增長。,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,24,傳輸次數(shù),擁塞窗口 cwnd,ssthresh = 16,慢開始,慢開始,擁塞避免,擁塞避免,更新后的 ssthresh = 12,慢開始和擁塞避免算法的實(shí)現(xiàn)舉例,當(dāng)擁塞窗口 cwnd 增長到慢開始門限值 ssthresh 時(shí)(即當(dāng) cwnd = 16 時(shí)),就改為執(zhí)行擁塞避免算法,擁塞窗口按線性規(guī)律增長。,2,4,6,8

35、,10,12,14,16,18,20,22,0,0,4,8,12,16,20,24,傳輸次數(shù),擁塞窗口 cwnd,ssthresh = 16,慢開始,慢開始,擁塞避免,更新后的 ssthresh = 12,慢開始和擁塞避免算法的實(shí)現(xiàn)舉例,假定擁塞窗口的數(shù)值增長到 24 時(shí),網(wǎng)絡(luò)出現(xiàn)超時(shí)(表明網(wǎng)絡(luò)擁塞了)。,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,24,傳輸次數(shù),擁塞窗口 cwnd,ssthresh = 16,慢開始,慢開始,擁塞避免,擁塞避免,更新后的 ssthresh = 12,慢開始和擁塞避免算法的實(shí)現(xiàn)舉例,更新后的 ssthresh 值

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

37、,ssthresh = 16,慢開始,慢開始,擁塞避免,擁塞避免,更新后的 ssthresh = 12,乘法減小(multiplicative decrease),“乘法減小“是指不論在慢開始階段還是擁塞避免階段,只要出現(xiàn)一次超時(shí)(即出現(xiàn)一次網(wǎng)絡(luò)擁塞),就把慢開始門限值 ssthresh 設(shè)置為當(dāng)前的擁塞窗口值乘以 0.5。 當(dāng)網(wǎng)絡(luò)頻繁出現(xiàn)擁塞時(shí),ssthresh 值就下降得很快,以大大減少注入到網(wǎng)絡(luò)中的分組數(shù)。,加法增大(additive increase),“加法增大”是指執(zhí)行擁塞避免算法后,當(dāng)收到對(duì)所有報(bào)文段的確認(rèn)就將擁塞窗口 cwnd增加一個(gè) MSS 大小,使擁塞窗口緩慢增大,以防止網(wǎng)

38、絡(luò)過早出現(xiàn)擁塞。,必須強(qiáng)調(diào)指出,“擁塞避免”并非指完全能夠避免了擁塞。利用以上的措施要完全避免網(wǎng)絡(luò)擁塞還是不可能的。 “擁塞避免”是說在擁塞避免階段把擁塞窗口控制為按線性規(guī)律增長,使網(wǎng)絡(luò)比較不容易出現(xiàn)擁塞。,3. 快重傳和快恢復(fù),快重傳算法規(guī)定,發(fā)送端只要一連收到三個(gè)重復(fù)的 ACK 即可斷定有分組丟失了,就應(yīng)立即重傳丟失的報(bào)文段而不必繼續(xù)等待為該報(bào)文段設(shè)置的重傳計(jì)時(shí)器的超時(shí)。 不難看出,快重傳并非取消重傳計(jì)時(shí)器,而是在某些情況下可更早地重傳丟失的報(bào)文段。,快重傳舉例,主機(jī) A,主機(jī) B,B 確認(rèn) M1 和 M2,A 發(fā)送 M1 和 M2,A 收到了三個(gè)重復(fù)的確認(rèn) ACK3,就立即重傳 M3,而

39、不必等待超時(shí)重傳。,A 發(fā)送 M3 但丟失了,A 發(fā)送 M4,A 發(fā)送 M5,B 發(fā)送第二個(gè)重復(fù)確認(rèn) ACK3,A 發(fā)送 M6,B 發(fā)送第三個(gè)重復(fù)確認(rèn) ACK3,B 只能再次確認(rèn) M2(因?yàn)?M3 沒有收到),快恢復(fù)算法,(1) 當(dāng)發(fā)送端收到連續(xù)三個(gè)重復(fù)的 ACK 時(shí),就重新設(shè)置慢開始門限 ssthresh。 (2) 與慢開始不同之處是擁塞窗口 cwnd 不是設(shè)置為 1,而是設(shè)置為 ssthresh + 3 MSS。 (3) 若收到的重復(fù)的 ACK 為 n 個(gè)(n 3),則將 cwnd 設(shè)置為 ssthresh + n MSS。 (4) 若發(fā)送窗口值還容許發(fā)送報(bào)文段,就按擁塞避免算法繼續(xù)發(fā)送報(bào)

40、文段。 (5) 若收到了確認(rèn)新的報(bào)文段的 ACK,就將 cwnd 縮小到 ssthresh。,7.4.5 TCP 的重傳機(jī)制,重傳機(jī)制是 TCP 中最重要和最復(fù)雜的問題之一。 TCP 每發(fā)送一個(gè)報(bào)文段,就對(duì)這個(gè)報(bào)文段設(shè)置一次計(jì)時(shí)器。只要計(jì)時(shí)器設(shè)置的重傳時(shí)間到但還沒有收到確認(rèn),就要重傳這一報(bào)文段。,往返時(shí)延的方差很大,由于 TCP 的下層是一個(gè)互連網(wǎng)環(huán)境,IP 數(shù)據(jù)報(bào)所選擇的路由變化很大。因而運(yùn)輸層的往返時(shí)延的方差也很大。,時(shí)間,數(shù)據(jù)鏈路層,T1,T2,T3,往返時(shí)延的 概率分布,往返時(shí)延的自適應(yīng)算法,記錄每一個(gè)報(bào)文段發(fā)出的時(shí)間,以及收到相應(yīng)的確認(rèn)報(bào)文段的時(shí)間。這兩個(gè)時(shí)間之差就是報(bào)文段的往返時(shí)延

41、。 將各個(gè)報(bào)文段的往返時(shí)延樣本加權(quán)平均,就得出報(bào)文段的平均往返時(shí)延 RTT。 每測(cè)量到一個(gè)新的往返時(shí)延樣本,就按下式重新計(jì)算一次平均往返時(shí)延 RTT: 平均往返時(shí)延RTT (舊的RTT) (1 ) (新的往返時(shí)延樣本) (7-2) 在上式中,0 1。,參數(shù) 的選擇,若 很接近于 1,表示新算出的平均往返時(shí)延 RTT 和原來的值相比變化不大,而新的往返時(shí)延樣本的影響不大(RTT 值更新較慢)。 若選擇 接近于零,則表示加權(quán)計(jì)算的平均往返時(shí)延 RTT 受新的往返時(shí)延樣本的影響較大(RTT 值更新較快)。 典型的 值為 7/8。,超時(shí)重傳時(shí)間 RTO (RetransmissionTime-Out)

42、,計(jì)時(shí)器的 RTO 應(yīng)略大于上面得出的 RTT,即: RTO RTT (7-3) 這里 是個(gè)大于 1 的系數(shù)。 若取 很接近于1 ,發(fā)送端可及時(shí)地重傳丟失的報(bào)文段,因此效率得到提高。 但若報(bào)文段并未丟失而僅僅是增加了一點(diǎn)時(shí)延,那么過早地重傳反而會(huì)加重網(wǎng)絡(luò)的負(fù)擔(dān)。 因此 TCP 原先的標(biāo)準(zhǔn)推薦將 值取為 2。,往返時(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í)間,1,

43、2,往返時(shí)延 RTT?,是對(duì)哪一個(gè)報(bào)文段 的確認(rèn)?,Karn 算法,在計(jì)算平均往返時(shí)延 RTT 時(shí),只要報(bào)文段重傳了,就不采用其往返時(shí)延樣本。 這樣得出的平均往返時(shí)延 RTT 和重傳時(shí)間就較準(zhǔn)確。,修正的 Karn 算法,報(bào)文段每重傳一次,就將重傳時(shí)間增大一些: 新的重傳時(shí)間 (舊的重傳時(shí)間) (7-4) 系數(shù) 的典型值是2 。 當(dāng)不再發(fā)生報(bào)文段的重傳時(shí),才根據(jù)報(bào)文段的往返時(shí)延更新平均往返時(shí)延 RTT 和重傳時(shí)間的數(shù)值。 實(shí)踐證明,這種策略較為合理。,7.4.6 隨機(jī)早期丟棄 RED(Random Early Discard),使路由器的隊(duì)列維持兩個(gè)參數(shù),即隊(duì)列長度最小門限 THmin 和最大

44、門限 THmax。 RED 對(duì)每一個(gè)到達(dá)的數(shù)據(jù)報(bào)都先計(jì)算平均隊(duì)列長度 LAV。 若平均隊(duì)列長度小于最小門限 THmin,則將新到達(dá)的數(shù)據(jù)報(bào)放入隊(duì)列進(jìn)行排隊(duì)。 若平均隊(duì)列長度超過最大門限 THmax,則將新到達(dá)的數(shù)據(jù)報(bào)丟棄。 若平均隊(duì)列長度在最小門限 THmin 和最大門限THmax 之間,則按照某一概率 p 將新到達(dá)的數(shù)據(jù)報(bào)丟棄。,RED 將路由器的到達(dá)隊(duì)列劃分成為三個(gè)區(qū)域,從隊(duì)首 發(fā)送,最小門限 THmin,最大門限 THmin,數(shù)據(jù)報(bào) 到達(dá),平均隊(duì)列長度 Lav,排隊(duì),丟棄,以概率 p 丟棄,丟棄概率 p 與 THmin 和 Thmax 的關(guān)系,最小門限 THmin,最大門限 THmax,

45、平均隊(duì)列長度 Lav,數(shù)據(jù)報(bào)丟棄概率 p,1.0,0,pmax,當(dāng) LAV Thmin 時(shí),丟棄概率 p = 0。 當(dāng) LAV Thmax 時(shí),丟棄概率 p = 1。 當(dāng) THmin LAV THmax時(shí), 0 p 1 。 例如,按線性規(guī)律變化,從 0 變到 pmax。,瞬時(shí)隊(duì)列長度和平均隊(duì)列長度的區(qū)別,隊(duì)列長度,時(shí)間,瞬時(shí)隊(duì)列長度,平均隊(duì)列長度,7.4.7 TCP 的運(yùn)輸連接管理1. 運(yùn)輸連接的三個(gè)階段,運(yùn)輸連接就有三個(gè)階段,即:連接建立、數(shù)據(jù)傳送和連接釋放。運(yùn)輸連接的管理就是使運(yùn)輸連接的建立和釋放都能正常地進(jìn)行。 連接建立過程中要解決以下三個(gè)問題: 要使每一方能夠確知對(duì)方的存在。 要允許雙方協(xié)商一些參數(shù)(如最大報(bào)文段長度,最大窗口大

溫馨提示

  • 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)論