最新《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層課件_第1頁
最新《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層課件_第2頁
最新《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層課件_第3頁
最新《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層課件_第4頁
最新《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層課件_第5頁
已閱讀5頁,還剩129頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層8.1運(yùn)輸層協(xié)議概述從通信和信息處理的角度看,運(yùn)輸層向它上面的應(yīng)用層提供通信服務(wù),它屬于面向通信部分的最高層,同時(shí)也是用戶功能中的最低層。物理層網(wǎng)絡(luò)層運(yùn)輸層應(yīng)用層數(shù)據(jù)鏈路層面向信息處理面向通信用戶功能網(wǎng)絡(luò)功能28.1運(yùn)輸層協(xié)議概述從通信和信息處理的角度看,運(yùn)輸層最新《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層課件最新《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層課件最新《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層課件最新《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層課件最新《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層課件最新《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層課件兩個(gè)對(duì)等運(yùn)輸實(shí)體在通信時(shí)傳送的數(shù)據(jù)單位叫作運(yùn)輸協(xié)議數(shù)據(jù)單元TPDU(TransportProtocolDataUnit)。TCP傳送的數(shù)據(jù)單位協(xié)議是TCP報(bào)文段(segment)UDP傳送的數(shù)據(jù)單位協(xié)議是UDP報(bào)文或用戶數(shù)據(jù)報(bào)。TCP與UDP9兩個(gè)對(duì)等運(yùn)輸實(shí)體在通信時(shí)傳送的數(shù)據(jù)單位叫作運(yùn)輸協(xié)議數(shù)據(jù)單元TCP/IP體系中的運(yùn)輸層協(xié)議TCPUDPIP應(yīng)用層與各種網(wǎng)絡(luò)接口運(yùn)輸層10TCP/IP體系中的運(yùn)輸層協(xié)議TCPUDPIP應(yīng)用層與各TCP與UDPUDP在傳送數(shù)據(jù)之前不需要先建立連接。對(duì)方的運(yùn)輸層在收到UDP報(bào)文后,不需要給出任何確認(rèn)。雖然UDP不提供可靠交付,但在某些情況下UDP是一種最有效的工作方式。TCP則提供面向連接的服務(wù)。TCP不提供廣播或多播服務(wù)。由于TCP要提供可靠的、面向連接的運(yùn)輸服務(wù),因此不可避免地增加了許多的開銷。這不僅使協(xié)議數(shù)據(jù)單元的首部增大很多,還要占用許多的處理機(jī)資源。11TCP與UDPUDP在傳送數(shù)據(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連接。12還要強(qiáng)調(diào)兩點(diǎn)運(yùn)輸層的UDP用戶數(shù)據(jù)報(bào)與網(wǎng)際層的IP數(shù)據(jù)表8.2 使用UDP和TCP的各種應(yīng)用層協(xié)議應(yīng)用應(yīng)用層協(xié)議傳輸層協(xié)議名字轉(zhuǎn)換DNSUDP文件傳送TFTPUDP路由選擇協(xié)議RIPUDPIP地址配置BOOTP.DHCPUDP網(wǎng)絡(luò)管理SNMPUDP遠(yuǎn)程文件服務(wù)器NFSUDPIP電話專用協(xié)議UDP13表8.2 使用UDP和TCP的各種應(yīng)用層協(xié)議應(yīng)用應(yīng)應(yīng)用應(yīng)用層協(xié)議傳輸層協(xié)議流式多媒體通信專用協(xié)議UDP多播IGMPUDP電子郵件SMTPTCP遠(yuǎn)程終端接入TELNETTCP萬維網(wǎng)HTTPTCP文件傳送FTPTCP表8.2(續(xù)) 使用UDP和TCP的各種應(yīng)用層協(xié)議14應(yīng)用應(yīng)用層協(xié)議傳輸層協(xié)議流式多媒體通信專用協(xié)8.1.3端口的概念端口就是運(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)程。158.1.3端口的概念端口就是運(yùn)輸層服務(wù)訪問點(diǎn)TSAP。端口在進(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ā)送方接收方16端口在進(jìn)程之間的通信中所起的作用應(yīng)運(yùn)網(wǎng)TCP報(bào)文段UDP端口端口用一個(gè)16bit端口號(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)系的。17端口端口用一個(gè)16bit端口號(hào)進(jìn)行標(biāo)志。17兩類端口一類是熟知端口,其數(shù)值一般為0~1023。當(dāng)一種新的應(yīng)用程序出現(xiàn)時(shí),必須為它指派一個(gè)熟知端口。另一類則是一般端口,用來隨時(shí)分配給請(qǐng)求通信的客戶進(jìn)程。18兩類端口一類是熟知端口,其數(shù)值一般為0~1023。當(dāng)一種插口(socket)TCP使用“連接”(而不僅僅是“端口”)作為最基本的抽象,同時(shí)將TCP連接的端點(diǎn)稱為插口(socket),或套接字、套接口。插口和端口、IP地址的關(guān)系是:IP地址3端口號(hào)15003,1500插口(socket)19插口(socket)TCP使用“連接”(而不僅僅是“端口8.2用戶數(shù)據(jù)報(bào)協(xié)議UDP

8.2.1UDP概述

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)用是很重要的。

208.2用戶數(shù)據(jù)報(bào)協(xié)議UDP

8.2.1UDP概述端口是用報(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)輸層21端口是用報(bào)文隊(duì)列來實(shí)現(xiàn)UDP端口51000U8.2.2UDP用戶數(shù)據(jù)報(bào)的

首部格式偽首部源端口目的端口長(zhǎng)度檢驗(yàn)和數(shù)據(jù)首部UDP長(zhǎng)度源IP地址目的IP地址017IP數(shù)據(jù)報(bào)字節(jié)44112122222字節(jié)發(fā)送在前數(shù)據(jù)首部UDP用戶數(shù)據(jù)報(bào)228.2.2UDP用戶數(shù)據(jù)報(bào)的

首部格式偽首部源端口目偽首部源端口目的端口長(zhǎng)度檢驗(yàn)和數(shù)據(jù)首部UDP長(zhǎng)度源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é)。23偽首部源端口目的端口長(zhǎng)度檢驗(yàn)和數(shù)據(jù)首偽首部源端口目的端口長(zhǎng)度檢驗(yàn)和數(shù)據(jù)首部UDP長(zhǎng)度源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ī)H僅是為了計(jì)算檢驗(yàn)和。24偽首部源端口目的端口長(zhǎng)度檢驗(yàn)和數(shù)據(jù)首圖8.14計(jì)算UTP校驗(yàn)和的示例25圖8.14計(jì)算UTP校驗(yàn)和的示例258.3傳輸控制協(xié)議TCP

