《現(xiàn)場總線與工業(yè)以太網(wǎng)及其應用技術》第2版 課件 第8章 TCPIP協(xié)議_第1頁
《現(xiàn)場總線與工業(yè)以太網(wǎng)及其應用技術》第2版 課件 第8章 TCPIP協(xié)議_第2頁
《現(xiàn)場總線與工業(yè)以太網(wǎng)及其應用技術》第2版 課件 第8章 TCPIP協(xié)議_第3頁
《現(xiàn)場總線與工業(yè)以太網(wǎng)及其應用技術》第2版 課件 第8章 TCPIP協(xié)議_第4頁
《現(xiàn)場總線與工業(yè)以太網(wǎng)及其應用技術》第2版 課件 第8章 TCPIP協(xié)議_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章

TCP/IP協(xié)議8.1TCP/IP協(xié)議的體系結(jié)構(gòu)TCP/IP協(xié)議的體系結(jié)構(gòu)分為四層,這四層由高到低分別是:應用層、傳輸層、網(wǎng)絡層和鏈路層,如圖8-1所示。其中每一層完成不同的通信功能,具體各層的功能和各層所包含的協(xié)議說明如下。8.1.1TCP/IP協(xié)議的四個層次圖8-1TCP/IP協(xié)議的層次結(jié)構(gòu)鏈路層在TCP/IP協(xié)議棧的最低層,也稱為數(shù)據(jù)鏈路層或網(wǎng)絡接口層,通常包括操作系統(tǒng)中的設備驅(qū)動程序和計算機中對應的網(wǎng)絡接口卡。鏈路層的功能是把接收到的網(wǎng)絡層數(shù)據(jù)報(也稱IP數(shù)據(jù)報)通過該層的物理接口發(fā)送到傳輸介質(zhì)上,或從物理網(wǎng)絡上接收數(shù)據(jù)幀,抽出IP數(shù)據(jù)報并交給IP層。8.1.1TCP/IP協(xié)議的四個層次1.鏈路層網(wǎng)絡層也稱為互聯(lián)網(wǎng)層,由于該層的主要協(xié)議是IP協(xié)議,因而也可簡稱為IP層。它是TCP/IP協(xié)議棧中最重要的一層,主要功能是可以把源主機上的分組發(fā)送到互聯(lián)網(wǎng)中的任何一臺目的主機上。2.網(wǎng)絡層我們通常所說的兩臺主機之間的通信其實是兩臺主機上對應應用程序之間的通信,傳輸層提供的就是應用程序之間的通信,也叫端到端(EndtoEnd)的通信。8.1.1TCP/IP協(xié)議的四個層次3.傳輸層應用層向使用網(wǎng)絡的用戶提供特定的、常用的應用程序,如使用最廣泛的遠程登錄(Telnet)、文件傳輸協(xié)議(FTP)、超文本傳輸協(xié)議(HTTP)、域名系統(tǒng)(DNS)、簡單網(wǎng)絡管理協(xié)議(SNMP)和簡單郵件傳輸協(xié)議(SMTP)等。要注意有些應用層協(xié)議是基于TCP協(xié)議的(如FTP和HTTP等),有些應用層協(xié)議是基于UDP協(xié)議的(如SNMP等)。4.應用層8.1.2TCP/IP協(xié)議模型中的操作系統(tǒng)邊界和地址邊界TCP/IP協(xié)議分為四層結(jié)構(gòu),這四層結(jié)構(gòu)中有兩個重要的邊界:一個是將操作系統(tǒng)與應用程序分開的邊界,另一個是將高層互聯(lián)網(wǎng)地址與低層物理網(wǎng)卡地址分開的邊界,如圖8-2所示。圖8-2TCP/IP協(xié)議模型的兩個邊界操作系統(tǒng)邊界的上面是應用層,應用層處理的是用戶應用程序(用戶進程)的細節(jié)問題,提供面向用戶的服務。這部分的程序一般不包含在操作系統(tǒng)內(nèi)核中,由一些獨立的應用程序組成,我們在本書中設計的網(wǎng)絡程序就屬于這一層。操作系統(tǒng)邊界的下面各層包含在操作系統(tǒng)內(nèi)核中,是由操作系統(tǒng)來實現(xiàn)的,它們共同處理數(shù)據(jù)傳輸過程中的通信問題8.1.2TCP/IP協(xié)議模型中的操作系統(tǒng)邊界和地址邊界1.操作系統(tǒng)邊界地址邊界的上層為網(wǎng)絡層,網(wǎng)絡層用于對不同的網(wǎng)絡進行互聯(lián),連接在一起的所有網(wǎng)絡為了能互相尋址,要使用統(tǒng)一的互聯(lián)網(wǎng)地址(IP地址)。而地址邊界的下層為各個物理網(wǎng)絡,不同的物理網(wǎng)絡使用的物理地址各不相同,因此,在地址邊界的下面只能是各個互聯(lián)起來的網(wǎng)絡使用自己能識別的物理地址。2.地址邊界8.2IP協(xié)議不同的網(wǎng)絡使用的協(xié)議不同,地址長度和尋址方式不同,數(shù)據(jù)幀的長度不同,物理網(wǎng)絡的這些差別是無法改變的,也就是說,我們無法做到物理網(wǎng)絡的“統(tǒng)一”。但是,我們可以對互聯(lián)的不同物理網(wǎng)絡(具體表現(xiàn)就是不同網(wǎng)絡的網(wǎng)絡接口卡和設備驅(qū)動程序互不相同)上傳輸?shù)臄?shù)據(jù)幀都加上一層相同的“包裝”,使加了“包裝”后的網(wǎng)絡數(shù)據(jù)幀對外有統(tǒng)一的“外表”(為了區(qū)別數(shù)據(jù)幀,我們就把它叫“數(shù)據(jù)報”),并且有足夠的地址信息(就是下一節(jié)要講的IP地址)用來識別數(shù)據(jù)報從何而來(信源),要到什么地方去(信宿)。對于這樣的數(shù)據(jù)報,不同網(wǎng)絡中的節(jié)點(主要是路由器)都可以識別,因此,就可以根據(jù)數(shù)據(jù)報的目的地址,把它從一個節(jié)點轉(zhuǎn)發(fā)到另一個節(jié)點,直到目的主機,最后由目的主機對數(shù)據(jù)報的內(nèi)容進行解釋。上述方法其實就是利用信息隱蔽原理,在互聯(lián)網(wǎng)中把不同網(wǎng)絡的實現(xiàn)細節(jié)通過IP層隱藏起來,達到在網(wǎng)絡層邏輯上一致的目的,如圖8-3所示。8.2.1IP互聯(lián)網(wǎng)原理圖8-3IP對不同數(shù)據(jù)幀的統(tǒng)一IP協(xié)議是TCP/IP協(xié)議族中最重要的協(xié)議,從協(xié)議體系結(jié)構(gòu)來看,它向下屏蔽了不同物理網(wǎng)絡的低層,向上提供一個邏輯上統(tǒng)一的互聯(lián)網(wǎng)。互聯(lián)網(wǎng)上的所有數(shù)據(jù)報都要經(jīng)過IP協(xié)議進行傳輸,它是通信網(wǎng)絡與高層協(xié)議的邊界,如圖8-4所示。8.2.2IP協(xié)議的地位與IP互聯(lián)網(wǎng)的特點圖8-4IP協(xié)議在TCP/IP協(xié)議族中的地位使用IP協(xié)議的互聯(lián)網(wǎng)具有以下重要特點:(1)IP協(xié)議是一種無連接(Connectionless)不可靠(Unreliable)的數(shù)據(jù)報傳輸協(xié)議。(2)IP互聯(lián)網(wǎng)中的計算機沒有主次之分,所有主機地位平等也沒有主次之分。(3)IP互聯(lián)網(wǎng)沒有確定的拓撲結(jié)構(gòu)。(4)在IP互聯(lián)網(wǎng)中的任何一臺主機,都至少有一個獨一無二的IP地址,有多個網(wǎng)絡接口卡的計算機每個接口可以有一個IP地址,這樣一臺主機可能就有多個IP地址。有多個IP地址的主機叫多宿主機(Multi-homeHost)。(5)在互聯(lián)網(wǎng)中有IP地址的設備不一定就是一臺計算機,如IP路由器、網(wǎng)關等,因為與互聯(lián)網(wǎng)有獨立連接的設備都要有IP地址。8.2.2IP協(xié)議的地位與IP互聯(lián)網(wǎng)的特點互聯(lián)網(wǎng)是由很多網(wǎng)絡連接而成的,互聯(lián)網(wǎng)中的數(shù)據(jù)報有些是在本網(wǎng)內(nèi)主機之間傳輸?shù)模行┦且偷交ヂ?lián)網(wǎng)中其他網(wǎng)絡中的主機中去的,因此,IP地址不但要標識在本網(wǎng)內(nèi)的主機號,還要標識在互聯(lián)網(wǎng)中的網(wǎng)絡號,如圖8-5所示。8.2.3IP地址1.IP地址的結(jié)構(gòu)Internet現(xiàn)在使用的IP協(xié)議是IPv4(第四版),它使用32位二進制數(shù)(即4個字節(jié))表示一個IP地址,在進行程序設計時一般用長整型。2.IP地址的表示格式圖8-5IP地址結(jié)構(gòu)IP地址由網(wǎng)絡號和主機號兩部分組成,如圖8-6所示。8.2.3IP地址3.IP地址的分類IP地址用來標識互聯(lián)網(wǎng)中的主機,但少數(shù)IP地址有特殊用途,不能分配給主機,這些IP地址有網(wǎng)絡地址、直接廣播地址、有限廣播地址、本網(wǎng)特定主機地址、回送地址、本網(wǎng)絡本主機。圖8-6IP地址的分類IP地址最初使用兩層地址結(jié)構(gòu)(包括網(wǎng)絡地址和主機地址),在這種結(jié)構(gòu)中A類和B類網(wǎng)絡所能容納的主機數(shù)非常龐大,但使用C類IP地址的網(wǎng)絡只能接入254臺主機。隨著計算機網(wǎng)絡技術的不斷普及,有大量的個人用戶和小型局域網(wǎng)接入互聯(lián)網(wǎng),對于這樣的用戶,即使分配一個C類網(wǎng)絡地址仍然會造成IP地址的很大浪費。因此,人們提出了三層結(jié)構(gòu)的IP地址,把每個網(wǎng)絡可以進一步劃分成若干個子網(wǎng)(Subnet),子網(wǎng)內(nèi)主機的IP地址由三部分組成,如圖8-7所示,把兩級IP地址結(jié)構(gòu)中的主機地址分割成子網(wǎng)地址和主機地址兩部分。8.2.4子網(wǎng)與子網(wǎng)掩碼1.子網(wǎng)與子網(wǎng)地址子網(wǎng)掩碼用32位二進制數(shù)表示,常用點分十進制數(shù)格式來書寫,掩碼中用于標識網(wǎng)絡號和子網(wǎng)號的位置為1,主機位為0。2.子網(wǎng)掩碼圖8-7子網(wǎng)IP地址結(jié)構(gòu)IP協(xié)議是TCP/IP協(xié)議族中最為核心的協(xié)議,前面我們已經(jīng)討論過,它提供不可靠、無連接的數(shù)據(jù)報傳輸服務。IP層提供的服務是通過IP層對數(shù)據(jù)報的封裝與拆封來實現(xiàn)的。IP數(shù)據(jù)報的格式分為報頭區(qū)和數(shù)據(jù)區(qū)兩大部分,其中數(shù)據(jù)區(qū)包括高層協(xié)議需要傳輸?shù)臄?shù)據(jù),報頭區(qū)是為了正確傳輸高層數(shù)據(jù)而加的各種控制信息。IP數(shù)據(jù)報的格式如圖8-8所示。8.2.5IP數(shù)據(jù)報格式圖8-8IP數(shù)據(jù)報格式IP數(shù)據(jù)報中的每一個域包含了IP報文所攜帶的一些信息,正是用這些信息來完成IP協(xié)議功能的,現(xiàn)說明如下。(1)版本號版本號占用4位二進制數(shù),表示該IP數(shù)據(jù)報使用的是哪個版本的IP協(xié)議。目前在Internet中使用的TCP/IP協(xié)議族中,IP協(xié)議的版本號為4,所以也常稱為IPv4。下一個IP協(xié)議的版本號為6,即IPv6,當前正在試驗中。(2)頭長度頭長度用4位二進制數(shù)表示,此域指出整個報頭的長度(包括選項),該長度是以32位二進制數(shù)為一個計數(shù)單位的,接收端通過此域可以計算出報文頭在何處結(jié)束及從何處開始讀數(shù)據(jù)。普通IP數(shù)據(jù)報(沒有任何選項)該字段的值是5(即20個字節(jié)的長度)。(3)服務類型(TOS,TypeOfService)服務類型用8位二進制數(shù)表示,規(guī)定對本數(shù)據(jù)報的處理方式。(4)總長度總長度用16位二進制數(shù)表示,總長度字段是指整個IP數(shù)據(jù)報的長度,以字節(jié)為單位。利用頭部長度字段和總長度字段,就可以計算出IP數(shù)據(jù)報中數(shù)據(jù)內(nèi)容的起始位置和長度。由于該字段長度為16位二進制數(shù),所以從理論上來說,IP數(shù)據(jù)報最長可達65535字節(jié)(實際由于受物理網(wǎng)絡的限制,要比這個數(shù)值小得多)。8.2.5IP數(shù)據(jù)報格式1.IP數(shù)據(jù)報各字段的功能(5)生存時間(TTL,TimeToLive)生存時間用8位二進制數(shù)表示,它指定了數(shù)據(jù)報可以在網(wǎng)絡中傳輸?shù)淖铋L時間。在實際應用中為了簡化處理過程,把生存時間字段設置成了數(shù)據(jù)報可以經(jīng)過的最大路由器數(shù)。TTL的初始值由源主機設置(通常為32、64、128或者256),一旦經(jīng)過一個處理它的路由器,它的值就減去1。當該字段的值減為0時,數(shù)據(jù)報就被丟棄,并發(fā)送ICMP報文(8.4節(jié)介紹)通知源主機,這樣可以防止進入一個循環(huán)回路時,數(shù)據(jù)報無休止地傳輸。(6)上層協(xié)議標識上層協(xié)議標識用8位二進制數(shù)表示,從圖8-4可知,IP協(xié)議可以承載多種上層協(xié)議,目的端根據(jù)協(xié)議標識,就可以把收到的IP數(shù)據(jù)報送至TCP或UDP等處理此報文的上層協(xié)議。(7)校驗和校驗和用16位二進制數(shù)表示,這個域用于協(xié)議頭數(shù)據(jù)有效性的校驗,可以保證IP報頭區(qū)在傳輸時的正確性和完整性。頭部校驗和字段是根據(jù)IP協(xié)議頭部計算出的校驗和碼,它不對頭部后面的數(shù)據(jù)進行計算。(8)源地址源地址是用32位二進制數(shù)表示的發(fā)送端IP地址。(9)目的地址目的地址是用32位二進制數(shù)表示的目的端IP地址。8.2.5IP數(shù)據(jù)報格式(1)最大傳輸單元MTUIP數(shù)據(jù)報在互聯(lián)網(wǎng)上傳輸,可能要經(jīng)過多個物理網(wǎng)絡才能從源端傳輸?shù)侥康亩恕2煌木W(wǎng)絡由于鏈路層和介質(zhì)的物理特性不同,因此在進行數(shù)據(jù)傳輸時,對數(shù)據(jù)幀的最大長度都有一個限制,這個限制值即最大傳輸單元MTU(MaximumTransmissionUnit)。(2)分片當一個IP數(shù)據(jù)報要通過鏈路層進行傳輸時,如果IP數(shù)據(jù)報的長度比鏈路層MTU的值大,那么IP層就需要對將要發(fā)送的IP數(shù)據(jù)報進行分片,把一個IP數(shù)據(jù)報分成若干個長度小于或等于鏈路層MTU的IP數(shù)據(jù)報,才能經(jīng)過鏈路層進行傳輸。這種把一個數(shù)據(jù)報為了適合網(wǎng)絡傳輸而分成多個數(shù)據(jù)報的過程稱為分片(Fragmentation)。一定要注意,被分片后的各個IP數(shù)據(jù)報可能經(jīng)過不同的路徑到達目的主機。(3)重組當分了片的IP數(shù)據(jù)報被傳輸?shù)阶罱K目的主機時,目的主機要對收到的各分片重新進行組裝,以恢復成源主機發(fā)送時的IP數(shù)據(jù)報,這個過程叫IP數(shù)據(jù)報的重組。8.2.5IP數(shù)據(jù)報格式2.IP數(shù)據(jù)報分片與重組8.3ICMP協(xié)議ICMP報文和其他協(xié)議的報文一樣,也是由ICMP報文頭區(qū)和數(shù)據(jù)區(qū)兩部分組成的。ICMP報文是封裝在IP數(shù)據(jù)報中通過鏈路層在網(wǎng)絡中進行傳輸?shù)?,如圖8-9所示。8.3.1ICMP報文的封裝與格式圖8-9ICMP報文及封裝格式1.ICMP報文的封裝ICMP報文的格式如圖8-10所示,其中報文頭分為三部分:類型、代碼和校驗和。2.ICMP報文的格式圖8-10ICMP報文的格式回送請求報文由源主機發(fā)出,目的主機應答,用于測試另一臺主機或路由器是否可達。其報文格式如圖8-11所示。8.3.2ICMP請求與應答報文1.回送請求與應答報文圖8-11回送請求與應答ICMP報文格式在劃分了子網(wǎng)的網(wǎng)絡中,有些主機(如無盤工作站)并不知道自己的子網(wǎng)掩碼。ICMP地址掩碼請求報文可用于主機在引導過程中獲取自己的子網(wǎng)掩碼,方法是主機在本網(wǎng)廣播ICMP地址掩碼請求報文,通常由本網(wǎng)中的路由器向請求主機發(fā)送一個ICMP地址掩碼應答報文。地址掩碼請求與應答報文的格式與圖8-16所示的回送請求與應答ICMP報文格式相似,但數(shù)據(jù)區(qū)是一個4字節(jié)的地址掩碼。掩碼請求報文的類型字段地址為17,地址掩碼應答報文為18,代碼字段都為0。2.地址掩碼請求與應答報文8.4ARP協(xié)議TCP/IP協(xié)議族專門設計了用于地址解析的協(xié)議ARP(AddressResolutionProtocol),它可以把一個IP地址映射成對應的物理地址。另外,對于無法保存IP地址的主機(如無盤工作站),TCP/IP協(xié)議族中也提供了從物理地址到IP地址映射的反向地址解析協(xié)議RARP(ReverseAddressResolutionProtocol),如圖8-12所示。圖8-12ARP和RARP在常用的以太網(wǎng)中,ARP報文被封裝成如圖8-13所示的以太網(wǎng)數(shù)據(jù)幀,然后以廣播方式發(fā)送到物理網(wǎng)絡。ARP報文格式如圖8-14所示。8.4.1ARP報文格式圖8-13ARP報文的以太網(wǎng)封裝格式圖8-14ARP報文格式8.4.1ARP報文格式ARP報文格式說明如下:(1)硬件類型。硬件類型字段占2個字節(jié),表示發(fā)送者硬件地址的類型。它的值為1即表示以太網(wǎng)地址。(2)協(xié)議類型。協(xié)議類型字段占2個字節(jié),表示發(fā)送方要映射的協(xié)議地址類型,該字段的常用值如表8-4所示。協(xié)議地址為IP地址時,它的值為0x0800。它的值與包含IP數(shù)據(jù)報的以太網(wǎng)數(shù)據(jù)幀中的類型字段的值相同。表8-4協(xié)議類型字段常用值(即以太網(wǎng)協(xié)議類型字段)8.4.1ARP報文格式(3)硬件地址長度和協(xié)議地址長度。硬件地址長度和協(xié)議地址長度各占一個1字節(jié),分別指出硬件地址和協(xié)議地址的長度,以字節(jié)為單位。對于以太網(wǎng)上IP地址的ARP請求或應答來說,它們的值分別為6和4。(4)操作代碼。ARP和RARP在設計時的協(xié)議格式完全相同,只有操作代碼字段可以對它們進行區(qū)分。該字段指出四種操作報文類型:值為1時表示ARP請求報文,值為2時表示ARP應答報文,值為3時表示RARP請求報文,值為4時表示RARP應答報文。(5)發(fā)送方硬件地址和發(fā)送方協(xié)議地址。該地址長度由硬件地址長度字段和協(xié)議地址長度字段指定。(6)目的方硬件地址和目的方協(xié)議地址。該地址長度由硬件地址長度字段和協(xié)議地址長度字段指定。ARP工作時,首先由知道目的主機IP地址但不知道目的主機物理地址的主機發(fā)出一份ARP請求報文,該報文中填有發(fā)送方硬件地址、發(fā)送方IP地址和目的方IP地址,操作代碼為1,目的方硬件地址填的是廣播地址(在以太網(wǎng)中為全1),因此該網(wǎng)絡內(nèi)的所有主機都可以收到該報文,其含意是“如果你是這個IP地址的擁有者,請回答你的硬件地址”。目的主機的ARP層收到這份廣播報文后,識別出這是發(fā)送方在尋問它的IP地址,于是發(fā)送一個ARP應答報文。這個ARP應答報文包含它的IP地址及對應的硬件地址,操作代碼為2,把原來的發(fā)送方硬件地址和協(xié)議地址填入目的方硬件地址和協(xié)議地址位置,即這時目的方變成了發(fā)送方,發(fā)送方變成了目的方。請求方收到ARP應答報文后,就可以使用目的方物理地址進行IP數(shù)據(jù)報的發(fā)送了。8.4.2ARP工作原理一臺主機向另一臺主機發(fā)送數(shù)據(jù)報后,可能不久還要發(fā)送,如果每發(fā)送一次數(shù)據(jù)報就進行一次ARP請求,那么ARP的工作效率就會很低。另外,由于ARP請求是以廣播方式發(fā)送的,因此頻繁使用ARP會使造成網(wǎng)絡擁擠,影響網(wǎng)絡的正常工作。解決該問題的關鍵是使用ARP高速緩存技術。在網(wǎng)絡中,每臺主機上都有一個ARP高速緩存,這個高速緩存存放了最近IP地址到硬件地址之間的映射記錄。高速緩存區(qū)中表項建立的方法是:(1)請求主機收到ARP應答后,主機就把獲得的IP地址與物理地址的映射關系存入ARP表中。(2)由于ARP請求報文是廣播發(fā)送的,所有收到ARP請求報文的主機都可以把其中發(fā)送方的物理地址和IP地址映射存入自己的高速緩存中,以備將來使用。(3)網(wǎng)絡中的主機在啟動時,可以主動廣播自己的IP地址和物理地址的映射關系,以免其他主機對它提出ARP請求(這也使一臺主機在啟動時,就可以知道自己的IP地址與網(wǎng)絡中其他主機的IP地址有沒有沖突)。8.4.3ARP高速緩存8.5端到端通信和端口號在互聯(lián)網(wǎng)中,任何兩臺通信的主機之間,從源端到目的端的信道都是由一段一段的點到點通信線路組成的(一個局域網(wǎng)中兩臺主機通信時只有一段點到點的線路)。如圖8-15所示。8.5.1端到端通信圖8-15傳輸層端到端通信為了識別傳輸層之上不同的網(wǎng)絡通信程序(進程),傳輸層引入了端口的概念。在一臺主機上,要進行網(wǎng)絡通信的進程首先要向系統(tǒng)提出動態(tài)申請,由系統(tǒng)(操作系統(tǒng)內(nèi)核)返回一個本地惟一的端口號,進程再通過系統(tǒng)調(diào)用把自己和這個特定的端口聯(lián)系在一起,這個過程叫綁定(Binding)。這樣,每個要通信的進程都與一個端口號對應,傳輸層就可以使用其報文頭中的端口號,把收到的數(shù)據(jù)送到不同的應用程序,如圖8-16所示。8.5.2傳輸層端口圖8-16傳輸層端到端通信在TCP/IP協(xié)議中,傳輸層使用的端口號用一個16位的二進制數(shù)表示。因此,在傳輸層如果使用TCP協(xié)議進行進程通信,則可用的端口號共有216個。由于UDP也是傳輸層一個獨立于TCP的協(xié)議,因此使用UDP協(xié)議時也有216個不同的端口。每個要通信的進程在通信之前都要先通過系統(tǒng)調(diào)用動態(tài)地申請一個端口號,TCP/IP協(xié)議在進行設計時就把服務器上守候進程的端口號進行了靜態(tài)分配。這些端口號由Internet號分配機構(gòu)IANA(InternetAssignedNumbersAuthority)來管理。一些常用服務的TCP和UDP的眾所周知端口號見表8-5和表8-6。8.5.2傳輸層端口表8-5常用的眾所周知的TCP端口號每個要通信的進程在通信之前都要先通過系統(tǒng)調(diào)用動態(tài)地申請一個端口號,TCP/IP協(xié)議在進行設計時就把服務器上守候進程的端口號進行了靜態(tài)分配。這些端口號由Internet號分配機構(gòu)IANA(InternetAssignedNumbersAuthority)來管理。一些常用服務的TCP和UDP的眾所周知端口號見表8-5和表8-6。8.5.2傳輸層端口表8-6常用的眾所周知的UDP端口號256~1023之間的端口號通常都是由Unix系統(tǒng)占用的,以提供一些特定的Unix服務?,F(xiàn)在IANA管理1~1023之間所有的端口號。任何TCP/IP實現(xiàn)所提供的服務都使用1~1023之間的端口號。8.6TCP協(xié)議在傳輸層,如果要保證端到端數(shù)據(jù)傳輸?shù)目煽啃裕鸵褂肨CP協(xié)議。TCP提供一種面向連接的、可靠的數(shù)據(jù)流服務。因為它的高可靠性,使TCP協(xié)議成為傳輸層最常用的協(xié)議,同時也是一個比較復雜的協(xié)議。TCP和IP一樣,是TCP/IP協(xié)議族中最重要的協(xié)議。TCP報文段(常稱為段)與UDP數(shù)據(jù)報一樣也是封裝在IP中進行傳輸?shù)?,只是IP報文的數(shù)據(jù)區(qū)為TCP報文段。TCP報文段的格式如圖8-17所示。8.6.1TCP報文段格式圖8-17TCP報文段的格式TCP源端口號長度為16位,用于標識發(fā)送方通信進程的端口。目的端在收到TCP報文段后,可以用源端口號和源IP地址標識報文的返回地址。8.6.1TCP報文段格式1.TCP源端口號TCP目的端口號長度為16位,用于標識接收方通信進程的端口。源端口號與IP頭部中的源端IP地址,目的端口號與目的端IP地址,這4個數(shù)就可以惟一確定從源端到目的端的一對TCP連接。2.TCP目的端口號序列號長度為32位,用于標識TCP發(fā)送端向TCP接收端發(fā)送數(shù)據(jù)字節(jié)流的序號。序列號的實際值等于該主機選擇的本次連接的初始序號ISN(InitialSequenceNumber)加上該報文段中第一個字節(jié)在整個數(shù)據(jù)流中的序號。由于TCP為應用層提供的是全雙工通信服務,這意味著數(shù)據(jù)能在兩個方向上獨立地進行傳輸,因此,連接的每一端必須保持每個方向上傳輸數(shù)據(jù)的序列號到達232-1后又從0開始。序列號保證了數(shù)據(jù)流發(fā)送的順序性,是TCP提供的可靠性保證措施之一。3.序列號確認號長度為32位。因為接收端收到的每個字節(jié)都被計數(shù),所以確認號可用來標識接收端希望收到的下一個TCP報文段第一個字節(jié)的序號。確認號包含發(fā)送確認的一端希望收到的下一個字節(jié)的序列號,因此確認號應當是上次已成功收到數(shù)據(jù)字節(jié)的序列號加1。確認號字段只有ACK標志(下面介紹)為1時才有效。8.6.1TCP報文段格式4.確認號該字段用4位二進制數(shù)表示TCP頭部的長短,它以32位二進制數(shù)為一個計數(shù)單位。TCP頭部長度一般為20個字節(jié),因此通常它的值為5。但當頭部包含選項時該長度是可變的。頭部長度主要用來標識TCP數(shù)據(jù)區(qū)的開始位置,因此又稱為數(shù)據(jù)偏移。5.頭部長度保留字段長度為6位,該域必須置0,準備為將來定義TCP新功能時使用。6.保留標志域長度為6位,每1位標志可以打開或關閉一個控制功能,這些控制功能與連接的管理和數(shù)據(jù)傳輸控制有關。7.標志窗口大小字段長度為16位,它是接收端的流量控制措施,用來告訴另一端它的數(shù)據(jù)接收能力。連接的每一端把可以接收的最大數(shù)據(jù)長度(其本質(zhì)為接收端TCP可用的緩沖區(qū)大?。┩ㄟ^TCP發(fā)送報文段中的窗口字段通知對方,對方發(fā)送數(shù)據(jù)的總長度不能超過窗口大小。窗口的大小用字節(jié)數(shù)表示,它起始于確認號字段指明的值,窗口最大長度為65535個字節(jié)。通過TCP報文段頭部的窗口刻度選項,它的值可以按比例變化,以提供更大的窗口。8.6.1TCP報文段格式8.窗口大小校驗和字段長度為16位,用于進行差錯校驗。校驗和覆蓋了整個的TCP報文段的頭部和數(shù)據(jù)區(qū)。9.校驗和緊急指針字段長度為16位,只有當URG標志置1時緊急指針才有效,它的值指向緊急數(shù)據(jù)最后一個字節(jié)的位置(如果把它的值與TCP頭部中的序列號相加,則表示緊急數(shù)據(jù)最后一個字節(jié)的序號,在有些實現(xiàn)中指向最后一個字節(jié)的下一個字節(jié))。如果URG標志沒有被設置,緊急指針域用0填充。10.緊急指針選項的長度不固定,通過選項使TCP可以提供一些額外的功能。每個選項由選項類型(占1個字節(jié))、該選項的總長度(占1個字節(jié))和選項值組成,如圖8-18所示。8.6.1TCP報文段格式11.選項填充字段的長度不定,用于填充以保證TCP頭部的長度為32位的整數(shù)倍,值全為0。12.填充圖8-18TCP選項格式在互聯(lián)網(wǎng)中兩臺要進行通信的主機,在一般情況下,總是其中的一臺主動提出通信的請求(客戶機),另一臺被動地響應(服務器)。如果傳輸層使用TCP協(xié)議,則在通信之前要求通信的雙方首先要建立一條連接。TCP使用“3次握手”(3-wayHandshake)法來建立一條連接。所謂3次握手,就是指在建立一條連接時通信雙方要交換3次報文。具體過程如下。第1次握手:由客戶機的應用層進程向其傳輸層TCP協(xié)議發(fā)出建立連接的命令,則客戶機TCP向服務器上提供某特定服務的端口發(fā)送一個請求建立連接的報文段,該報文段中SYN被置1,同時包含一個初始序列號x(系統(tǒng)保持著一個隨時間變化的計數(shù)器,建立連接時該計數(shù)器的值即為初始序列號,因此不同的連接初始序列號不同)。第2次握手:服務器收到建立連接的請求報文段后,發(fā)送一個包含服務器初始序號y,SYN被置1,確認號置為x+1的報文段作為應答。確認號加1是為了說明服務器已正確收到一個客戶連接請求報文段,因此從邏輯上來說,一個連接請求占用了一個序號。第3次握手:客戶機收到服務器的應答報文段后,也必須向服務器發(fā)送確認號為y+1的報文段進行確認。同時客戶機的TCP協(xié)議層通知應用層進程,連接已建立,可以進行數(shù)據(jù)傳輸了。8.6.2TCP連接的建立與關閉1.建立連接通過以上3次握手,兩臺要通信的主機之間就建立了一條連接,相互知道對方的哪個進程在與自己進行通信,通信時對方傳輸數(shù)據(jù)的順序號應該是多少。連接建立后通信的雙方可以相互傳輸數(shù)據(jù),并且雙方的地位是平等的。如果在建立連接的過程中握手報文段丟失,則可以通過重發(fā)機制進行解決。如果服務器端關機,則客戶端收不到服務器端的確認,客戶端按某種機制重發(fā)建立連接的請求報文段若干次后,就通知應用進程,連接不能建立(超時)。還有一種情況是當客戶請求的服務在服務器端沒有對應的端口提供時,服務器端以一個復位報文應答(RST=1),連接也不能建立。最后要說明一點,建立連接的TCP報文段中只有報文頭(無選項時長度為20個字節(jié)),沒有數(shù)據(jù)區(qū)。8.6.2TCP連接的建立與關閉1.建立連接由于TCP是一個全雙工協(xié)議,因此在通信過程中兩臺主機都可以獨立地發(fā)送數(shù)據(jù),完成數(shù)據(jù)發(fā)送的任何一方可以提出關閉連接的請求。關閉連接時,由于在每個傳輸方向既要發(fā)送一個關閉連接的報文段,又要接收對方的確認報文段,因此關閉一個連接要經(jīng)過4次握手。具體過程如下(下面設客戶機首先提出關閉連接的請求):第1次握手:由客戶機的應用進程向其TCP協(xié)議層發(fā)出終止連接的命令,則客戶TCP協(xié)議層向服務器TCP協(xié)議層發(fā)送一個FIN被置1的關閉連接的TCP報文段。第2次握手:服務器的TCP協(xié)議層收到關閉連接的報文段后,就發(fā)出確認,確認號為已收到的最后一個字節(jié)的序列號加1,同時把關閉的連接通知其應用進程,告訴它客戶機已經(jīng)終止了數(shù)據(jù)傳送。在發(fā)送完確認后,服務器如

溫馨提示

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

評論

0/150

提交評論