計(jì)算機(jī)網(wǎng)絡(luò):第七章 運(yùn)輸層_第1頁
計(jì)算機(jī)網(wǎng)絡(luò):第七章 運(yùn)輸層_第2頁
計(jì)算機(jī)網(wǎng)絡(luò):第七章 運(yùn)輸層_第3頁
計(jì)算機(jī)網(wǎng)絡(luò):第七章 運(yùn)輸層_第4頁
計(jì)算機(jī)網(wǎng)絡(luò):第七章 運(yùn)輸層_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Contents:

7.1運(yùn)輸層協(xié)議概述

7.2TCP/IP體系中的運(yùn)輸層

7.3

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

UDP7.4

傳輸控制協(xié)議TCP第七章運(yùn)輸層7.1

運(yùn)輸層協(xié)議概述一、運(yùn)輸層的地位從通信和信息處理的角度看,運(yùn)輸層向它上面的應(yīng)用層提供通信服務(wù),它屬于面向通信部分的最高層,同時(shí)也是用戶功能中的最低層。運(yùn)輸層只存在于通信子網(wǎng)以外的主機(jī)中,在通信子網(wǎng)中沒有運(yùn)輸層。面向信息處理面向通信用戶功能網(wǎng)絡(luò)功能物理層網(wǎng)絡(luò)層運(yùn)輸層應(yīng)用層數(shù)據(jù)鏈路層二、運(yùn)輸層的作用運(yùn)輸層監(jiān)督數(shù)據(jù)從一個(gè)設(shè)備應(yīng)用程序傳輸?shù)搅硪辉O(shè)備應(yīng)用程序。運(yùn)輸層擔(dān)當(dāng)上層協(xié)議(會話\表示\應(yīng)用層)和下層協(xié)議中所提供服務(wù)之間聯(lián)絡(luò)工作。運(yùn)輸層向高層用戶屏蔽下面通信子網(wǎng)細(xì)節(jié),保證數(shù)據(jù)可靠地端到端的傳輸。兩個(gè)主機(jī)進(jìn)行通信實(shí)際上就是兩個(gè)主機(jī)中的應(yīng)用進(jìn)程互相通信。通信的兩個(gè)端點(diǎn)是源主機(jī)和目的主機(jī)中的應(yīng)用進(jìn)程,應(yīng)用進(jìn)程之間的通信又稱為端到端的通信。IP協(xié)議雖然能把分組送到目的主機(jī),但是此分組還停留在主機(jī)網(wǎng)絡(luò)層而沒有交付給主機(jī)中應(yīng)用進(jìn)程。在一個(gè)主機(jī)中經(jīng)常有多個(gè)應(yīng)用進(jìn)程同時(shí)分別和另一個(gè)主機(jī)中的多個(gè)應(yīng)用進(jìn)程進(jìn)行通信。“運(yùn)輸層提供應(yīng)用進(jìn)程間的邏輯通信”?!斑壿嬐ㄐ拧钡囊馑际牵哼\(yùn)輸層之間的通信好像是沿水平方向傳送數(shù)據(jù)。但事實(shí)上這兩個(gè)運(yùn)輸層之間并沒有一條水平方向的物理連接。運(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層LAN1AP1AP2AP4端口端口54321IP協(xié)議的作用范圍運(yùn)輸層協(xié)議TCP和UDP的作用范圍AP3三、運(yùn)輸層與網(wǎng)絡(luò)層的比較運(yùn)輸層為應(yīng)用進(jìn)程之間提供邏輯通信,但網(wǎng)絡(luò)層是為主機(jī)之間提供邏輯通信。

應(yīng)用進(jìn)程…

應(yīng)用進(jìn)程…

IP協(xié)議的作用范圍(提供主機(jī)之間的邏輯通信)TCP和UDP協(xié)議的作用范圍(提供進(jìn)程之間的邏輯通信)因特網(wǎng)運(yùn)輸層協(xié)議和網(wǎng)絡(luò)層協(xié)議的主要區(qū)別運(yùn)輸層對收到的報(bào)文進(jìn)行差錯(cuò)檢測。而在網(wǎng)絡(luò)層,IP數(shù)據(jù)報(bào)首部中的校驗(yàn)和字段,只校驗(yàn)首部是否出現(xiàn)差錯(cuò)而不檢查數(shù)據(jù)部分。

運(yùn)輸層根據(jù)應(yīng)用不同需要兩種不同傳輸層協(xié)議:TCP和UDP,而網(wǎng)絡(luò)層無法同時(shí)實(shí)現(xiàn)這兩種協(xié)議。四、運(yùn)輸層與數(shù)據(jù)鏈路層的比較傳輸層與數(shù)據(jù)鏈路層提供服務(wù)區(qū)別:數(shù)據(jù)鏈路層功能應(yīng)用于單個(gè)網(wǎng)絡(luò),而傳輸層功能應(yīng)用跨越許多網(wǎng)絡(luò)的互連網(wǎng)上。數(shù)據(jù)鏈路層只控制物理層,而傳輸層控制下三層。差錯(cuò)控制的機(jī)制是基于差錯(cuò)檢測和重傳的。數(shù)據(jù)鏈路層功能只做每條鏈路節(jié)點(diǎn)和節(jié)點(diǎn)之間的差錯(cuò)控制。傳輸層必須自己進(jìn)行端到端的差錯(cuò)檢測。五、運(yùn)輸層與其上下層之間的關(guān)系運(yùn)輸層向應(yīng)用層提供運(yùn)輸服務(wù)的是運(yùn)輸實(shí)體。使用運(yùn)輸服務(wù)的是運(yùn)輸服務(wù)用戶(也就是應(yīng)用層中的各種應(yīng)用進(jìn)程,或應(yīng)用層實(shí)體,而不是使用計(jì)算機(jī)的最終用戶)。運(yùn)輸層中兩個(gè)對等運(yùn)輸實(shí)體之間通信遵循運(yùn)輸協(xié)議。運(yùn)輸協(xié)議保證了運(yùn)輸層能夠向應(yīng)用層提供運(yùn)輸服務(wù)。

運(yùn)輸層提供的運(yùn)輸服務(wù)也使用了下面網(wǎng)絡(luò)層向上提供的網(wǎng)絡(luò)服務(wù)。

TSAP和NSAP分別為運(yùn)輸層服務(wù)訪問點(diǎn)和網(wǎng)絡(luò)層服務(wù)訪問點(diǎn),都是層與層之間交換信息的抽象接口。運(yùn)輸層向高層用戶屏蔽了下面通信子網(wǎng)的細(xì)節(jié),它使應(yīng)用進(jìn)程看見的就是好像在兩個(gè)運(yùn)輸層實(shí)體之間有一條端到端的邏輯通信信道。當(dāng)運(yùn)輸層采用面向連接的TCP協(xié)議時(shí),這種邏輯通信信道就相當(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)程數(shù)據(jù)傳輸無差錯(cuò),按序,無丟失,無重復(fù)不保證交付,接收時(shí)可能不按序或出現(xiàn)丟失和重復(fù)7.2

TCP/IP體系中的運(yùn)輸層一、運(yùn)輸層中的兩個(gè)協(xié)議TCP/IP的運(yùn)輸層有兩個(gè)不同的協(xié)議:UDP和TCP在TCP/IP體系中,根據(jù)所使用的協(xié)議是TCP或UDP,兩個(gè)對等運(yùn)輸實(shí)體在通信時(shí)傳送的數(shù)據(jù)單位分別稱為TCP報(bào)文段或UDP報(bào)文段或用戶數(shù)據(jù)報(bào)。TCPUDPIP應(yīng)用層與各種網(wǎng)絡(luò)接口TCP/IP體系中的運(yùn)輸層協(xié)議

協(xié)議說明:

UDP和TCP都使用IP協(xié)議。也就是說,這兩個(gè)協(xié)議在發(fā)送數(shù)據(jù)時(shí),其協(xié)議數(shù)據(jù)單元PDU都作為下面IP數(shù)據(jù)報(bào)中的數(shù)據(jù)。在接收數(shù)據(jù)時(shí),IP數(shù)據(jù)報(bào)將IP首部去掉后,根據(jù)上層使用的是什么運(yùn)輸協(xié)議,把數(shù)據(jù)部分交給上層的UDP或TCP。

UDP提供面向無連接的服務(wù)。在傳送數(shù)據(jù)之前不需要先建立連接。對方的運(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)過互連網(wǎng)中許多路由器的存儲轉(zhuǎn)發(fā),但UDP用戶數(shù)據(jù)報(bào)是在運(yùn)輸層的端到端抽象的邏輯信道中傳送的。

TCP報(bào)文段是在運(yùn)輸層抽象的端到端邏輯信道中傳送,這種信道是可靠的全雙工信道。但這樣的信道卻不知道究竟經(jīng)過了哪些路由器,而這些路由器也根本不知道上面的運(yùn)輸層是否建立了TCP連接。二、端口的概念

UDP和TCP都使用了與應(yīng)用層接口處的端口(port)與上層的應(yīng)用進(jìn)程進(jìn)行通信。應(yīng)用層的各種進(jìn)程是通過相應(yīng)端口與運(yùn)輸實(shí)體進(jìn)行交互。因此在運(yùn)輸協(xié)議數(shù)據(jù)單元(TCP報(bào)文段或UDP用戶數(shù)據(jù)報(bào))的首部中都要寫入源端口號和目的端口號。

端口就是運(yùn)輸層服務(wù)訪問點(diǎn)TSAP。端口的作用就是讓應(yīng)用層的各種進(jìn)程都能將其數(shù)據(jù)通過相應(yīng)端口向下交付給運(yùn)輸層,以及讓運(yùn)輸層知道應(yīng)當(dāng)將其報(bào)文段中數(shù)據(jù)向上通過端口交付給應(yīng)用層的相應(yīng)進(jìn)程。若沒有端口,運(yùn)輸層就無法知道數(shù)據(jù)應(yīng)當(dāng)交付給應(yīng)用層的哪一個(gè)進(jìn)程。

從這個(gè)意義上說,端口是用來標(biāo)志應(yīng)用層的進(jìn)程。在運(yùn)輸層與網(wǎng)絡(luò)層的交互中已看不見各種應(yīng)用進(jìn)程,而看見的只有TCP報(bào)文段或UDP用戶數(shù)據(jù)報(bào)端口在進(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ā)送方接收方1、端口定義與熟知端口端口定義:是在運(yùn)輸層與應(yīng)用層的接口上所設(shè)置,是用一個(gè)16bit的端口號來標(biāo)識。端口號只具有本地意義。即端口號只是為了標(biāo)志本計(jì)算機(jī)應(yīng)用層中的各進(jìn)程。端口分類:一類是熟知端口,是專門分配給一些最常用的應(yīng)用層程序,數(shù)值為0~1023?!笆熘北硎具@些端口號是TCP/IP體系確定公布的,所有用戶進(jìn)程都知道。在應(yīng)用層中的各種不同服務(wù)器進(jìn)程不斷檢測分配給它們的熟知端口,以便發(fā)現(xiàn)是否有某個(gè)客戶進(jìn)程要和它通信。另一類則是一般端口,用來隨時(shí)分配給請求通信的客戶進(jìn)程。注意:端口號只具有本地意義,只是為了標(biāo)志本計(jì)算機(jī)應(yīng)用層中的各進(jìn)程。一般可允許有64K(216)個(gè)端口號。在因特網(wǎng)不同計(jì)算機(jī)中相同的端口號沒有聯(lián)系。協(xié)議端口號關(guān)鍵字描述UDP42NAMESERVER主機(jī)名字服務(wù)器UDP53DOMAIN域名服務(wù)器UDP67BOOTPClient客戶端啟動(dòng)協(xié)議服務(wù)UDP68BOOTPServer服務(wù)器端啟動(dòng)協(xié)議服務(wù)UDP69TFTP簡單文件傳輸協(xié)議UDP111RPC微系統(tǒng)公司RPCTCP20FTPData文件傳輸服務(wù)器(數(shù)據(jù)連接)TCP21FTPControl文件傳輸服務(wù)器(控制連接)TCP23Telnet遠(yuǎn)程終端服務(wù)器TCP25SMTP簡單郵件傳輸協(xié)議TCP80HTTP超文本傳輸協(xié)議與主機(jī)C的SMTP建立三個(gè)連接

SMTP使用面向連接的TCP。為了找到目的主機(jī)C中的SMTP,使用目的主機(jī)端口,號碼為25。源主機(jī)也要為自己的每個(gè)進(jìn)程獨(dú)立分配端口號碼。為了在通信時(shí)不致發(fā)生混亂,必須把端口號碼和IP地址結(jié)合在一起使用。插口(socket),又稱為套接字,包括IP地址(32bit)和端口號碼(16bit),共48bit。一個(gè)TCP連接是由兩個(gè)插口來標(biāo)識的。

在整個(gè)internet中,在傳輸層通信的一對插口必須是唯一的。一個(gè)TCP連接由它的兩個(gè)端點(diǎn)來標(biāo)志,而每一個(gè)端點(diǎn)又是由IP地址和端口號決定的。因此,TCP使用“連接”(而不僅僅是“端口”)作為最基本的抽象,同時(shí)將TCP連接的端點(diǎn)稱為插口(socket),或套接字、套接口。插口和端口、IP地址的關(guān)系是:IP地址3端口號1500

3,1500插口(socket)7.3

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

UDP只在IP數(shù)據(jù)報(bào)服務(wù)之上增加了一些功能,即端口功能和差錯(cuò)檢測功能。

UDP雖提供不可靠服務(wù),但有其特殊優(yōu)點(diǎn):發(fā)送數(shù)據(jù)之間不建立連接,減少開銷和發(fā)送數(shù)據(jù)之前的時(shí)延。UDP不使用擁塞控制,不保證可靠交付,因此主機(jī)不需維持具有許多參數(shù)的、復(fù)雜的連接狀態(tài)表。由于UDP沒有擁塞控制,因此網(wǎng)絡(luò)出現(xiàn)的擁塞不會使源主機(jī)發(fā)送速率降低。這對某些實(shí)時(shí)應(yīng)用很重要。如IP電話,實(shí)時(shí)視頻會議等。UDP只有8字節(jié)首部開銷,比TCP20字節(jié)首部少。注意:在傳輸層上使用TCP或UDP時(shí),通信時(shí)的服務(wù)器端和客戶端所使用的端口號是不一樣的。在服務(wù)器端,服務(wù)器進(jìn)程一直運(yùn)行著,等待客戶進(jìn)程的服務(wù)請求。服務(wù)器的端口使用熟知端口號。在客戶端,當(dāng)進(jìn)程啟動(dòng)時(shí),就請求一個(gè)臨時(shí)端口號。如:簡單文件傳送協(xié)議TFTP。其服務(wù)器端的熟知端口號是69,客戶端可分配一個(gè)臨時(shí)端口號51000,而這個(gè)臨時(shí)端口號不是唯一的。

UDP與應(yīng)用層之間的端口都是用報(bào)文隊(duì)列來實(shí)現(xiàn).

在服務(wù)器端,服務(wù)器進(jìn)程一直在運(yùn)行著,等待客戶進(jìn)程的服務(wù)請求,因此,服務(wù)器端口必須使用熟知端口號。

在客戶端,當(dāng)進(jìn)程啟動(dòng)時(shí),就向操作系統(tǒng)請求一個(gè)臨時(shí)的一般端口號,然后操作系統(tǒng)就為該進(jìn)程創(chuàng)建兩個(gè)隊(duì)列:入隊(duì)列和出隊(duì)列。只要進(jìn)程在執(zhí)行,此兩個(gè)隊(duì)列就一直存在。當(dāng)進(jìn)程終止時(shí),入隊(duì)列和出隊(duì)列以及臨時(shí)端口號就一起被撤消。UDP端口51000UDP端口69

出隊(duì)列入隊(duì)列出隊(duì)列入隊(duì)列TFTP服務(wù)器TFTP客戶UDP用戶數(shù)據(jù)報(bào)應(yīng)用層運(yùn)輸層端口是用報(bào)文隊(duì)列來實(shí)現(xiàn)

UDP為面向無連接的。它僅在IP數(shù)據(jù)報(bào)服務(wù)之上增加了端口功能。UDP使用端口號為不同的應(yīng)用進(jìn)程保留各自數(shù)據(jù)傳輸通道。用戶數(shù)據(jù)報(bào)UDP的構(gòu)成:UDP包括兩個(gè)字段:首字段和數(shù)據(jù)字段。首字段8個(gè)字節(jié),由4個(gè)字段組成,每個(gè)字段都是2個(gè)字節(jié)。源端口地址:源端口號碼。目標(biāo)端口地址:目標(biāo)端口號碼。長度字段:UDP用戶數(shù)據(jù)報(bào)長度。校驗(yàn)和:使用在差錯(cuò)控制中的16bit域。

UDP用戶數(shù)據(jù)報(bào)首部中校驗(yàn)和的計(jì)算方法特殊性:在計(jì)算機(jī)校驗(yàn)和時(shí),要在UDP用戶數(shù)據(jù)報(bào)之前增加12個(gè)字節(jié)的偽首部?!皞问撞俊辈⒉皇荱DP用戶數(shù)據(jù)報(bào)真正的首部,只是在計(jì)算校驗(yàn)和時(shí),臨時(shí)和UDP用戶數(shù)據(jù)報(bào)連接在一起,得到一個(gè)過渡的UDP用戶數(shù)據(jù)報(bào)。偽首部既不向下傳送也不向上遞交,僅僅是為了計(jì)算校驗(yàn)和。

UDP的校驗(yàn)和是將首部和數(shù)據(jù)部分一起都校驗(yàn)了,而IP數(shù)據(jù)報(bào)的校驗(yàn)和只校驗(yàn)IP數(shù)據(jù)報(bào)的首部。在端到端傳輸過程中,UDP不提供任何順序或重新排序功能。它僅包含一校驗(yàn)和,報(bào)告有錯(cuò)誤發(fā)生,但不能指出損壞的包。偽首部源端口目的端口長度檢驗(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)和。檢驗(yàn)方法和IP數(shù)據(jù)報(bào)首部檢驗(yàn)方法一樣。7.4

傳輸控制協(xié)議TCP

TCP特點(diǎn):TCP提供面向連接的流傳輸面向連接:在數(shù)據(jù)傳輸之前,首先在信源與信宿之間建立一條連接;傳輸?shù)拿恳粋€(gè)報(bào)文都需要接收端確認(rèn),未確認(rèn)報(bào)文認(rèn)為是出錯(cuò)報(bào)文。流傳輸:無報(bào)文丟失、重復(fù)、亂序的正確數(shù)據(jù)報(bào)文序列;TCP協(xié)議實(shí)現(xiàn)流傳輸?shù)拈_銷很大。