8.3.1TCP概述

端口…發(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)程268.3傳輸控制協(xié)議TCP

8.3.1TCP概TCP首部20字節(jié)的固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FIN32bitSYNRSTPSHACKURG比特08162431填充TCP數(shù)據(jù)部分TCP首部TCP報(bào)文段IP數(shù)據(jù)部分IP首部發(fā)送在前27TCP20字節(jié)的目的端口數(shù)據(jù)檢驗(yàn)和TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充源端口和目的端口字段——各占2字節(jié)。端口是運(yùn)輸層與應(yīng)用層的服務(wù)接口。運(yùn)輸層的復(fù)用和分用功能都要通過端口才能實(shí)現(xiàn)。28TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充序號(hào)字段——占4字節(jié)。TCP連接中傳送的數(shù)據(jù)流中的每一個(gè)字節(jié)都編上一個(gè)序號(hào)。序號(hào)字段的值則指的是本報(bào)文段所發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。29TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充確認(rèn)號(hào)字段——占4字節(jié),是期望收到對(duì)方的下一個(gè)報(bào)文段的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。30TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充數(shù)據(jù)偏移——占4bit,它指出TCP報(bào)文段的數(shù)據(jù)起始處距離TCP報(bào)文段的起始處有多遠(yuǎn)?!皵?shù)據(jù)偏移”的單位不是字節(jié)而是32bit字(4字節(jié)為計(jì)算單位)。31TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充保留字段——占6bit,保留為今后使用,但目前應(yīng)置為0。32TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充緊急比特URG——當(dāng)URG1時(shí),表明緊急指針字段有效。它告訴系統(tǒng)此報(bào)文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級(jí)的數(shù)據(jù))。33TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充確認(rèn)比特ACK——只有當(dāng)ACK1時(shí)確認(rèn)號(hào)字段才有效。當(dāng)ACK0時(shí),確認(rèn)號(hào)無效。34TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充推送比特PSH(PuSH)——接收TCP收到推送比特置1的報(bào)文段,就盡快地交付給接收應(yīng)用進(jìn)程,而不再等到整個(gè)緩存都填滿了后再向上交付。35TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充復(fù)位比特RST(ReSeT)——當(dāng)RST1時(shí),表明TCP連接中出現(xiàn)嚴(yán)重差錯(cuò)(如由于主機(jī)崩潰或其他原因),必須釋放連接,然后再重新建立運(yùn)輸連接。36TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充同步比特SYN——同步比特SYN置為1,就表示這是一個(gè)連接請(qǐng)求或連接接受報(bào)文。37TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充終止比特FIN(FINal)——用來釋放一個(gè)連接。當(dāng)FIN1時(shí),表明此報(bào)文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運(yùn)輸連接。38TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充窗口字段——占2字節(jié)。窗口字段用來控制對(duì)方發(fā)送的數(shù)據(jù)量,單位為字節(jié)。TCP連接的一端根據(jù)設(shè)置的緩存空間大小確定自己的接收窗口大小,然后通知對(duì)方以確定對(duì)方的發(fā)送窗口的上限。39TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充檢驗(yàn)和——占2字節(jié)。檢驗(yàn)和字段檢驗(yàn)的范圍包括首部和數(shù)據(jù)這兩部分。在計(jì)算檢驗(yàn)和時(shí),要在TCP報(bào)文段的前面加上12字節(jié)的偽首部。40TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充緊急指針字段——占16bit。緊急指針指出在本報(bào)文段中的緊急數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)。

41TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充選項(xiàng)字段——長(zhǎng)度可變。TCP只規(guī)定了一種選項(xiàng),即最大報(bào)文段長(zhǎng)度MSS(MaximumSegmentSize)。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)文段。42TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充填充字段——這是為了使整個(gè)首部長(zhǎng)度是4字節(jié)的整數(shù)倍。43TCP20目的端口數(shù)據(jù)檢驗(yàn)和選8.3.3TCP的數(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)。448.3.3TCP的數(shù)據(jù)編號(hào)與確認(rèn)TCP協(xié)議是面向字8.3.4TCP的流量控制

滑動(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ā)送窗口上限值(可增大或減小)。458.3.4TCP的流量控制

滑動(dòng)窗口的概念TCP采用收到確認(rèn)即可前移1002003004005006007008009001012013014015016017018011發(fā)送窗口可發(fā)送不可發(fā)送指針發(fā)送端要發(fā)送900字節(jié)長(zhǎng)的數(shù)據(jù),劃分為9個(gè)100字節(jié)長(zhǎng)的報(bào)文段,而發(fā)送窗口確定為500字節(jié)。發(fā)送端只要收到了對(duì)方的確認(rèn),發(fā)送窗口就可前移。發(fā)送TCP要維護(hù)一個(gè)指針。每發(fā)送一個(gè)報(bào)文段,指針就向前移動(dòng)一個(gè)報(bào)文段的距離。46收到確認(rèn)即可前移1002003004005006007008收到確認(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)47收到確認(rèn)即可前移10020030040050060070081002003004005006007008009001012013014015016017018011已發(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ù)。48100200300400500600700800900101利用可變窗口大小進(jìn)行流量控制

雙方確定的窗口值是400SEQ=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至700)不允許A再發(fā)送(到序號(hào)600的數(shù)據(jù)都已收到)SEQ=201丟失!49利用可變窗口大小進(jìn)行流量控制

