版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、課件制作人:李琳第 7 章 運(yùn)輸層課件制作人:李琳目錄7.1 運(yùn)輸層協(xié)議概述7.2 TCP/IP 體系中的運(yùn)輸層7.3 用戶數(shù)據(jù)報(bào)協(xié)議 UDP 7.4 傳輸控制協(xié)議 TCP課件制作人:李琳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)程提供了邏輯通信 54321運(yùn)輸層提供應(yīng)用進(jìn)程間的邏輯通信主機(jī) A主機(jī) B應(yīng)用進(jìn)程應(yīng)用進(jìn)程路由器 1路由器 2AP1LAN2WANAP2AP3AP4IP 層L
2、AN1AP1AP2AP4端口端口54321IP 協(xié)議的作用范圍運(yùn)輸層協(xié)議 TCP 和 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é)議的作用范
3、圍(提供主機(jī)之間的邏輯通信)TCP 和 UDP 協(xié)議的作用范圍(提供進(jìn)程之間的邏輯通信)因 特 網(wǎng)課件制作人:李琳運(yùn)輸層的主要功能 運(yùn)輸層為應(yīng)用進(jìn)程之間提供端到端的邏輯通信(但網(wǎng)絡(luò)層是為主機(jī)之間提供邏輯通信)。運(yùn)輸層還要對(duì)收到的報(bào)文進(jìn)行差錯(cuò)檢測。運(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課件制作人:李琳兩種不同的
4、運(yùn)輸協(xié)議運(yùn)輸層向高層用戶屏蔽了下面網(wǎng)絡(luò)核心的細(xì)節(jié)(如網(wǎng)絡(luò)拓?fù)?、所采用的路由選擇協(xié)議等),它使應(yīng)用進(jìn)程看見的就是好像在兩個(gè)運(yùn)輸層實(shí)體之間有一條端到端的邏輯通信信道。當(dāng)運(yùn)輸層采用面向連接的 TCP 協(xié)議時(shí),盡管下面的網(wǎng)絡(luò)是不可靠的(只提供盡最大努力服務(wù)),但這種邏輯通信信道就相當(dāng)于一條全雙工的可靠信道。當(dāng)運(yùn)輸層采用無連接的 UDP 協(xié)議時(shí),這種邏輯通信信道是一條不可靠信道。 運(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é)議不可靠信道發(fā)送進(jìn)程課件制作人:李琳網(wǎng)絡(luò)環(huán)境中的進(jìn)程通信與單機(jī)系統(tǒng)內(nèi)部的進(jìn)程通信
5、的主要區(qū)別:網(wǎng)絡(luò)中主機(jī)的高度自治性;不是在同一個(gè)主機(jī)系統(tǒng)之中,沒有一個(gè)統(tǒng)一的高層進(jìn)行控制與管理;網(wǎng)絡(luò)中一臺(tái)主機(jī)對(duì)其它主機(jī)的 活動(dòng)狀態(tài) 位于其它主機(jī)系統(tǒng)中的各個(gè)進(jìn)程狀態(tài) 這些進(jìn)程什么時(shí)間參與網(wǎng)絡(luò)活動(dòng) 希望與網(wǎng)絡(luò)中哪一臺(tái)主機(jī)的什么進(jìn)程通信一 概無從知道網(wǎng)絡(luò)環(huán)境中分布式進(jìn)程通信的特點(diǎn)課件制作人:李琳網(wǎng)絡(luò)環(huán)境中分布式進(jìn)程通信需要解決:進(jìn)程命名與尋址方法多重協(xié)議的識(shí)別進(jìn)程間相互作用的模式課件制作人:李琳網(wǎng)絡(luò)環(huán)境中進(jìn)程標(biāo)識(shí)在一臺(tái)計(jì)算機(jī)中,不同的進(jìn)程用進(jìn)程號(hào)或進(jìn)程標(biāo)識(shí)(process ID)惟一地標(biāo)識(shí)出來 網(wǎng)絡(luò)環(huán)境中完整的進(jìn)程標(biāo)識(shí)應(yīng)該是: 本地主機(jī)地址-本地進(jìn)程標(biāo)識(shí) 遠(yuǎn)程主機(jī)地址-遠(yuǎn)程進(jìn)程標(biāo)識(shí)進(jìn)程地址也叫做
6、端口號(hào)(port number) 課件制作人:李琳多重協(xié)議的識(shí)別UNIX操作系統(tǒng)的TCP/IP的傳輸層就有TCP協(xié)議和UDP協(xié)議;網(wǎng)絡(luò)環(huán)境中一個(gè)進(jìn)程的全網(wǎng)惟一的標(biāo)識(shí)需要一個(gè)三元組來表示:協(xié)議,本地地址,本地端口號(hào)。網(wǎng)絡(luò)環(huán)境中一個(gè)完整的進(jìn)程通信標(biāo)識(shí)需要一個(gè)五元組來表示: 協(xié)議 本地地址 本地端口號(hào) 遠(yuǎn)地地址 遠(yuǎn)地端口號(hào)課件制作人:李琳進(jìn)程間的作用模式在TCP/IP協(xié)議體系中,進(jìn)程間的相互作用采用客戶/服務(wù)器(Client/Server)模式 ;客戶與服務(wù)器分別表示相互通信的兩個(gè)應(yīng)用程序的進(jìn)程;客戶向服務(wù)器發(fā)出服務(wù)請(qǐng)求,服務(wù)器響應(yīng)客戶的請(qǐng)求,提供客戶機(jī)所需要的網(wǎng)絡(luò)服務(wù); 課件制作人:李琳與數(shù)據(jù)鏈路
7、層的區(qū)別主機(jī)路由器主機(jī)網(wǎng)絡(luò)網(wǎng)絡(luò)數(shù)據(jù)鏈路層的職責(zé)數(shù)據(jù)鏈路層的職責(zé)傳輸層的職責(zé)課件制作人:李琳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ù)單位
8、協(xié)議是 UDP 報(bào)文或用戶數(shù)據(jù)報(bào)。 TCP 與 UDP 課件制作人:李琳TPDU結(jié)構(gòu)與IP分組、幀結(jié)構(gòu)的關(guān)系課件制作人:李琳TCP/IP 體系中的運(yùn)輸層協(xié)議 TCPUDPIP應(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ù)單元的首部增大很多,還要占用許多的
9、處理機(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)過互連網(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ù)向上通過端口
10、交付給應(yīng)用層相應(yīng)的進(jìn)程。從這個(gè)意義上講,端口是用來標(biāo)志應(yīng)用層的進(jìn)程。 端口在進(jìn)程之間的通信中所起的作用 應(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 分用IP 數(shù)據(jù)報(bào)IP 數(shù)據(jù)報(bào)發(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í),必
11、須為它指派一個(gè)熟知端口。另一類則是一般端口,用來隨時(shí)分配給請(qǐng)求通信的客戶進(jìn)程。 課件制作人:李琳熟知端口號(hào)的分配方法UDP的熟知端口號(hào)的分配29端口號(hào)服務(wù)進(jìn)程說明53domain域名服務(wù)67/68DHCP動(dòng)態(tài)主機(jī)配置協(xié)議69TFTP簡單文件傳送協(xié)議111RPC遠(yuǎn)程過程調(diào)用123NTP網(wǎng)絡(luò)時(shí)間協(xié)議161/162SNMP簡單網(wǎng)絡(luò)管理協(xié)議520RIP路由信息協(xié)議課件制作人:李琳TCP的熟知端口號(hào)的分配30端口號(hào)服務(wù)進(jìn)程說明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 使用“連接”(而不僅僅是“端口”)作為最基本的抽象,同時(shí)將 TCP 連接的端點(diǎn)稱為插口(socket),或套接字、套接口。插口和端口、IP 地址的關(guān)系是: IP 地址3 端口號(hào)1500 3, 1500插口(socket)課件制作人:李琳同一個(gè)名詞 socket有多種不同的意思 應(yīng)用編程接口 API 稱為 socket API, 簡稱為 socket。socket API 中使用的一個(gè)函數(shù)名也叫作socket。調(diào)用 socket 函數(shù)的端點(diǎn)稱為 socket。調(diào)用 socke t函數(shù)時(shí)其返回值稱為 socket描述符,可簡
13、稱為 socket。在操作系統(tǒng)內(nèi)核中連網(wǎng)協(xié)議的 Berkeley 實(shí)現(xiàn),稱為 socket 實(shí)現(xiàn)。 課件制作人:李琳7.3 用戶數(shù)據(jù)報(bào)協(xié)議 UDP 7.3.1 UDP 概述 UDP 只在 IP 的數(shù)據(jù)報(bào)服務(wù)之上增加了很少一點(diǎn)的功能,即端口的功能和差錯(cuò)檢測的功能。雖然 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)用是很重要的。 課件制作人:李琳UDP 的主要特點(diǎn) UDP 是無連接的,即發(fā)送數(shù)據(jù)之前不
14、需要建立連接。UDP 使用盡最大努力交付,即不保證可靠交付,同時(shí)也不使用擁塞控制。UDP 是面向報(bào)文的。UDP 沒有擁塞控制,很適合多媒體通信的要求。 UDP 支持一對(duì)一、一對(duì)多、多對(duì)一和多對(duì)多的交互通信。UDP 的首部開銷小,只有 8 個(gè)字節(jié)。 課件制作人:李琳面向報(bào)文的 UDP發(fā)送方 UDP 對(duì)應(yīng)用程序交下來的報(bào)文,在添加首部后就向下交付 IP 層。UDP 對(duì)應(yīng)用層交下來的報(bào)文,既不合并,也不拆分,而是保留這些報(bào)文的邊界。應(yīng)用層交給 UDP 多長的報(bào)文,UDP 就照樣發(fā)送,即一次發(fā)送一個(gè)報(bào)文。接收方 UDP 對(duì) IP 層交上來的 UDP 用戶數(shù)據(jù)報(bào),在去除首部后就原封不動(dòng)地交付上層的應(yīng)用進(jìn)
15、程,一次交付一個(gè)完整的報(bào)文。應(yīng)用程序必須選擇合適大小的報(bào)文。課件制作人:李琳UDP 是面向報(bào)文的 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)用層課件制作人:李琳端口是用報(bào)文隊(duì)列來實(shí)現(xiàn) UDP 端口 51000UDP 端口 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 地址017IP 數(shù)據(jù)報(bào)字節(jié)44112122222字節(jié)發(fā)送在前數(shù) 據(jù)首 部UDP 用戶數(shù)據(jù)報(bào)偽首部
16、源端口目的端口長 度檢驗(yàn)和數(shù) 據(jù)首 部UDP長度源 IP 地址目的 IP 地址017IP 數(shù)據(jù)報(bào)字節(jié)44112122222字節(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 地址017IP 數(shù)據(jù)報(bào)字節(jié)44112122222字節(jié)發(fā)送在前數(shù) 據(jù)首 部UDP 用戶數(shù)據(jù)報(bào)在計(jì)算檢驗(yàn)和時(shí),臨時(shí)把“偽首部”和 UDP 用戶數(shù)據(jù)報(bào)連接在一起。偽首部僅僅是為了計(jì)算檢驗(yàn)和。計(jì)算 UDP 檢驗(yàn)和的例子 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(檢驗(yàn)和)01010100 01000101 數(shù)據(jù)01010011 01010100 數(shù)據(jù)01001001 01001110 數(shù)據(jù)01000111 00000000 數(shù)據(jù)和 0(填充)10
18、010110 11101011 求和得出的結(jié)果01101001 00010100 檢驗(yàn)和 04112 字節(jié)偽首部8 字節(jié)UDP 首部7 字節(jié)數(shù)據(jù)填充按二進(jìn)制反碼運(yùn)算求和將得出的結(jié)果求反碼全 0 17 15 1087 13 15 全 0數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù)數(shù)據(jù) 數(shù)據(jù) 數(shù)據(jù) 全 0課件制作人:李琳確定應(yīng)用程序在傳輸層是否采用UDP協(xié)議的原則:系統(tǒng)對(duì)性能的要求高于對(duì)數(shù)據(jù)完整性的要求;需要“簡短快捷”的數(shù)據(jù)交換;需要多播和廣播的應(yīng)用; UDP協(xié)議是一種適用于實(shí)時(shí)語音與視頻傳輸?shù)膫鬏攲訁f(xié)議。42課件制作人:李琳 TCP與UDP協(xié)議的比較特征/描述TCPUDP一般描述允許應(yīng)用程序可靠地發(fā)送數(shù)據(jù),功能齊全
19、簡單、高速,只負(fù)責(zé)將應(yīng)用層與網(wǎng)絡(luò)層銜接起來面向連接或無連接面向連接,在TPDU傳輸之前需要建立TCP連接無連接,在TPDU傳輸之前不需要建立UDP連接與應(yīng)用層的數(shù)據(jù)接口基于字節(jié)流,應(yīng)用層不需要規(guī)定特定的數(shù)據(jù)格式基于報(bào)文,應(yīng)用層需要將數(shù)據(jù)分成包來傳送可靠性與確認(rèn)可靠報(bào)文傳輸,對(duì)所有的數(shù)據(jù)均要確認(rèn)不可靠,不需要對(duì)傳輸?shù)臄?shù)據(jù)確認(rèn),盡力而為地交付重傳自動(dòng)重傳丟失的數(shù)據(jù)不負(fù)責(zé)檢查是否丟失數(shù)據(jù)和重傳開銷低,但高于UDP很低傳輸速率高,但低于UDP很高適用的數(shù)據(jù)量從少量到幾個(gè)GB的數(shù)據(jù)從少量到幾百個(gè)字節(jié)的數(shù)據(jù)適用的應(yīng)用類型對(duì)數(shù)據(jù)傳輸可靠性要求較高的應(yīng)用,例如文件與報(bào)文傳輸發(fā)送數(shù)量比較少、對(duì)數(shù)據(jù)傳輸可靠性要求
20、較低的應(yīng)用,例如IP電話、視頻會(huì)議、多播與廣播43課件制作人:李琳7.4 傳輸控制協(xié)議 TCP 7.4.1 TCP 概述 端口發(fā)送 TCP 報(bào)文段TCPTCP接收緩存發(fā)送緩存報(bào)文段報(bào)文段報(bào)文段端口發(fā)送端接收端向發(fā)送緩存寫入數(shù)據(jù)塊從接收緩存讀取數(shù)據(jù)塊應(yīng)用進(jìn)程應(yīng)用進(jìn)程課件制作人:李琳TCP 最主要的特點(diǎn)1.TCP 是面向連接的運(yùn)輸層協(xié)議。 應(yīng)用程序在使用TCP協(xié)議之前,必須先建立TCP連接,在傳送數(shù)據(jù)完畢后,必須釋放已經(jīng)建立的TCP連接。TCP 連接是一條虛連接而不是一條真正的物理連接。每一條 TCP 連接只能有兩個(gè)端點(diǎn)(endpoint),每一條 TCP 連接只能是點(diǎn)對(duì)點(diǎn)的(一對(duì)一),無廣播和多
21、播。 TCP 連接的端點(diǎn)不是主機(jī),不是主機(jī)的IP 地址,不是應(yīng)用進(jìn)程,也不是運(yùn)輸層的協(xié)議端口。TCP 連接的端點(diǎn)叫做套接字(socket)或插口。課件制作人:李琳套接字 (socket) 套接字 socket = (IP地址: 端口號(hào)) (5-1)每一條 TCP 連接唯一地被通信兩端的兩個(gè)端點(diǎn)(即兩個(gè)套接字)所確定。即: TCP 連接 := socket1, socket2 = (IP1: port1), (IP2: port2) (5-2)注意:同一個(gè)IP地址可以有多個(gè)不同的TCP連接,同一個(gè)端口號(hào)也可以出現(xiàn)在多個(gè)不同的TCP連接中。課件制作人:李琳2. 支持同時(shí)建立多個(gè)并發(fā)的TCP連接根據(jù)
22、應(yīng)用程序的需要,TCP協(xié)議支持一個(gè)服務(wù)器與多個(gè)客戶端同時(shí)建立多個(gè)TCP連接;也支持一個(gè)客戶端與多個(gè)服務(wù)器同時(shí)建立多個(gè)TCP連接;TCP軟件將分別管理多個(gè)TCP連接。47課件制作人:李琳舉例:一個(gè)Web服務(wù)器的套接字為“1:80”,同時(shí)有三個(gè)客戶端要訪問此服務(wù)器,它們的套接字分別為“:53022”、“:63522”和“:57122”,則服務(wù)器需要同時(shí)建立3個(gè)TCP連接,用五元組表示這3個(gè)連接,分別為:TCP, 1:80, :53022TCP, 1:80, :63522TCP, 1:80, :57122課件制作人:李琳3.TCP 提供可靠交付的服務(wù)。TCP是一種可靠的傳輸服務(wù)協(xié)議,它使用確認(rèn)機(jī)制檢
23、查數(shù)據(jù)是否安全和完整地到達(dá),并且提供擁塞控制功能;TCP支持可靠數(shù)據(jù)通信的關(guān)鍵是對(duì)發(fā)送和接收的數(shù)據(jù)進(jìn)行跟蹤、確認(rèn)與重傳;傳輸層傳輸?shù)目煽啃允墙⒃诰W(wǎng)絡(luò)層基礎(chǔ)上,同時(shí)也就會(huì)受到它們的限制。通過TCP連接傳送的數(shù)據(jù),無差錯(cuò)、不丟失、不重復(fù)、按序到達(dá)。課件制作人:李琳TCP允許通信雙方的應(yīng)用進(jìn)程在任何時(shí)候都能發(fā)送數(shù)據(jù)。TCP連接的兩端都設(shè)有發(fā)送緩存和接收緩存,用來臨時(shí)存放雙向通信的數(shù)據(jù)。在發(fā)送時(shí),應(yīng)用程序把數(shù)據(jù)傳送給TCP的緩存后,就可以做自己的事,TCP在合適的時(shí)候把數(shù)據(jù)發(fā)送出去。在接收時(shí),TCP把收到的數(shù)據(jù)放入緩存,上層的應(yīng)用進(jìn)程在合適的時(shí)候讀取緩存中的數(shù)據(jù)。4. TCP 提供全雙工通信。課件制
24、作人:李琳 “流”指的是流入到進(jìn)程或從進(jìn)程流出的字節(jié)序列?!懊嫦蜃止?jié)流”的含義是:雖然應(yīng)用程序和TCP交互的是一次一個(gè)大小不等的數(shù)據(jù)塊,但TCP把應(yīng)用程序交下來的數(shù)據(jù)看成僅僅是一連串的無結(jié)構(gòu)的字節(jié)流。TCP不保證接收方應(yīng)用程序所收到的數(shù)據(jù)塊和發(fā)送方應(yīng)用程序所發(fā)出的數(shù)據(jù)塊具有對(duì)應(yīng)大小的關(guān)系,但接收方應(yīng)用程序收到的字節(jié)流必須和送方應(yīng)用程序發(fā)出的字節(jié)流完全一樣。接收方的應(yīng)用程序必須有能力識(shí)別收到的字節(jié)流,把它還原成有意義的應(yīng)用層數(shù)據(jù)。5.面向字節(jié)流。課件制作人:李琳TCP 面向流的概念 課件制作人:李琳應(yīng)當(dāng)注意TCP 對(duì)應(yīng)用進(jìn)程一次把多長的報(bào)文發(fā)送到TCP 的緩存中是不關(guān)心的。TCP 根據(jù)對(duì)方給出的
25、窗口值和當(dāng)前網(wǎng)絡(luò)擁塞的程度來決定一個(gè)報(bào)文段應(yīng)包含多少個(gè)字節(jié)(UDP 發(fā)送的報(bào)文長度是應(yīng)用進(jìn)程給出的)。如果應(yīng)用進(jìn)程傳送到TCP緩存的數(shù)據(jù)塊太長,TCP就可以把它劃分短一些再傳送。如果應(yīng)用進(jìn)程一次只發(fā)來一個(gè)字節(jié),TCP也可以等待積累足夠多的字節(jié)后再構(gòu)成報(bào)文段發(fā)送出去。課件制作人:李琳流(stream)相當(dāng)于一個(gè)管道,從一端放入什么內(nèi)容,從另一端可以照原樣取出什么內(nèi)容,它描述了一個(gè)不出現(xiàn)丟失、重復(fù)和亂序的數(shù)據(jù)傳輸過程;TCP在傳輸過程中將應(yīng)用程序提交的數(shù)據(jù)看成是一連串的、無結(jié)構(gòu)的字節(jié)流;因此接收端應(yīng)用程序數(shù)據(jù)字節(jié)的起始與終結(jié)位置必須由應(yīng)用程序自己確定。課件制作人:李琳 總結(jié): TCP協(xié)議是面向連接
26、、面向字節(jié)流、支持全雙工、支持并發(fā)連接、提供確認(rèn)重傳與擁塞控制的可靠傳輸層協(xié)議。55課件制作人:李琳7.4.2 TCP報(bào)文段的首部TCP首部20 字節(jié)的固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號(hào)緊 急 指 針窗 口確 認(rèn) 號(hào)保 留FIN32 bitSYNRSTPSHACKURG比特 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) (長 度 可 變)源 端 口序 號(hào)緊 急 指 針窗 口確 認(rèn) 號(hào)保 留FINSYNRSTPSHACKURG
27、比特 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)保 留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)。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號(hào)緊
28、 急 指 針窗 口確 認(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)。 是對(duì)收到的數(shù)據(jù)的最高序號(hào)表示確認(rèn),確認(rèn)號(hào)是對(duì)是對(duì)最高序號(hào)加1。TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號(hào)緊 急 指 針窗 口確 認(rèn) 號(hào)保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充數(shù)據(jù)偏移占 4 bit,它指出 TCP 報(bào)文段的數(shù)據(jù)起始處距離 TCP 報(bào)文段的起始處有多遠(yuǎn)(即首部長度)?!皵?shù)據(jù)偏移”的單位不是字節(jié)而是 32
29、 bit 字(4 字節(jié)為計(jì)算單位)。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號(hào)緊 急 指 針窗 口確 認(rèn) 號(hào)保 留FINSYNRSTPSHACKURG比特 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)保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充緊急比特 URG 當(dāng) URG 1 時(shí),表明緊急指針字段有效。它告訴系統(tǒng)此報(bào)文段中有緊急
30、數(shù)據(jù),應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級(jí)的數(shù)據(jù))。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號(hào)緊 急 指 針窗 口確 認(rèn) 號(hào)保 留FINSYNRSTPSHACKURG比特 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規(guī)定,在連接建立后所有傳送的報(bào)文段都必須把ACK置1。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號(hào)緊 急 指 針窗 口確 認(rèn) 號(hào)保 留FINSYNRSTPSHACKURG比特 0 8 16 24
31、 31填 充推送比特 PSH (PuSH) 發(fā)送方置1,并立即創(chuàng)建一個(gè)報(bào)文段發(fā)送出去。接收 TCP 收到推送比特置 1 的報(bào)文段,就盡快地交付給接收應(yīng)用進(jìn)程,而不再等到整個(gè)緩存都填滿了后再向上交付。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號(hào)緊 急 指 針窗 口確 認(rèn) 號(hào)保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充復(fù)位比特 RST (ReSeT) 當(dāng) RST 1 時(shí),表明 TCP 連接中出現(xiàn)嚴(yán)重差錯(cuò)(如由于主機(jī)崩潰或其他原因),必須釋放連接,然后再重新建立運(yùn)輸連接。還可用來拒絕一個(gè)非法的報(bào)文段或拒絕打開
32、一個(gè)連接。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號(hào)緊 急 指 針窗 口確 認(rèn) 號(hào)保 留FINSYNRSTPSHACKURG比特 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)保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充終止比特 FIN (FINal) 用來釋放一個(gè)連接。當(dāng)FIN 1 時(shí),表明此報(bào)文段的發(fā)
33、送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運(yùn)輸連接。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號(hào)緊 急 指 針窗 口確 認(rèn) 號(hào)保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充窗口字段 占 2 字節(jié)。窗口字段用來控制對(duì)方發(fā)送的數(shù)據(jù)量,單位為字節(jié)。TCP 連接的一端根據(jù)設(shè)置的緩存空間大小確定自己的接收窗口大小,然后通知對(duì)方以確定對(duì)方的發(fā)送窗口的上限。窗口指的是發(fā)送本報(bào)文段的一方的接收窗口。窗口值告訴對(duì)方:從本報(bào)文段首部中的確認(rèn)號(hào)算起,接收方目前允許對(duì)方發(fā)送的數(shù)據(jù)量。窗口值作為接收方讓發(fā)送方設(shè)置其發(fā)送窗口的依據(jù)。窗口值是經(jīng)
34、常在動(dòng)態(tài)變化的。TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號(hào)緊 急 指 針窗 口確 認(rèn) 號(hào)保 留FINSYNRSTPSHACKURG比特 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)保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充緊急指針字段 占 16 bit。緊
35、急指針指出在本報(bào)文段中的緊急數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號(hào)緊 急 指 針窗 口確 認(rèn) 號(hào)保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充選項(xiàng)字段 長度可變。TCP 只規(guī)定了一種選項(xiàng),即最大報(bào)文段長度 MSS (Maximum Segment Size)。MSS 告訴對(duì)方 TCP:“我的緩存所能接收的報(bào)文段的數(shù)據(jù)字段的最大長度是 MSS 個(gè)字節(jié)?!?MSS 是 TCP 報(bào)文段中的數(shù)據(jù)字段的最大長度。數(shù)據(jù)字段加上 TCP 首部才等于整個(gè)的 TCP 報(bào)文段。課件制作人:李琳
36、其他選項(xiàng)窗口擴(kuò)大選項(xiàng) 占 3 字節(jié),其中有一個(gè)字節(jié)表示移位值 S。新的窗口值等于TCP 首部中的窗口位數(shù)增大到(16 + S),相當(dāng)于把窗口值向左移動(dòng) S 位后獲得實(shí)際的窗口大小。時(shí)間戳選項(xiàng)占10 字節(jié),其中最主要的字段時(shí)間戳值字段(4 字節(jié))和時(shí)間戳回送回答字段(4 字節(jié))。選擇確認(rèn)選項(xiàng)。 TCP首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號(hào)緊 急 指 針窗 口確 認(rèn) 號(hào)保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充填充字段 這是為了使整個(gè)首部長度是 4 字節(jié)的整數(shù)倍。 課件制作人:李琳7.4.3 TCP 的數(shù)據(jù)
37、編號(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)。 課件制作人:李琳控制報(bào)文段發(fā)送的三種機(jī)制TCP維持一個(gè)變量等于最大報(bào)文段長度MSS;推送操作;計(jì)時(shí)器機(jī)制。課件制作人:李琳思考:若收到的報(bào)文段無差錯(cuò),只是未按序號(hào),那么應(yīng)如何處理?課件制作人:
38、李琳7.4.4 TCP 的流量控制與擁塞控制1. 滑動(dòng)窗口的概念TCP 采用大小可變的滑動(dòng)窗口進(jìn)行流量控制。窗口大小的單位是字節(jié)。在 TCP 報(bào)文段首部的窗口字段寫入的數(shù)值就是當(dāng)前給對(duì)方設(shè)置的發(fā)送窗口數(shù)值的上限。發(fā)送窗口在連接建立時(shí)由雙方商定。但在通信的過程中,接收端可根據(jù)自己的資源情況,隨時(shí)動(dòng)態(tài)地調(diào)整對(duì)方的發(fā)送窗口上限值(可增大或減小)。下面看例1 收到確認(rèn)即可前移1002003004005006007008009001012013014015016017018011發(fā)送窗口可發(fā)送不可發(fā)送指針發(fā)送端要發(fā)送 900 字節(jié)長的數(shù)據(jù),劃分為 9 個(gè) 100 字節(jié)長的報(bào)文段,而發(fā)送窗口確定為 500
39、 字節(jié)。發(fā)送端只要收到了對(duì)方的確認(rèn),發(fā)送窗口就可前移。發(fā)送 TCP 要維護(hù)一個(gè)指針。每發(fā)送一個(gè)報(bào)文段,指針就向前移動(dòng)一個(gè)報(bào)文段的距離。收到確認(rèn)即可前移1002003004005006007008009001012013014015016017018011可發(fā)送不可發(fā)送指針1002003004005006007008009001012013014015016017018011發(fā)送窗口可發(fā)送不可發(fā)送指針發(fā)送窗口前移發(fā)送端已發(fā)送了 400 字節(jié)的數(shù)據(jù),但只收到對(duì)前 200 字節(jié)數(shù)據(jù)的確認(rèn),同時(shí)窗口大小不變?,F(xiàn)在發(fā)送端還可發(fā)送 300 字節(jié)。 已發(fā)送并被確認(rèn)已發(fā)送但未被確認(rèn)10020030040050
40、06007008009001012013014015016017018011已發(fā)送并被確認(rèn)已發(fā)送但未被確認(rèn)可發(fā)送不可發(fā)送指針1002003004005006007008009001012013014015016017018011已發(fā)送并被確認(rèn)可發(fā)送不可發(fā)送指針發(fā)送窗口前移發(fā)送窗口縮小發(fā)送端收到了對(duì)方對(duì)前 400 字節(jié)數(shù)據(jù)的確認(rèn),但對(duì)方通知發(fā)送端必須把窗口減小到 400 字節(jié)。現(xiàn)在發(fā)送端最多還可發(fā)送 400 字節(jié)的數(shù)據(jù)。 課件制作人:李琳例2前移不允許發(fā)送已發(fā)送并收到確認(rèn)A 的發(fā)送窗口 = 20允許發(fā)送的序號(hào)26272829303132333435363738394041424344454647
41、484950515253545556B 期望收到的序號(hào)前沿后沿前移收縮根據(jù) B 給出的窗口值A(chǔ) 構(gòu)造出自己的發(fā)送窗口 TCP 標(biāo)準(zhǔn)強(qiáng)烈不贊成發(fā)送窗口前沿向后收縮 課件制作人:李琳不允許發(fā)送已發(fā)送并收到確認(rèn)A 的發(fā)送窗口位置不變允許發(fā)送但尚未發(fā)送262728293031323334353637383940414243444546474849505152535455已發(fā)送但未收到確認(rèn)56P1P2P3不允許接收已發(fā)送確認(rèn)并交付主機(jī)B 的接收窗口允許接收26272829303132333435363738394041424344454647484950515253545556未按序收到可用窗口A 發(fā)送
42、了 11 個(gè)字節(jié)的數(shù)據(jù) P3 P1 = A 的發(fā)送窗口(又稱為通知窗口)P2 P1 = 已發(fā)送但尚未收到確認(rèn)的字節(jié)數(shù)P3 P2 = 允許發(fā)送但尚未發(fā)送的字節(jié)數(shù)(又稱為可用窗口) 課件制作人:李琳允許發(fā)送但尚未發(fā)送A 的發(fā)送窗口向前滑動(dòng)262728293031323334353637383940414243444546474849505152535455已發(fā)送并收到確認(rèn)不允許發(fā)送已發(fā)送但未收到確認(rèn)56P1P2P3允許接收B 的接收窗口向前滑動(dòng)262728293031323334353637383940414243444546474849505152535455已發(fā)送確認(rèn)并交付主機(jī)不允許接收56未
43、按序收到A 收到新的確認(rèn)號(hào),發(fā)送窗口向前滑動(dòng) 先存下,等待缺少的數(shù)據(jù)的到達(dá)課件制作人:李琳不允許發(fā)送已發(fā)送并收到確認(rèn)A 的發(fā)送窗口已滿,有效窗口為零262728293031323334353637383940414243444546474849505152535455已發(fā)送但未收到確認(rèn)56P1P2P3A 的發(fā)送窗口內(nèi)的序號(hào)都已用完,但還沒有再收到確認(rèn),必須停止發(fā)送。 課件制作人:李琳發(fā)送緩存 最后被確認(rèn)的字節(jié)發(fā)送應(yīng)用程序發(fā)送緩存最后發(fā)送的字節(jié)發(fā)送窗口已發(fā)送TCP序號(hào)增大課件制作人:李琳接收緩存接收應(yīng)用程序已收到接收窗口TCP接收緩存下一個(gè)讀取的字節(jié)序號(hào)增大下一個(gè)期望收到的字節(jié)(確認(rèn)號(hào))課件制作
44、人:李琳發(fā)送緩存與接收緩存的作用發(fā)送緩存用來暫時(shí)存放: 發(fā)送應(yīng)用程序傳送給發(fā)送方 TCP 準(zhǔn)備發(fā)送的數(shù)據(jù); TCP 已發(fā)送出但尚未收到確認(rèn)的數(shù)據(jù)。接收緩存用來暫時(shí)存放: 按序到達(dá)的、但尚未被接收應(yīng)用程序讀取的數(shù)據(jù); 不按序到達(dá)的數(shù)據(jù)。 課件制作人:李琳需要強(qiáng)調(diào)三點(diǎn)A 的發(fā)送窗口并不總是和 B 的接收窗口一樣大(因?yàn)橛幸欢ǖ臅r(shí)間滯后)。TCP 標(biāo)準(zhǔn)沒有規(guī)定對(duì)不按序到達(dá)的數(shù)據(jù)應(yīng)如何處理。通常是先臨時(shí)存放在接收窗口中,等到字節(jié)流中所缺少的字節(jié)收到后,再按序交付上層的應(yīng)用進(jìn)程。TCP 要求接收方必須有累積確認(rèn)的功能,這樣可以減小傳輸開銷。 利用可變窗口大小進(jìn)行流量控制雙方確定的窗口值是 400 SEQ
45、 = 1SEQ = 201SEQ = 401SEQ = 301SEQ = 101SEQ = 501ACK = 201, WIN = 300ACK = 601, WIN = 0ACK = 501, WIN = 200主機(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 字節(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 至
46、700)不允許 A 再發(fā)送(到序號(hào) 600 的數(shù)據(jù)都已收到)SEQ = 201丟失!課件制作人:李琳持續(xù)計(jì)時(shí)器TCP 為每一個(gè)連接設(shè)有一個(gè)持續(xù)計(jì)時(shí)器。只要 TCP 連接的一方收到對(duì)方的零窗口通知,就啟動(dòng)持續(xù)計(jì)時(shí)器。若持續(xù)計(jì)時(shí)器設(shè)置的時(shí)間到期,就發(fā)送一個(gè)零窗口探測報(bào)文段(僅攜帶 1 字節(jié)的數(shù)據(jù)),而對(duì)方就在確認(rèn)這個(gè)探測報(bào)文段時(shí)給出了現(xiàn)在的窗口值。若窗口仍然是零,則收到這個(gè)報(bào)文段的一方就重新設(shè)置持續(xù)計(jì)時(shí)器。若窗口不是零,則死鎖的僵局就可以打破了課件制作人:李琳利用發(fā)送窗口調(diào)節(jié)發(fā)送端向網(wǎng)絡(luò)注入分組的速率不僅是為了流量控制,還為了對(duì)網(wǎng)絡(luò)進(jìn)行擁塞控制。在運(yùn)輸層討論時(shí),常說“主機(jī)發(fā)送報(bào)文段”。在運(yùn)輸層觀察
47、向網(wǎng)絡(luò)注入數(shù)據(jù)時(shí)往往不考慮首部字節(jié)。課件制作人:李琳運(yùn)輸層的擁塞控制慢開始擁塞避免快重傳快恢復(fù)課件制作人:李琳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)。課件制作人:李琳接收端窗口 rwnd 和擁塞窗口 cwnd (1) 接收端窗口 rwnd 這是接收端根據(jù)其目前的接收緩存大小所許諾的最新的窗口值,是
48、來自接收端的流量控制。接收端將此窗口值放在 TCP 報(bào)文的首部中的窗口字段,傳送給發(fā)送端。(2) 擁塞窗口 cwnd (congestion window) 是發(fā)送端根據(jù)自己估計(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í)收到應(yīng)當(dāng)?shù)竭_(dá)的確認(rèn)報(bào)文ACK。課件制作人:李琳發(fā)送窗口的上限值發(fā)送端的發(fā)送窗口的上限值應(yīng)當(dāng)取為接收端窗口 rwnd 和擁塞窗口 cwnd 這兩個(gè)變量中較
49、小的一個(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ò)的速率更加合理。 課件制作人:李琳發(fā)送方接收方發(fā)送 M1 確認(rèn) M1發(fā)送 M2M3 確認(rèn) M2M3 發(fā)送 M4M
50、7 確認(rèn) M4M7 cwnd = 1 cwnd = 2 cwnd = 4 發(fā)送 M8M15cwnd = 8 tt發(fā)送方每收到一個(gè)對(duì)新報(bào)文段的確認(rèn)(重傳的不算在內(nèi))就使 cwnd 加 1。 輪次 1輪次 2輪次 3課件制作人:李琳設(shè)置慢開始門限狀態(tài)變量ssthresh慢開始門限 ssthresh 的用法如下:當(dāng) cwnd ssthresh 時(shí),停止使用慢開始算法而改用擁塞避免算法。當(dāng) cwnd = ssthresh 時(shí),既可使用慢開始算法,也可使用擁塞避免算法。擁塞避免算法的思路是讓擁塞窗口 cwnd 緩慢地增大,即每經(jīng)過一個(gè)往返時(shí)間 RTT 就把發(fā)送方的擁塞窗口 cwnd 加 1,而不是加倍,
51、使擁塞窗口 cwnd 按線性規(guī)律緩慢增長。課件制作人:李琳當(dāng)網(wǎng)絡(luò)出現(xiàn)擁塞時(shí)無論在慢開始階段還是在擁塞避免階段,只要發(fā)送方判斷網(wǎng)絡(luò)出現(xiàn)擁塞(其根據(jù)就是沒有按時(shí)收到確認(rèn)),就要把慢開始門限 ssthresh 設(shè)置為出現(xiàn)擁塞時(shí)的發(fā)送方窗口值的一半(但不能小于2)。然后把擁塞窗口 cwnd 重新設(shè)置為 1,執(zhí)行慢開始算法。這樣做的目的就是要迅速減少主機(jī)發(fā)送到網(wǎng)絡(luò)中的分組數(shù),使得發(fā)生擁塞的路由器有足夠時(shí)間把隊(duì)列中積壓的分組處理完畢。 慢開始和擁塞避免算法的實(shí)現(xiàn)舉例 當(dāng) TCP 連接進(jìn)行初始化時(shí),將擁塞窗口置為 1。圖中的窗口單位不使用字節(jié)而使用報(bào)文段。慢開始門限的初始值設(shè)置為 16 個(gè)報(bào)文段,即 sst
52、hresh = 16。246810121416182022004812162024傳輸次數(shù)擁塞窗口 cwnd進(jìn)入擁塞避免發(fā)生超時(shí)指數(shù)規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始擁塞避免擁塞避免更新后的 ssthresh = 12進(jìn)入擁塞避免慢開始和擁塞避免算法的實(shí)現(xiàn)舉例 發(fā)送端的發(fā)送窗口不能超過擁塞窗口 cwnd 和接收端窗口 rwnd 中的最小值。我們假定接收端窗口足夠大,因此現(xiàn)在發(fā)送窗口的數(shù)值等于擁塞窗口的數(shù)值。246810121416182022004812162024傳輸次數(shù)擁塞窗口 cwnd進(jìn)入擁塞避免發(fā)生超時(shí)指數(shù)規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開
53、始擁塞避免擁塞避免更新后的 ssthresh = 12進(jìn)入擁塞避免慢開始和擁塞避免算法的實(shí)現(xiàn)舉例 在執(zhí)行慢開始算法時(shí),擁塞窗口 cwnd 的初始值為 1,發(fā)送第一個(gè)報(bào)文段 M0。 246810121416182022004812162024傳輸次數(shù)擁塞窗口 cwnd進(jìn)入擁塞避免發(fā)生超時(shí)指數(shù)規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始擁塞避免擁塞避免更新后的 ssthresh = 12進(jìn)入擁塞避免慢開始和擁塞避免算法的實(shí)現(xiàn)舉例 246810121416182022004812162024傳輸次數(shù)擁塞窗口 cwnd進(jìn)入擁塞避免發(fā)生超時(shí)指數(shù)規(guī)律增長線性規(guī)律增長ssthresh = 16
54、慢開始慢開始擁塞避免擁塞避免更新后的 ssthresh = 12進(jìn)入擁塞避免發(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?,F(xiàn)在發(fā)送端的 cwnd 從 2 增大到 4,并可發(fā)送 M3 M6共 4個(gè)報(bào)文段。 246810121416182022004812162024傳輸次數(shù)擁塞窗口 cwnd進(jìn)入擁塞避免發(fā)生超時(shí)指數(shù)規(guī)律增長線性規(guī)律增長ssthresh = 16慢開
55、始慢開始擁塞避免擁塞避免更新后的 ssthresh = 12進(jìn)入擁塞避免慢開始和擁塞避免算法的實(shí)現(xiàn)舉例 發(fā)送端每收到一個(gè)對(duì)新報(bào)文段的確認(rèn) ACK,就把發(fā)送端的擁塞窗口加 1,因此擁塞窗口 cwnd 隨著傳輸次數(shù)按指數(shù)規(guī)律增長。 246810121416182022004812162024傳輸次數(shù)擁塞窗口 cwnd進(jìn)入擁塞避免發(fā)生超時(shí)指數(shù)規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始擁塞避免擁塞避免更新后的 ssthresh = 12進(jìn)入擁塞避免慢開始和擁塞避免算法的實(shí)現(xiàn)舉例 當(dāng)擁塞窗口 cwnd 增長到慢開始門限值 ssthresh 時(shí)(即當(dāng) cwnd = 16 時(shí)),就改為執(zhí)行擁
56、塞避免算法,擁塞窗口按線性規(guī)律增長。 246810121416182022004812162024傳輸次數(shù)擁塞窗口 cwnd進(jìn)入擁塞避免發(fā)生超時(shí)指數(shù)規(guī)律增長ssthresh = 16慢開始慢開始線性規(guī)律增長擁塞避免擁塞避免更新后的 ssthresh = 12進(jìn)入擁塞避免慢開始和擁塞避免算法的實(shí)現(xiàn)舉例 假定擁塞窗口的數(shù)值增長到 24 時(shí),網(wǎng)絡(luò)出現(xiàn)超時(shí)(表明網(wǎng)絡(luò)擁塞了)。 246810121416182022004812162024傳輸次數(shù)擁塞窗口 cwnd進(jìn)入擁塞避免發(fā)生超時(shí)指數(shù)規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始擁塞避免擁塞避免更新后的 ssthresh = 12進(jìn)入擁塞
57、避免慢開始和擁塞避免算法的實(shí)現(xiàn)舉例 更新后的 ssthresh 值變?yōu)?12(即發(fā)送窗口數(shù)值 24 的一半),擁塞窗口再重新設(shè)置為 1,并執(zhí)行慢開始算法。 246810121416182022004812162024傳輸次數(shù)擁塞窗口 cwnd進(jìn)入擁塞避免發(fā)生超時(shí)指數(shù)規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始擁塞避免擁塞避免更新后的 ssthresh = 12進(jìn)入擁塞避免慢開始和擁塞避免算法的實(shí)現(xiàn)舉例 當(dāng) cwnd = 12 時(shí)改為執(zhí)行擁塞避免算法,擁塞窗口按按線性規(guī)律增長,每經(jīng)過一個(gè)往返時(shí)延就增加一個(gè) MSS 的大小。 24681012141618202200481216202
58、4傳輸次數(shù)擁塞窗口 cwnd進(jìn)入擁塞避免發(fā)生超時(shí)指數(shù)規(guī)律增長線性規(guī)律增長ssthresh = 16慢開始慢開始擁塞避免擁塞避免更新后的 ssthresh = 12進(jìn)入擁塞避免課件制作人:李琳乘法減小(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í)行擁塞避免算法后
59、,當(dāng)收到對(duì)所有報(bào)文段的確認(rèn)就將擁塞窗口 cwnd增加一個(gè) MSS 大小,使擁塞窗口緩慢增大,以防止網(wǎng)絡(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)文段。 快重傳舉例M1
60、, M2ACK2, ACK3M4主機(jī) A主機(jī) BB 確認(rèn) M1 和 M2A 發(fā)送 M1 和 M2A 收到了三個(gè)重復(fù)的確認(rèn) ACK3,就立即重傳 M3,而不必等待超時(shí)重傳。M3丟失!A 發(fā)送 M3 但丟失了A 發(fā)送 M4ACK3M5A 發(fā)送 M5ACK3B 發(fā)送第二個(gè)重復(fù)確認(rèn) ACK3M6A 發(fā)送 M6ACK3M3B 發(fā)送第三個(gè)重復(fù)確認(rèn) ACK3B 只能再次確認(rèn) M2(因?yàn)?M3 沒有收到)課件制作人:李琳快恢復(fù)算法 (1) 當(dāng)發(fā)送端收到連續(xù)三個(gè)重復(fù)的 ACK 時(shí),就按“乘法減小”重新設(shè)置慢開始門限 ssthresh。(2) 與慢開始不同之處是擁塞窗口 cwnd 不是設(shè)置為 1,而是設(shè)置為 ss
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湘師大新版必修三語文下冊階段測試試卷
- 2025年浙教版七年級(jí)生物下冊月考試卷含答案
- 2025年湘教新版選擇性必修3物理上冊階段測試試卷含答案
- 2025年度面料質(zhì)量認(rèn)證與采購合同范本4篇
- 2025版牛羊養(yǎng)殖基地與養(yǎng)殖戶合作銷售合同范本4篇
- 二零二五年度苗圃場租賃與農(nóng)業(yè)生態(tài)保護(hù)合作合同4篇
- 擔(dān)保合同執(zhí)行協(xié)議書(2篇)
- 2025年度模板腳手架租賃與施工一體化合同標(biāo)準(zhǔn)版4篇
- 2025版美容院員工培訓(xùn)與職業(yè)發(fā)展規(guī)劃合同4篇
- 2025年度ICP證年審專項(xiàng)服務(wù)合同4篇
- GB/T 45120-2024道路車輛48 V供電電壓電氣要求及試驗(yàn)
- 春節(jié)文化常識(shí)單選題100道及答案
- 華中師大一附中2024-2025學(xué)年度上學(xué)期高三年級(jí)第二次考試數(shù)學(xué)試題(含解析)
- 12123交管學(xué)法減分考試題及答案
- 2025年寒假實(shí)踐特色作業(yè)設(shè)計(jì)模板
- 24年追覓在線測評(píng)28題及答案
- 高考滿分作文常見結(jié)構(gòu)
- 心肌梗死診療指南
- 食堂項(xiàng)目組織架構(gòu)圖
- 原油脫硫技術(shù)
- GB/T 2518-2019連續(xù)熱鍍鋅和鋅合金鍍層鋼板及鋼帶
評(píng)論
0/150
提交評(píng)論