TCP在端到端傳輸數(shù)據(jù)前必須在發(fā)送端應(yīng)用進(jìn)程和接收端應(yīng)用進(jìn)程之間建立連接。不同的應(yīng)用進(jìn)程通信對應(yīng)不同的連接建立。建立的連接在整個(gè)傳輸過程中有效。一、

TCP報(bào)文段一個(gè)TCP報(bào)文共分為首部和數(shù)據(jù)兩個(gè)部分,首部的前20個(gè)字節(jié)是固定的,后面有4N字節(jié)是可有可無選項(xiàng)(N為整數(shù))。因此TCP首部的最小長度是20字節(jié)。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充

源端口和目的端口

——各占16bit。分別定義了源計(jì)算機(jī)和目的計(jì)算機(jī)上的應(yīng)用程序,為源端和目的端SAP。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充序號

——占32bit。是本報(bào)文段所發(fā)送的數(shù)據(jù)部分第一個(gè)字節(jié)的序號。TCP傳送報(bào)文為連續(xù)數(shù)據(jù)流,所傳送的連續(xù)數(shù)據(jù)流中每一個(gè)字節(jié)都編一個(gè)序號。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充確認(rèn)號

——占32bit。定義了接收方希望接收的下一個(gè)報(bào)文段的數(shù)據(jù)的第一個(gè)字節(jié)的序號。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充數(shù)據(jù)偏移