雙方確定的窗口值是400STCP協(xié)議是面向字節(jié)的每個(gè)字節(jié)對(duì)應(yīng)于一個(gè)序號(hào)TCP報(bào)文段中序號(hào)數(shù)值表示該報(bào)文段中的數(shù)據(jù)部分的第一個(gè)字節(jié)的序號(hào)TCP的確認(rèn)是對(duì)接收到的數(shù)據(jù)的最高序號(hào)進(jìn)行確認(rèn)。確認(rèn)號(hào)表示接收端期望下次收到的數(shù)據(jù)中的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)TCP提供全雙工通信,確認(rèn)信息可以在數(shù)據(jù)中稍帶傳送,提高傳輸效率TCP的數(shù)據(jù)編號(hào)與確認(rèn)50TCP協(xié)議是面向字節(jié)的TCP的數(shù)據(jù)編號(hào)與確認(rèn)50TCP的數(shù)據(jù)編號(hào)與確認(rèn)我剛發(fā)送了10號(hào)數(shù)據(jù)源端口目的端口…序號(hào)確認(rèn)號(hào)102823源端口目的端口.10序號(hào).0確認(rèn)號(hào).…TCP的數(shù)據(jù)編號(hào)與確認(rèn)我剛發(fā)送了源端口目的端口…序號(hào)確認(rèn)號(hào)1我剛發(fā)送了10號(hào)數(shù)據(jù)收到10號(hào)數(shù)據(jù),現(xiàn)需11號(hào)數(shù)據(jù).源端口目的端口…序號(hào)確認(rèn)號(hào)102823源端口目的端口10序號(hào).1確認(rèn)號(hào).…102823源端口目的端口.11序號(hào).1確認(rèn)號(hào).…TCP的數(shù)據(jù)編號(hào)與確認(rèn)我剛發(fā)送了收到10號(hào)數(shù)據(jù),源端口目的端口…序號(hào)確認(rèn)號(hào)1028我剛發(fā)送了10號(hào)數(shù)據(jù)收到10號(hào)數(shù)據(jù),現(xiàn)需11號(hào)數(shù)據(jù).源端口目的端口…序號(hào)確認(rèn)號(hào)102823源端口目的端口10序號(hào).1確認(rèn)號(hào).…102823源端口目的端口.11序號(hào).1確認(rèn)號(hào).…TCP的數(shù)據(jù)編號(hào)與確認(rèn)我剛發(fā)送了收到10號(hào)數(shù)據(jù),源端口目的端口…序號(hào)確認(rèn)號(hào)10288.3.5TCP的擁塞控制548.3.5TCP的擁塞控制548.3.7TCP的運(yùn)輸連接管理

運(yùn)輸連接的三個(gè)階段

運(yùn)輸連接就有三個(gè)階段,即:連接建立、數(shù)據(jù)傳送和連接釋放。運(yùn)輸連接的管理就是使運(yùn)輸連接的建立和釋放都能正常地進(jìn)行。連接建立過程中要解決以下三個(gè)問題:要使每一方能夠確知對(duì)方的存在。要允許雙方協(xié)商一些參數(shù)(如最大報(bào)文段長(zhǎng)度,最大窗口大小,服務(wù)質(zhì)量等)。能夠?qū)\(yùn)輸實(shí)體資源(如緩存大小,連接表中的項(xiàng)目等)進(jìn)行分配。558.3.7TCP的運(yùn)輸連接管理

