CH7 運(yùn)輸層.ppt_第1頁(yè)
CH7 運(yùn)輸層.ppt_第2頁(yè)
CH7 運(yùn)輸層.ppt_第3頁(yè)
CH7 運(yùn)輸層.ppt_第4頁(yè)
CH7 運(yùn)輸層.ppt_第5頁(yè)
已閱讀5頁(yè),還剩68頁(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ò),第 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.7 TCP 的運(yùn)輸連接管理,7.1 運(yùn)輸層協(xié)議概述,從通信和信息處理的角度看

2、,運(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 和 UDP 的作用范圍,AP3,應(yīng)用進(jìn)程之間的通信,兩個(gè)主機(jī)進(jìn)行通信實(shí)際上就是兩個(gè)主機(jī)中的

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

4、供邏輯通信)。 運(yùn)輸層還要對(duì)收到的報(bào)文進(jìn)行差錯(cuò)檢測(cè)。 運(yùn)輸層需要有兩種不同的運(yùn)輸協(xié)議,即面向連接的 TCP 和無(wú)連接的 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ù)訪問(wèn)點(diǎn) TSAP,網(wǎng)絡(luò)層服務(wù)訪問(wèn)點(diǎn) NSAP,運(yùn)輸層向上提供可靠的和不可靠的邏輯通信信道,?,應(yīng) 用 層,運(yùn) 輸 層,發(fā) 送 進(jìn) 程,接 收 進(jìn) 程,接 收 進(jìn) 程,數(shù)據(jù),數(shù)據(jù),全雙工可靠信道,數(shù)據(jù),數(shù)據(jù),使用 TCP 協(xié)議,使用 UDP 協(xié)議,不可

5、靠信道,發(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 傳送的數(shù)據(jù)單位協(xié)議是 UDP 報(bào)文或用戶數(shù)據(jù)報(bào)。,TCP 與 UDP,TCP/IP 體

6、系中的運(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)與網(wǎng)際層的IP數(shù)據(jù)報(bào)有很大區(qū)別。IP 數(shù)據(jù)報(bào)要經(jīng)過(guò)互連網(wǎng)中許多路由器的存儲(chǔ)轉(zhuǎn)發(fā),但 U

7、DP 用戶數(shù)據(jù)報(bào)是在運(yùn)輸層的端到端抽象的邏輯信道中傳送的。 TCP 報(bào)文段是在運(yùn)輸層抽象的端到端邏輯信道中傳送,這種信道是可靠的全雙工信道。但這樣的信道卻不知道究竟經(jīng)過(guò)了哪些路由器,而這些路由器也根本不知道上面的運(yùn)輸層是否建立了 TCP 連接。,7.2.2 端口的概念,端口就是運(yùn)輸層服務(wù)訪問(wèn)點(diǎn) TSAP。 端口的作用就是讓應(yīng)用層的各種應(yīng)用進(jìn)程都能將其數(shù)據(jù)通過(guò)端口向下交付給運(yùn)輸層,以及讓運(yùn)輸層知道應(yīng)當(dāng)將其報(bào)文段中的數(shù)據(jù)向上通過(guò)端口交付給應(yīng)用層相應(yīng)的進(jìn)程。 從這個(gè)意義上講,端口是用來(lái)標(biāo)志應(yīng)用層的進(jìn)程。,端口在進(jìn)程之間的通信中所起的作用,應(yīng) 用 層,運(yùn) 輸 層,網(wǎng) 絡(luò) 層,TCP 報(bào)文段,UDP 用

8、戶數(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)是沒(méi)有聯(lián)系的。,兩類端口,一類是熟知端口,其數(shù)值一般為 01023。當(dāng)一種新的應(yīng)用程序出現(xiàn)時(shí),必須為它指派一個(gè)熟知端口。 另一類則是一般端口,用來(lái)隨時(shí)分配給請(qǐng)求通信的客戶進(jìn)程。,插口(socket),TCP 使用“連接”(而不僅僅是“端口”)作為最基本的抽象,同時(shí)將 TCP

9、連接的端點(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)用是很重要的。,端口是用報(bào)文隊(duì)列來(lái)實(shí)現(xiàn),UDP 端口 51000,UDP 端口 69,出隊(duì)列,入隊(duì)列,出

10、隊(duì)列,入隊(duì)列,TFTP 服務(wù)器,TFTP 客戶,UDP 用戶數(shù)據(jù)報(bào),應(yīng) 用 層,運(yùn) 輸 層,7.3.2 UDP 用戶數(shù)據(jù)報(bào)的首部格式,偽首部,源端口,目的端口,長(zhǎng) 度,檢驗(yàn)和,數(shù) 據(jù),首 部,UDP長(zhǎng)度,源 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),偽首部,源端口,目的端口,長(zhǎng) 度,檢驗(yàn)和,數(shù) 據(jù),首 部,UDP長(zhǎng)度,源 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),用戶數(shù)據(jù)報(bào)