——占4bit。指出數(shù)據(jù)起始處離TCP報(bào)文段的起始處有多遠(yuǎn)。這實(shí)際上就是TCP報(bào)文段首部的長度。首部長度不固定。

保留——占6bit,為今后使用,目前置0。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充

窗口字段

——占2字節(jié)。用來控制對方發(fā)送的數(shù)據(jù)量。TCP連接的一端根據(jù)設(shè)置的緩存空間大小確定自己的接收窗口大小,由接收端接收能力大小控制發(fā)送端數(shù)據(jù)發(fā)送量。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充

檢驗(yàn)和

——16bit,檢驗(yàn)的范圍也包括首部和數(shù)據(jù)兩部分,即檢驗(yàn)整個(gè)TCP報(bào)文段。

同UDP數(shù)據(jù)報(bào)一樣,在計(jì)算檢驗(yàn)和時(shí),要在TCP報(bào)文段的前面加上偽首部。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充

緊急指針

——占16bit。緊急指針指出在本報(bào)文段中的緊急數(shù)據(jù)的最后一個(gè)字節(jié)的序號。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充

選項(xiàng)字段

——長度可變。TCP只規(guī)定了一種選項(xiàng),即TCP報(bào)文段長度最大數(shù)據(jù)長度MSS。默認(rèn)值是536字節(jié)長。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充