運(yùn)輸連接的三個(gè)階段TCP是面向連接的協(xié)議,可以在各種網(wǎng)絡(luò)之間建立全雙工的虛電路連接,實(shí)現(xiàn)無亂序、無丟失和無重復(fù)的數(shù)據(jù)傳輸,它采取了三次握手、兩次確認(rèn)的有效技術(shù),做到了非常可靠。56TCP是面向連接的協(xié)議,可以在各種網(wǎng)絡(luò)之間建立全雙工的虛電路客戶服務(wù)器方式TCP的連接和建立都是采用客戶服務(wù)器方式。主動(dòng)發(fā)起連接建立的應(yīng)用進(jìn)程叫做客戶(client)。被動(dòng)等待連接建立的應(yīng)用進(jìn)程叫做服務(wù)器(server)。57客戶服務(wù)器方式TCP的連接和建立都是采用客戶服務(wù)器方式。用三次握手建立TCP連接SYN,SEQ=x主機(jī)BSYN,ACK,SEQ=y,ACK=x1ACK,SEQ=x+1,ACK=y1被動(dòng)打開主動(dòng)打開確認(rèn)確認(rèn)主機(jī)A連接請(qǐng)求58用三次握手建立TCP連接SYN,SEQ=x主機(jī)建立TCP連接A的TCP向B發(fā)出連接請(qǐng)求報(bào)文段,其首部中的同步比特SYN應(yīng)置為1,并選擇序號(hào)x,表明傳送數(shù)據(jù)時(shí)的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)是x。B的TCP收到連接請(qǐng)求報(bào)文段后,如同意,則發(fā)回確認(rèn)。B在確認(rèn)報(bào)文段中應(yīng)將SYN置為1,其確認(rèn)號(hào)應(yīng)為x1,同時(shí)也為自己選擇序號(hào)y。A收到此報(bào)文段后,向B給出確認(rèn),其確認(rèn)號(hào)應(yīng)為y1。A的TCP通知上層應(yīng)用進(jìn)程,連接已經(jīng)建立。當(dāng)運(yùn)行服務(wù)器進(jìn)程的主機(jī)B的TCP收到主機(jī)A的確認(rèn)后,也通知其上層應(yīng)用進(jìn)程,連接已經(jīng)建立。59建立TCP連接A的TCP向B發(fā)出連接請(qǐng)求報(bào)文段TCP連接釋放的過程FIN,SEQ=xACK,SEQ=y,ACK=x1ACK,SEQ=x+1,ACK=y1應(yīng)用進(jìn)程釋放連接A不再發(fā)送報(bào)文FIN,ACK,SEQ=y,ACK=x+1主機(jī)B主機(jī)A通知主機(jī)應(yīng)用進(jìn)程①應(yīng)用進(jìn)程釋放連接B不再發(fā)送報(bào)文②確認(rèn)確認(rèn)從A到B的連接就釋放了,連接處于半關(guān)閉狀態(tài)。相當(dāng)于A向B說:“我已經(jīng)沒有數(shù)據(jù)要發(fā)送了。但你如果還發(fā)送數(shù)據(jù),我仍接收?!敝链耍麄€(gè)連接已經(jīng)全部釋放。60TCP連接釋放的過程FIN,SEQ=xACK,STCP的正常的連接建立和關(guān)閉SYN,SEQ=x客戶進(jìn)程服務(wù)器進(jìn)程LISTEN(被動(dòng)打開)(主動(dòng)打開)SYN_SENTSYN_RCVDESTABLISHEDESTABLISHED(主動(dòng)關(guān)閉)FIN_WAIT_1CLOSE_WAIT(被動(dòng)關(guān)閉)FIN_WAIT_2LAST_ACKTIME_WAITCLOSED(全雙工數(shù)據(jù)傳送階段)SYN,ACK,SEQ=y,ACK=x+1ACK,SEQ=x+1,ACK=y+1FIN,SEQ=uACK,SEQ=v,ACK=u+1FIN,ACK,SEQ=v,ACK=u+1ACK,SEQ=u+1,ACK=v+1TIME_WAITCLOSE_WAITSYN_RCVDESTABLISHED61TCP的正常的連接建立和關(guān)閉SYN,SEQ=x客戶TCP的運(yùn)輸連接管理建立連接服務(wù)器:LISTEN,ACCEPT客戶機(jī):CONNECT三次握手(three-wayhandshake)數(shù)據(jù)傳送釋放連接CLOSE62TCP的運(yùn)輸連接管理建立連接62發(fā)送SYN(seq=100ctl=SYN)主機(jī)A主機(jī)B1TCP三次握手/建立連接SYN收到(seq=100)發(fā)送SYN主機(jī)A主機(jī)B1TCP三次握手/建立連接SYN發(fā)送SYN(seq=100ctl=SYN)SYN收到(seq=100)發(fā)送SYN(seq=300ack=101ctl=syn,ack)主機(jī)A主機(jī)B12SYN收到(seq=300ack=101)TCP三次握手/建立連接發(fā)送SYNSYN收到(seq=100)發(fā)送SYN發(fā)送SYN(seq=100ctl=SYN)SYN收到(seq=100)發(fā)送SYN(seq=300ack=101ctl=syn,ack)發(fā)送ack(ack=301ctl=ack)主機(jī)A主機(jī)B123SYN收到(seq=300ack=101)TCP三次握手/建立連接發(fā)送SYNSYN收到(seq=100)發(fā)送SY發(fā)送SYN(seq=100ctl=SYN)SYN收到(seq=100)發(fā)送SYN(seq=300ack=101ctl=syn,ack)發(fā)送ack(ack=301ctl=ack)主機(jī)A主機(jī)B連接建立起來