11、 UDP 有兩個(gè)字段:數(shù)據(jù)字段和首部字段。首部字段有 8 個(gè)字節(jié),由 4 個(gè)字段組成,每個(gè)字段都是兩個(gè)字節(jié)。,7.4 傳輸控制協(xié)議 TCP 7.4.1 TCP 概述,端口,發(fā)送 TCP 報(bào)文段,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) (長(zhǎ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,

12、比特 0 8 16 24 31,填 充,TCP 數(shù)據(jù)部分,TCP 首部,TCP 報(bào)文段,IP 數(shù)據(jù)部分,IP 首部,發(fā)送在前,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長(zhǎ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ù)用和分用功能都要通過(guò)端口才能實(shí)現(xiàn)。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,

13、選 項(xiàng) (長(zhǎ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,填 充,序號(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) (長(zhǎ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

14、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) (長(zhǎ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,填 充,數(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é) 固定 首部,目 的

15、 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長(zhǎ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,填 充,保留字段占 6 bit,保留為今后使用,但目前應(yīng)置為 0。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長(zhǎ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)

16、 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) 和,選 項(xiàng) (長(zhǎ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)無(wú)效。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長(zhǎng) 度 可 變),源 端 口

17、,序 號(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 (PuSH) 接收 TCP 收到推送比特置 1 的報(bào)文段,就盡快地交付給接收應(yīng)用進(jìn)程,而不再等到整個(gè)緩存都填滿了后再向上交付。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長(zhǎ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ù)位比

18、特 RST (ReSeT) 當(dāng) RST 1 時(shí),表明 TCP 連接中出現(xiàn)嚴(yán)重差錯(cuò)(如由于主機(jī)崩潰或其他原因),必須釋放連接,然后再重新建立運(yùn)輸連接。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長(zhǎ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) 和,選

19、項(xiàng) (長(zhǎ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,填 充,終止比特 FIN (FINal) 用來(lái)釋放一個(gè)連接。當(dāng)FIN 1 時(shí),表明此報(bào)文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運(yùn)輸連接。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長(zhǎ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 3

20、1,填 充,窗口字段 占 2 字節(jié)。窗口字段用來(lái)控制對(duì)方發(fā)送的數(shù)據(jù)量,單位為字節(jié)。TCP 連接的一端根據(jù)設(shè)置的緩存空間大小確定自己的接收窗口大小,然后通知對(duì)方以確定對(duì)方的發(fā)送窗口的上限。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長(zhǎ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é)的偽首

21、部。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長(zhǎ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,填 充,緊急指針字段 占 16 bit。緊急指針指出在本報(bào)文段中的緊急數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長(zhǎng) 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S H,A

22、C K,U R G,比特 0 8 16 24 31,填 充,選項(xiàng)字段 長(zhǎng)度可變。TCP 只規(guī)定了一種選項(xiàng),即最大報(bào)文段長(zhǎng)度 MSS (Maximum Segment Size)。MSS 告訴對(duì)方 TCP:“我的緩存所能接收的報(bào)文段的數(shù)據(jù)字段的最大長(zhǎng)度是 MSS 個(gè)字節(jié)?!?MSS 是 TCP 報(bào)文段中的數(shù)據(jù)字段的最大長(zhǎng)度。 數(shù)據(jù)字段加上 TCP 首部 才等于整個(gè)的 TCP 報(bào)文段。,TCP 首部,20 字節(jié) 固定 首部,目 的 端 口,數(shù)據(jù) 偏移,檢 驗(yàn) 和,選 項(xiàng) (長(zhǎng) 度 可 變),源 端 口,序 號(hào),緊 急 指 針,窗 口,確 認(rèn) 號(hào),保 留,F I N,S Y N,R S T,P S

23、H,A C K,U R G,比特 0 8 16 24 31,填 充,填充字段 這是為了使整個(gè)首部長(zhǎng)度是 4 字節(jié)的整數(shù)倍。,7.4.3 TCP 的數(shù)據(jù)編號(hào)與確認(rèn),TCP 協(xié)議是面向字節(jié)的。TCP 將所要傳送的報(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 的流量控制與擁塞控制

24、1. 滑動(dòng)窗口的概念,TCP 采用大小可變的滑動(dòng)窗口進(jìn)行流量控制。窗口大小的單位是字節(jié)。 在 TCP 報(bào)文段首部的窗口字段寫入的數(shù)值就是當(dāng)前給對(duì)方設(shè)置的發(fā)送窗口數(shù)值的上限。 發(fā)送窗口在連接建立時(shí)由雙方商定。但在通信的過(guò)程中,接收端可根據(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é)長(zhǎng)的數(shù)據(jù),劃分為 9 個(gè) 100 字節(jié)長(zhǎng)的報(bào)文段,而發(fā)送窗口確定為 500 字節(jié)。 發(fā)送端只

25、要收到了對(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,700,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é)。

26、,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ā)送,不可發(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,允許

27、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 字節(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 連接需要有以

28、下兩個(gè)狀態(tài)變量: 接收端窗口 rwnd (receiver window) 又稱為通知窗口(advertised window)。 擁塞窗口 cwnd (congestion window)。,接收端窗口 rwnd 和擁塞窗口 cwnd,(1) 接收端窗口 rwnd 這是接收端根據(jù)其目前的接收緩存大小所許諾的最新的窗口值,是來(lái)自接收端的流量控制。接收端將此窗口值放在 TCP 報(bào)文的首部中的窗口字段,傳送給發(fā)送端。 (2) 擁塞窗口 cwnd (congestion window) 是發(fā)送端根據(jù)自己估計(jì)的網(wǎng)絡(luò)擁塞程度而設(shè)置的窗口值,是來(lái)自發(fā)送端的流量控制。,發(fā)送窗口的上限值,發(fā)送端的發(fā)送窗口的上

29、限值應(yīng)當(dāng)取為接收端窗口 rwnd 和擁塞窗口 cwnd 這兩個(gè)變量中較小的一個(gè),即應(yīng)按以下公式確定: 發(fā)送窗口的上限值 Min rwnd, cwnd (7-1) 當(dāng) rwnd cwnd 時(shí),是接收端的接收能力限制發(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)舉例

30、,當(dāng) TCP 連接進(jìn)行初始化時(shí),將擁塞窗口置為 1。圖中的窗口單位不使用字節(jié)而使用報(bào)文段。,慢開始門限的初始值設(shè)置為 16 個(gè)報(bào)文段, 即 ssthresh = 16。,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)舉例,發(fā)送端的發(fā)送窗口不能超過(guò)擁塞窗口 cwnd 和接收端窗口 rwnd 中的最小值。我們假定接收端窗口足夠大,因此現(xiàn)在發(fā)送窗口的數(shù)值等于擁塞窗口的數(shù)值。,2,4,6,8,1

31、0,12,14,16,18,20,22,0,0,4,8,12,16,20,24,傳輸次數(shù),擁塞窗口 cwnd,ssthresh = 16,慢開始,慢開始,擁塞避免,擁塞避免,更新后的 ssthresh = 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,

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

33、6,20,24,傳輸次數(shù),擁塞窗口 cwnd,ssthresh = 16,慢開始,慢開始,擁塞避免,擁塞避免,更新后的 ssthresh = 12,慢開始和擁塞避免算法的實(shí)現(xiàn)舉例,當(dāng)擁塞窗口 cwnd 增長(zhǎng)到慢開始門限值 ssthresh 時(shí)(即當(dāng) cwnd = 16 時(shí)),就改為執(zhí)行擁塞避免算法,擁塞窗口按線性規(guī)律增長(zhǎng)。,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)舉例,假定擁塞窗口的數(shù)值增長(zhǎng)

34、到 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 值變?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,慢開始,慢開始

35、,擁塞避免,擁塞避免,更新后的 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)絡(luò)過(guò)早出現(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,而不

溫馨提示

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