填充字段

——這是為了使整個(gè)首部長度是4字節(jié)的整數(shù)倍。緊急比特確認(rèn)比特推送比特復(fù)位比特同步比特終止比特

緊急比特URG:當(dāng)URG=1時(shí),緊急指針才有效,發(fā)送應(yīng)用進(jìn)程告訴發(fā)送TCP所發(fā)送報(bào)文是緊急數(shù)據(jù),要按最高優(yōu)先級處理,而不是按排隊(duì)順序傳送。緊急指針指出緊急數(shù)據(jù)有多少個(gè)字節(jié),緊急數(shù)據(jù)到達(dá)接收端后,當(dāng)所有緊急數(shù)據(jù)處理完畢后,TCP告訴應(yīng)用程序恢復(fù)到正常操作。注意,即使窗口為零時(shí),也可發(fā)送緊急數(shù)據(jù)。

終止比特FIN:當(dāng)FIN=1時(shí),表明此報(bào)文段發(fā)送端數(shù)據(jù)發(fā)送完畢,要求釋放運(yùn)輸連接。

確認(rèn)比特ACK和同步比特SYN當(dāng)ACK=1和SYN=0時(shí),確認(rèn)號字段才有效。當(dāng)ACK=0時(shí),確認(rèn)號無效。當(dāng)ACK=0和SYN=1時(shí),表明為連接請求報(bào)文段。當(dāng)ACK=1和SYN=1時(shí),表明為連接接受報(bào)文段。