(seq=101ctl=Data)123SYN收到(seq=300ack=101)SYN收到(ack=301)TCP三次握手/建立連接發(fā)送SYNSYN收到(seq=100)發(fā)送SY最新《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層課件《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層8.1運(yùn)輸層協(xié)議概述從通信和信息處理的角度看,運(yùn)輸層向它上面的應(yīng)用層提供通信服務(wù),它屬于面向通信部分的最高層,同時(shí)也是用戶功能中的最低層。物理層網(wǎng)絡(luò)層運(yùn)輸層應(yīng)用層數(shù)據(jù)鏈路層面向信息處理面向通信用戶功能網(wǎng)絡(luò)功能698.1運(yùn)輸層協(xié)議概述從通信和信息處理的角度看,運(yùn)輸層最新《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層課件最新《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層課件最新《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層課件最新《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層課件最新《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層課件最新《計(jì)算機(jī)網(wǎng)絡(luò)教學(xué)資料》第8章傳輸層課件兩個(gè)對(duì)等運(yùn)輸實(shí)體在通信時(shí)傳送的數(shù)據(jù)單位叫作運(yùn)輸協(xié)議數(shù)據(jù)單元TPDU(TransportProtocolDataUnit)。TCP傳送的數(shù)據(jù)單位協(xié)議是TCP報(bào)文段(segment)UDP傳送的數(shù)據(jù)單位協(xié)議是UDP報(bào)文或用戶數(shù)據(jù)報(bào)。TCP與UDP76兩個(gè)對(duì)等運(yùn)輸實(shí)體在通信時(shí)傳送的數(shù)據(jù)單位叫作運(yùn)輸協(xié)議數(shù)據(jù)單元TCP/IP體系中的運(yùn)輸層協(xié)議TCPUDPIP應(yīng)用層與各種網(wǎng)絡(luò)接口運(yùn)輸層77TCP/IP體系中的運(yùn)輸層協(xié)議TCPUDPIP應(yīng)用層與各TCP與UDPUDP在傳送數(shù)據(jù)之前不需要先建立連接。對(duì)方的運(yùn)輸層在收到UDP報(bào)文后,不需要給出任何確認(rèn)。雖然UDP不提供可靠交付,但在某些情況下UDP是一種最有效的工作方式。TCP則提供面向連接的服務(wù)。TCP不提供廣播或多播服務(wù)。由于TCP要提供可靠的、面向連接的運(yùn)輸服務(wù),因此不可避免地增加了許多的開銷。這不僅使協(xié)議數(shù)據(jù)單元的首部增大很多,還要占用許多的處理機(jī)資源。78TCP與UDPUDP在傳送數(shù)據(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連接。79還要強(qiáng)調(diào)兩點(diǎn)運(yùn)輸層的UDP用戶數(shù)據(jù)報(bào)與網(wǎng)際層的IP數(shù)據(jù)表8.2 使用UDP和TCP的各種應(yīng)用層協(xié)議應(yīng)用應(yīng)用層協(xié)議傳輸層協(xié)議名字轉(zhuǎn)換DNSUDP文件傳送TFTPUDP路由選擇協(xié)議RIPUDPIP地址配置BOOTP.DHCPUDP網(wǎng)絡(luò)管理SNMPUDP遠(yuǎn)程文件服務(wù)器NFSUDPIP電話專用協(xié)議UDP80表8.2 使用UDP和TCP的各種應(yīng)用層協(xié)議應(yīng)用應(yīng)應(yīng)用應(yīng)用層協(xié)議傳輸層協(xié)議流式多媒體通信專用協(xié)議UDP多播IGMPUDP電子郵件SMTPTCP遠(yuǎn)程終端接入TELNETTCP萬維網(wǎng)HTTPTCP文件傳送FTPTCP表8.2(續(xù)) 使用UDP和TCP的各種應(yīng)用層協(xié)議81應(yīng)用應(yīng)用層協(xié)議傳輸層協(xié)議流式多媒體通信專用協(xié)8.1.3端口的概念端口就是運(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)程。828.1.3端口的概念端口就是運(yùn)輸層服務(wù)訪問點(diǎn)TSAP。端口在進(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ā)送方接收方83端口在進(jìn)程之間的通信中所起的作用應(yīng)運(yùn)網(wǎng)TCP報(bào)文段UDP端口端口用一個(gè)16bit端口號(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)系的。84端口端口用一個(gè)16bit端口號(hào)進(jìn)行標(biāo)志。17兩類端口一類是熟知端口,其數(shù)值一般為0~1023。當(dāng)一種新的應(yīng)用程序出現(xiàn)時(shí),必須為它指派一個(gè)熟知端口。另一類則是一般端口,用來隨時(shí)分配給請(qǐng)求通信的客戶進(jìn)程。85兩類端口一類是熟知端口,其數(shù)值一般為0~1023。當(dāng)一種插口(socket)TCP使用“連接”(而不僅僅是“端口”)作為最基本的抽象,同時(shí)將TCP連接的端點(diǎn)稱為插口(socket),或套接字、套接口。插口和端口、IP地址的關(guān)系是:IP地址3端口號(hào)15003,1500插口(socket)86插口(socket)TCP使用“連接”(而不僅僅是“端口8.2用戶數(shù)據(jù)報(bào)協(xié)議UDP

8.2.1UDP概述

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)用是很重要的。

878.2用戶數(shù)據(jù)報(bào)協(xié)議UDP

8.2.1UDP概述端口是用報(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)輸層88端口是用報(bào)文隊(duì)列來實(shí)現(xiàn)UDP端口51000U8.2.2UDP用戶數(shù)據(jù)報(bào)的

首部格式偽首部源端口目的端口長(zhǎng)度檢驗(yàn)和數(shù)據(jù)首部UDP長(zhǎng)度源IP地址目的IP地址017IP數(shù)據(jù)報(bào)字節(jié)44112122222字節(jié)發(fā)送在前數(shù)據(jù)首部UDP用戶數(shù)據(jù)報(bào)898.2.2UDP用戶數(shù)據(jù)報(bào)的

首部格式偽首部源端口目偽首部源端口目的端口長(zhǎng)度檢驗(yàn)和數(shù)據(jù)首部UDP長(zhǎng)度源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é)。90偽首部源端口目的端口長(zhǎng)度檢驗(yàn)和數(shù)據(jù)首偽首部源端口目的端口長(zhǎng)度檢驗(yàn)和數(shù)據(jù)首部UDP長(zhǎng)度源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ī)H僅是為了計(jì)算檢驗(yàn)和。91偽首部源端口目的端口長(zhǎng)度檢驗(yàn)和數(shù)據(jù)首圖8.14計(jì)算UTP校驗(yàn)和的示例92圖8.14計(jì)算UTP校驗(yàn)和的示例258.3傳輸控制協(xié)議TCP