復(fù)位比特RST當(dāng)RST=1時(shí),表明TCP連接中出現(xiàn)嚴(yán)重差錯(cuò),必須釋放連接,然后再重新建立運(yùn)輸連接。

推送比特PSH當(dāng)PSH=1時(shí),發(fā)送端立即創(chuàng)建一個(gè)報(bào)文段發(fā)送出去,接收TCP受到PSH=1的報(bào)文段,就盡快地交付給接收應(yīng)用進(jìn)程,而不再等到整個(gè)緩存都填滿了后再向上交付。PSH比特也稱為急迫比特。應(yīng)用情況:當(dāng)兩個(gè)應(yīng)用進(jìn)程進(jìn)行交互通信,有時(shí)一端應(yīng)用進(jìn)程希望在鍵入一個(gè)命令后立即能夠收到對方響應(yīng),在此情況下,TCP可使用推送(PUSH)操作,即將PSH=1。二、

TCP的數(shù)據(jù)編號與確認(rèn)1.編號TCP協(xié)議是面向字節(jié)的。TCP將所要傳送的報(bào)文看成是字節(jié)組成的數(shù)據(jù)流,并使每一個(gè)字節(jié)對應(yīng)于一個(gè)序號。在連接建立時(shí),雙方要商定初始序號。TCP每次發(fā)送的報(bào)文段的首部中的序號字段數(shù)值表示該報(bào)文段中的數(shù)據(jù)部分的第一個(gè)字節(jié)的序號。

TCP的確認(rèn)是對接收到的數(shù)據(jù)的最高序號表示確認(rèn)。接收端返回的確認(rèn)號是已收到的數(shù)據(jù)的最高序號加1。因此確認(rèn)號表示接收端期望下次收到的數(shù)據(jù)中的第一個(gè)數(shù)據(jù)字節(jié)的序號。

2.緩沖處理接收端發(fā)出確認(rèn)報(bào)文前,一般讓接收端等待一段時(shí)間,使得或者緩沖區(qū)已能有足夠空間容納一個(gè)最長報(bào)文段,或者緩沖區(qū)已有一般空間處于空的狀態(tài)時(shí),才發(fā)出確認(rèn)報(bào)文,并向發(fā)送端通知當(dāng)前窗口大小。此外,發(fā)送端也不要發(fā)送太小報(bào)文段,而是將數(shù)據(jù)積累足夠大的報(bào)文段,或達(dá)到接收緩沖區(qū)一半空間大小時(shí)才真正發(fā)送。3.重發(fā)與丟棄若發(fā)送方在規(guī)定設(shè)置時(shí)間內(nèi)沒有收到確認(rèn),就要將未確認(rèn)的報(bào)文段重新發(fā)送。接收方收到有差錯(cuò)報(bào)文段,則丟棄該報(bào)文段(不發(fā)送否認(rèn)信息)。若收到重復(fù)正確報(bào)文段,也要丟棄,但要發(fā)回確認(rèn)信息。這與數(shù)據(jù)鏈路層相似。三、