8.3.1TCP概述

端口…發(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)程938.3傳輸控制協(xié)議TCP

8.3.1TCP概TCP首部20字節(jié)的固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FIN32bitSYNRSTPSHACKURG比特08162431填充TCP數(shù)據(jù)部分TCP首部TCP報(bào)文段IP數(shù)據(jù)部分IP首部發(fā)送在前94TCP20字節(jié)的目的端口數(shù)據(jù)檢驗(yàn)和TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充源端口和目的端口字段——各占2字節(jié)。端口是運(yùn)輸層與應(yīng)用層的服務(wù)接口。運(yùn)輸層的復(fù)用和分用功能都要通過端口才能實(shí)現(xiàn)。95TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充序號(hào)字段——占4字節(jié)。TCP連接中傳送的數(shù)據(jù)流中的每一個(gè)字節(jié)都編上一個(gè)序號(hào)。序號(hào)字段的值則指的是本報(bào)文段所發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。96TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充確認(rèn)號(hào)字段——占4字節(jié),是期望收到對(duì)方的下一個(gè)報(bào)文段的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。97TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充數(shù)據(jù)偏移——占4bit,它指出TCP報(bào)文段的數(shù)據(jù)起始處距離TCP報(bào)文段的起始處有多遠(yuǎn)?!皵?shù)據(jù)偏移”的單位不是字節(jié)而是32bit字(4字節(jié)為計(jì)算單位)。98TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充保留字段——占6bit,保留為今后使用,但目前應(yīng)置為0。99TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充緊急比特URG——當(dāng)URG1時(shí),表明緊急指針字段有效。它告訴系統(tǒng)此報(bào)文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級(jí)的數(shù)據(jù))。100TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充確認(rèn)比特ACK——只有當(dāng)ACK1時(shí)確認(rèn)號(hào)字段才有效。當(dāng)ACK0時(shí),確認(rèn)號(hào)無效。101TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充推送比特PSH(PuSH)——接收TCP收到推送比特置1的報(bào)文段,就盡快地交付給接收應(yīng)用進(jìn)程,而不再等到整個(gè)緩存都填滿了后再向上交付。102TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充復(fù)位比特RST(ReSeT)——當(dāng)RST1時(shí),表明TCP連接中出現(xiàn)嚴(yán)重差錯(cuò)(如由于主機(jī)崩潰或其他原因),必須釋放連接,然后再重新建立運(yùn)輸連接。103TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充同步比特SYN——同步比特SYN置為1,就表示這是一個(gè)連接請(qǐng)求或連接接受報(bào)文。104TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充終止比特FIN(FINal)——用來釋放一個(gè)連接。當(dāng)FIN1時(shí),表明此報(bào)文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運(yùn)輸連接。105TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充窗口字段——占2字節(jié)。窗口字段用來控制對(duì)方發(fā)送的數(shù)據(jù)量,單位為字節(jié)。TCP連接的一端根據(jù)設(shè)置的緩存空間大小確定自己的接收窗口大小,然后通知對(duì)方以確定對(duì)方的發(fā)送窗口的上限。106TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充檢驗(yàn)和——占2字節(jié)。檢驗(yàn)和字段檢驗(yàn)的范圍包括首部和數(shù)據(jù)這兩部分。在計(jì)算檢驗(yàn)和時(shí),要在TCP報(bào)文段的前面加上12字節(jié)的偽首部。107TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充緊急指針字段——占16bit。緊急指針指出在本報(bào)文段中的緊急數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)。

108TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充選項(xiàng)字段——長(zhǎng)度可變。TCP只規(guī)定了一種選項(xiàng),即最大報(bào)文段長(zhǎng)度MSS(MaximumSegmentSize)。MSS告訴對(duì)方TCP:“我的緩存所能接收的報(bào)文段的數(shù)據(jù)字段的最大長(zhǎng)度是MSS個(gè)字節(jié)?!盡SS是TCP報(bào)文段中的數(shù)據(jù)字段的最大長(zhǎng)度。數(shù)據(jù)字段加上TCP首部才等于整個(gè)的TCP報(bào)文段。109TCP20目的端口數(shù)據(jù)檢驗(yàn)和選TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充填充字段——這是為了使整個(gè)首部長(zhǎng)度是4字節(jié)的整數(shù)倍。110TCP20目的端口數(shù)據(jù)檢驗(yàn)和選8.3.3TCP的數(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)。1118.3.3TCP的數(shù)據(jù)編號(hào)與確認(rèn)TCP協(xié)議是面向字8.3.4TCP的流量控制

滑動(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ā)送窗口上限值(可增大或減小)。1128.3.4TCP的流量控制

滑動(dòng)窗口的概念TCP采用收到確認(rèn)即可前移1002003004005006007008009001012013014015016017018011發(fā)送窗口可發(fā)送不可發(fā)送指針發(fā)送端要發(fā)送900字節(jié)長(zhǎng)的數(shù)據(jù),劃分為9個(gè)100字節(jié)長(zhǎng)的報(bào)文段,而發(fā)送窗口確定為500字節(jié)。發(fā)送端只要收到了對(duì)方的確認(rèn),發(fā)送窗口就可前移。發(fā)送TCP要維護(hù)一個(gè)指針。每發(fā)送一個(gè)報(bào)文段,指針就向前移動(dòng)一個(gè)報(bào)文段的距離。113收到確認(rèn)即可前移1002003004005006007008收到確認(rèn)即可前移1002003004005006007008009001012013014015016017018011可發(fā)送不可發(fā)送指針1002003004005006007008009001012013014015016017018011發(fā)送窗口可發(fā)送不可發(fā)送指針發(fā)送窗口前移發(fā)送端已發(fā)送了400字節(jié)的數(shù)據(jù),但只收到對(duì)前200字節(jié)數(shù)據(jù)的確認(rèn),同時(shí)窗口大小不變。現(xiàn)在發(fā)送端還可發(fā)送300字節(jié)。已發(fā)送并被確認(rèn)已發(fā)送但未被確認(rèn)114收到確認(rèn)即可前移10020030040050060070081002003004005006007008009001012013014015016017018011已發(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é)?,F(xiàn)在發(fā)送端最多還可發(fā)送400字節(jié)的數(shù)據(jù)。115100200300400500600700800900101利用可變窗口大小進(jìn)行流量控制

雙方確定的窗口值是400SEQ=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至700)不允許A再發(fā)送(到序號(hào)600的數(shù)據(jù)都已收到)SEQ=201丟失!116利用可變窗口大小進(jìn)行流量控制

雙方確定的窗口值是400STCP協(xié)議是面向字節(jié)的每個(gè)字節(jié)對(duì)應(yīng)于一個(gè)序號(hào)TCP報(bào)文段中序號(hào)數(shù)值表示該報(bào)文段中的數(shù)據(jù)部分的第一個(gè)字節(jié)的序號(hào)TCP的確認(rèn)是對(duì)接收到的數(shù)據(jù)的最高序號(hào)進(jìn)行確認(rèn)。確認(rèn)號(hào)表示接收端期望下次收到的數(shù)據(jù)中的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)TCP提供全雙工通信,確認(rèn)信息可以在數(shù)據(jù)中稍帶傳送,提高傳輸效率TCP的數(shù)據(jù)編號(hào)與確認(rèn)117TCP協(xié)議是面向字節(jié)的TCP的數(shù)據(jù)編號(hào)與確認(rèn)50TCP的數(shù)據(jù)編號(hào)與確認(rèn)我剛發(fā)送了10號(hào)數(shù)據(jù)源

溫馨提示

  • 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. 人人文庫(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)論