TCP的流量控制—滑動(dòng)窗口1.滑動(dòng)窗口的概念TCP采用大小可變的滑動(dòng)窗口進(jìn)行流量控制。窗口大小的單位是字節(jié)。在TCP報(bào)文段首部的窗口字段寫入的數(shù)值就是當(dāng)前給對方設(shè)置的發(fā)送窗口數(shù)值的上限。發(fā)送窗口在連接建立時(shí)由雙方商定。但在通信的過程中,接收端可根據(jù)自己的資源情況,隨時(shí)動(dòng)態(tài)地調(diào)整對方的發(fā)送窗口上限值(可增大或減小)。這采用“接收端控制發(fā)送端”。收到確認(rèn)即可前移1002003004005006007008009001012013014015016017018011發(fā)送窗口可發(fā)送不可發(fā)送指針發(fā)送端要發(fā)送900字節(jié)長的數(shù)據(jù),100字節(jié)長為一個(gè)報(bào)文段,共劃分為9個(gè)報(bào)文段,而發(fā)送窗口確定為500字節(jié)。發(fā)送端只要收到了對方的確認(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ù),但只收到對前200字節(jié)數(shù)據(jù)的確認(rèn),同時(shí)窗口大小不變?,F(xiàn)在發(fā)送端還可發(fā)送300字節(jié)。已發(fā)送并被確認(rèn)已發(fā)送但未被確認(rèn)1002003004005006007008009001012013014015016017018011已發(fā)送并被確認(rèn)已發(fā)送但未被確認(rèn)可發(fā)送不可發(fā)送指針1002003004005006007008009001012013014015016017018011已發(fā)送并被確認(rèn)可發(fā)送不可發(fā)送指針發(fā)送窗口前移發(fā)送窗口縮小發(fā)送端收到了對方對前400字節(jié)數(shù)據(jù)的確認(rèn),但對方通知發(fā)送端必須把窗口減小到400字節(jié)?,F(xiàn)在發(fā)送端最多還可發(fā)送400字節(jié)的數(shù)據(jù)。利用可變窗口大小進(jìn)行流量控制

雙方確定的窗口值是400字節(jié)SEQ=1SEQ=201SEQ=401SEQ=301SEQ=101SEQ=501ACK=201,WIN=300ACK=601,WIN=0ACK=501,WIN=200主機(jī)A主機(jī)B允許A再發(fā)送300字節(jié)(序號201至500)A還能發(fā)送200字節(jié)A還能發(fā)送200字節(jié)(序號301至500)A還能發(fā)送300字節(jié)A還能發(fā)送100字節(jié)(序號401至500)A超時(shí)重發(fā),但不能發(fā)送序號500以后的數(shù)據(jù)允許A再發(fā)送200字節(jié)(序號501至700)A還能發(fā)送200字節(jié)(序號501至700)不允許A再發(fā)送(到序號600的數(shù)據(jù)都已收到)SEQ=201丟失!

TCP的滑動(dòng)窗口大小的控制要考慮到兩方面:

通知窗口:接收方根據(jù)自己的接收能力而確定的接收窗口的大小。擁塞窗口:來自發(fā)送方的流量控制。發(fā)送方根據(jù)目前網(wǎng)絡(luò)的使用情況而得出的窗口值。當(dāng)中最小的一個(gè)最為適宜,即:發(fā)送窗口=Min[通知窗口,擁塞窗口]

注意:

TCP流量控制通過使用滑動(dòng)窗口協(xié)議。數(shù)據(jù)鏈路層的滑動(dòng)窗口是固定大小的,是作用在單條鏈路的。傳輸層的滑動(dòng)窗口是可變窗口大小和使用動(dòng)態(tài)緩沖分配。四、

TCP的運(yùn)輸連接管理

TCP的運(yùn)輸連接是用來傳送TCP報(bào)文的。TCP的運(yùn)輸連接的建立和釋放是每一次面向連接的通信中必不可少的過程。

TCP的運(yùn)輸連接有三個(gè)階段:連接建立;數(shù)據(jù)傳送和連接釋放。

TCP的連接建立和釋放都是采用客戶服務(wù)器方式。主動(dòng)發(fā)起連接建立的應(yīng)用進(jìn)程叫做客戶Client。被動(dòng)等待連接建立的應(yīng)用進(jìn)程叫做服務(wù)器Server。1、連接建立

定義:在通信設(shè)備向?qū)Ψ桨l(fā)送數(shù)據(jù)前,開始通信設(shè)備必須先決定交換數(shù)據(jù)的對方是否存在,同時(shí)必須找到一條經(jīng)過網(wǎng)絡(luò)路徑,數(shù)據(jù)才能沿該路徑傳送。此步驟稱為連接建立。

過程:連接建立需要三個(gè)動(dòng)作,稱為三向握手。源端機(jī)發(fā)送一個(gè)帶有本次連接序號的請求。目的主機(jī)如果同意連接,則發(fā)回一個(gè)帶有本次連接序號和源端機(jī)連接序號的確認(rèn)。源端機(jī)收到含有兩次初始序號的應(yīng)答后,再向目的主機(jī)發(fā)送一個(gè)帶有兩次連接序號的確認(rèn)。用三次握手建立TCP連接ACK=0,SYN=1,SEQ=x主機(jī)B服務(wù)器進(jìn)程SYN=1,ACK=1,SEQ=y,ACK=x

1ACK=1,SEQ=x+1,ACK=y

1被動(dòng)打開主動(dòng)打開確認(rèn)確認(rèn)主機(jī)A客戶進(jìn)程連接請求確認(rèn)號字段確認(rèn)比特設(shè)主機(jī)B運(yùn)行一個(gè)服務(wù)器進(jìn)程;主機(jī)A運(yùn)行一個(gè)客戶進(jìn)程。主機(jī)A的TCP向主機(jī)B的TCP發(fā)出連接請求報(bào)文段,其首部中同步比特SYN=1,ACK=0。同時(shí)選擇一個(gè)數(shù)據(jù)序號x。主機(jī)B的TCP收到連接請求報(bào)文段,同意則發(fā)回確認(rèn),在連接確認(rèn)報(bào)文段中SYN=1,ACK=1,確認(rèn)號應(yīng)為x+1,同時(shí)為自己選擇一個(gè)數(shù)據(jù)序號y。

主機(jī)A的TCP收到B的確認(rèn)后,返回B確認(rèn),在確認(rèn)報(bào)文段中SYN=0,ACK=1,確認(rèn)號應(yīng)為y+1,而自己的數(shù)據(jù)序號x+1。建立TCP

連接2、數(shù)據(jù)傳輸在三次握手后,TCP連接建立。運(yùn)行客戶進(jìn)程的主機(jī)A的TCP通知上層應(yīng)用進(jìn)程,連接已經(jīng)建立。運(yùn)行服務(wù)器進(jìn)程的主機(jī)B的TCP收到主機(jī)A確認(rèn)后,也通知其上層應(yīng)用進(jìn)程,連接已經(jīng)建立。主機(jī)A向B發(fā)送第一個(gè)數(shù)據(jù)報(bào)文段,序號為x+1,因?yàn)榍耙粋€(gè)確認(rèn)報(bào)文段不消耗序號。

TCP標(biāo)準(zhǔn)規(guī)定,SYN=1的報(bào)文段消耗一個(gè)序號。用三次握手建立TCP連接ACK=0,

SYN,SEQ=x主機(jī)B服務(wù)器進(jìn)程SYN,ACK,SEQ=y,ACK=x

1SEQ=x+1被動(dòng)打開主動(dòng)打開確認(rèn)確認(rèn)主機(jī)A客戶進(jìn)程連接請求ACK,SYN

=0,

SEQ=x+1,ACK=y

1數(shù)據(jù)傳輸TCP標(biāo)準(zhǔn)規(guī)定,SYN=1的報(bào)文段消耗一個(gè)序號。3、連接終止數(shù)據(jù)傳輸終止后,發(fā)出釋放連

溫馨提示

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

評論

0/150

提交評論