版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第8章
TCP/IP協(xié)議8.1TCP/IP協(xié)議的體系結(jié)構(gòu)TCP/IP協(xié)議的體系結(jié)構(gòu)分為四層,這四層由高到低分別是:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層和鏈路層,如圖8-1所示。其中每一層完成不同的通信功能,具體各層的功能和各層所包含的協(xié)議說明如下。8.1.1TCP/IP協(xié)議的四個(gè)層次圖8-1TCP/IP協(xié)議的層次結(jié)構(gòu)鏈路層在TCP/IP協(xié)議棧的最低層,也稱為數(shù)據(jù)鏈路層或網(wǎng)絡(luò)接口層,通常包括操作系統(tǒng)中的設(shè)備驅(qū)動(dòng)程序和計(jì)算機(jī)中對應(yīng)的網(wǎng)絡(luò)接口卡。鏈路層的功能是把接收到的網(wǎng)絡(luò)層數(shù)據(jù)報(bào)(也稱IP數(shù)據(jù)報(bào))通過該層的物理接口發(fā)送到傳輸介質(zhì)上,或從物理網(wǎng)絡(luò)上接收數(shù)據(jù)幀,抽出IP數(shù)據(jù)報(bào)并交給IP層。8.1.1TCP/IP協(xié)議的四個(gè)層次1.鏈路層網(wǎng)絡(luò)層也稱為互聯(lián)網(wǎng)層,由于該層的主要協(xié)議是IP協(xié)議,因而也可簡稱為IP層。它是TCP/IP協(xié)議棧中最重要的一層,主要功能是可以把源主機(jī)上的分組發(fā)送到互聯(lián)網(wǎng)中的任何一臺(tái)目的主機(jī)上。2.網(wǎng)絡(luò)層我們通常所說的兩臺(tái)主機(jī)之間的通信其實(shí)是兩臺(tái)主機(jī)上對應(yīng)應(yīng)用程序之間的通信,傳輸層提供的就是應(yīng)用程序之間的通信,也叫端到端(EndtoEnd)的通信。8.1.1TCP/IP協(xié)議的四個(gè)層次3.傳輸層應(yīng)用層向使用網(wǎng)絡(luò)的用戶提供特定的、常用的應(yīng)用程序,如使用最廣泛的遠(yuǎn)程登錄(Telnet)、文件傳輸協(xié)議(FTP)、超文本傳輸協(xié)議(HTTP)、域名系統(tǒng)(DNS)、簡單網(wǎng)絡(luò)管理協(xié)議(SNMP)和簡單郵件傳輸協(xié)議(SMTP)等。要注意有些應(yīng)用層協(xié)議是基于TCP協(xié)議的(如FTP和HTTP等),有些應(yīng)用層協(xié)議是基于UDP協(xié)議的(如SNMP等)。4.應(yīng)用層8.1.2TCP/IP協(xié)議模型中的操作系統(tǒng)邊界和地址邊界TCP/IP協(xié)議分為四層結(jié)構(gòu),這四層結(jié)構(gòu)中有兩個(gè)重要的邊界:一個(gè)是將操作系統(tǒng)與應(yīng)用程序分開的邊界,另一個(gè)是將高層互聯(lián)網(wǎng)地址與低層物理網(wǎng)卡地址分開的邊界,如圖8-2所示。圖8-2TCP/IP協(xié)議模型的兩個(gè)邊界操作系統(tǒng)邊界的上面是應(yīng)用層,應(yīng)用層處理的是用戶應(yīng)用程序(用戶進(jìn)程)的細(xì)節(jié)問題,提供面向用戶的服務(wù)。這部分的程序一般不包含在操作系統(tǒng)內(nèi)核中,由一些獨(dú)立的應(yīng)用程序組成,我們在本書中設(shè)計(jì)的網(wǎng)絡(luò)程序就屬于這一層。操作系統(tǒng)邊界的下面各層包含在操作系統(tǒng)內(nèi)核中,是由操作系統(tǒng)來實(shí)現(xiàn)的,它們共同處理數(shù)據(jù)傳輸過程中的通信問題8.1.2TCP/IP協(xié)議模型中的操作系統(tǒng)邊界和地址邊界1.操作系統(tǒng)邊界地址邊界的上層為網(wǎng)絡(luò)層,網(wǎng)絡(luò)層用于對不同的網(wǎng)絡(luò)進(jìn)行互聯(lián),連接在一起的所有網(wǎng)絡(luò)為了能互相尋址,要使用統(tǒng)一的互聯(lián)網(wǎng)地址(IP地址)。而地址邊界的下層為各個(gè)物理網(wǎng)絡(luò),不同的物理網(wǎng)絡(luò)使用的物理地址各不相同,因此,在地址邊界的下面只能是各個(gè)互聯(lián)起來的網(wǎng)絡(luò)使用自己能識(shí)別的物理地址。2.地址邊界8.2IP協(xié)議不同的網(wǎng)絡(luò)使用的協(xié)議不同,地址長度和尋址方式不同,數(shù)據(jù)幀的長度不同,物理網(wǎng)絡(luò)的這些差別是無法改變的,也就是說,我們無法做到物理網(wǎng)絡(luò)的“統(tǒng)一”。但是,我們可以對互聯(lián)的不同物理網(wǎng)絡(luò)(具體表現(xiàn)就是不同網(wǎng)絡(luò)的網(wǎng)絡(luò)接口卡和設(shè)備驅(qū)動(dòng)程序互不相同)上傳輸?shù)臄?shù)據(jù)幀都加上一層相同的“包裝”,使加了“包裝”后的網(wǎng)絡(luò)數(shù)據(jù)幀對外有統(tǒng)一的“外表”(為了區(qū)別數(shù)據(jù)幀,我們就把它叫“數(shù)據(jù)報(bào)”),并且有足夠的地址信息(就是下一節(jié)要講的IP地址)用來識(shí)別數(shù)據(jù)報(bào)從何而來(信源),要到什么地方去(信宿)。對于這樣的數(shù)據(jù)報(bào),不同網(wǎng)絡(luò)中的節(jié)點(diǎn)(主要是路由器)都可以識(shí)別,因此,就可以根據(jù)數(shù)據(jù)報(bào)的目的地址,把它從一個(gè)節(jié)點(diǎn)轉(zhuǎn)發(fā)到另一個(gè)節(jié)點(diǎn),直到目的主機(jī),最后由目的主機(jī)對數(shù)據(jù)報(bào)的內(nèi)容進(jìn)行解釋。上述方法其實(shí)就是利用信息隱蔽原理,在互聯(lián)網(wǎng)中把不同網(wǎng)絡(luò)的實(shí)現(xiàn)細(xì)節(jié)通過IP層隱藏起來,達(dá)到在網(wǎng)絡(luò)層邏輯上一致的目的,如圖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)絡(luò)的低層,向上提供一個(gè)邏輯上統(tǒng)一的互聯(lián)網(wǎng)?;ヂ?lián)網(wǎng)上的所有數(shù)據(jù)報(bào)都要經(jīng)過IP協(xié)議進(jìn)行傳輸,它是通信網(wǎng)絡(luò)與高層協(xié)議的邊界,如圖8-4所示。8.2.2IP協(xié)議的地位與IP互聯(lián)網(wǎng)的特點(diǎn)圖8-4IP協(xié)議在TCP/IP協(xié)議族中的地位使用IP協(xié)議的互聯(lián)網(wǎng)具有以下重要特點(diǎn):(1)IP協(xié)議是一種無連接(Connectionless)不可靠(Unreliable)的數(shù)據(jù)報(bào)傳輸協(xié)議。(2)IP互聯(lián)網(wǎng)中的計(jì)算機(jī)沒有主次之分,所有主機(jī)地位平等也沒有主次之分。(3)IP互聯(lián)網(wǎng)沒有確定的拓?fù)浣Y(jié)構(gòu)。(4)在IP互聯(lián)網(wǎng)中的任何一臺(tái)主機(jī),都至少有一個(gè)獨(dú)一無二的IP地址,有多個(gè)網(wǎng)絡(luò)接口卡的計(jì)算機(jī)每個(gè)接口可以有一個(gè)IP地址,這樣一臺(tái)主機(jī)可能就有多個(gè)IP地址。有多個(gè)IP地址的主機(jī)叫多宿主機(jī)(Multi-homeHost)。(5)在互聯(lián)網(wǎng)中有IP地址的設(shè)備不一定就是一臺(tái)計(jì)算機(jī),如IP路由器、網(wǎng)關(guān)等,因?yàn)榕c互聯(lián)網(wǎng)有獨(dú)立連接的設(shè)備都要有IP地址。8.2.2IP協(xié)議的地位與IP互聯(lián)網(wǎng)的特點(diǎn)互聯(lián)網(wǎng)是由很多網(wǎng)絡(luò)連接而成的,互聯(lián)網(wǎng)中的數(shù)據(jù)報(bào)有些是在本網(wǎng)內(nèi)主機(jī)之間傳輸?shù)模行┦且偷交ヂ?lián)網(wǎng)中其他網(wǎng)絡(luò)中的主機(jī)中去的,因此,IP地址不但要標(biāo)識(shí)在本網(wǎng)內(nèi)的主機(jī)號(hào),還要標(biāo)識(shí)在互聯(lián)網(wǎng)中的網(wǎng)絡(luò)號(hào),如圖8-5所示。8.2.3IP地址1.IP地址的結(jié)構(gòu)Internet現(xiàn)在使用的IP協(xié)議是IPv4(第四版),它使用32位二進(jìn)制數(shù)(即4個(gè)字節(jié))表示一個(gè)IP地址,在進(jìn)行程序設(shè)計(jì)時(shí)一般用長整型。2.IP地址的表示格式圖8-5IP地址結(jié)構(gòu)IP地址由網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)兩部分組成,如圖8-6所示。8.2.3IP地址3.IP地址的分類IP地址用來標(biāo)識(shí)互聯(lián)網(wǎng)中的主機(jī),但少數(shù)IP地址有特殊用途,不能分配給主機(jī),這些IP地址有網(wǎng)絡(luò)地址、直接廣播地址、有限廣播地址、本網(wǎng)特定主機(jī)地址、回送地址、本網(wǎng)絡(luò)本主機(jī)。圖8-6IP地址的分類IP地址最初使用兩層地址結(jié)構(gòu)(包括網(wǎng)絡(luò)地址和主機(jī)地址),在這種結(jié)構(gòu)中A類和B類網(wǎng)絡(luò)所能容納的主機(jī)數(shù)非常龐大,但使用C類IP地址的網(wǎng)絡(luò)只能接入254臺(tái)主機(jī)。隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的不斷普及,有大量的個(gè)人用戶和小型局域網(wǎng)接入互聯(lián)網(wǎng),對于這樣的用戶,即使分配一個(gè)C類網(wǎng)絡(luò)地址仍然會(huì)造成IP地址的很大浪費(fèi)。因此,人們提出了三層結(jié)構(gòu)的IP地址,把每個(gè)網(wǎng)絡(luò)可以進(jìn)一步劃分成若干個(gè)子網(wǎng)(Subnet),子網(wǎng)內(nèi)主機(jī)的IP地址由三部分組成,如圖8-7所示,把兩級(jí)IP地址結(jié)構(gòu)中的主機(jī)地址分割成子網(wǎng)地址和主機(jī)地址兩部分。8.2.4子網(wǎng)與子網(wǎng)掩碼1.子網(wǎng)與子網(wǎng)地址子網(wǎng)掩碼用32位二進(jìn)制數(shù)表示,常用點(diǎn)分十進(jìn)制數(shù)格式來書寫,掩碼中用于標(biāo)識(shí)網(wǎng)絡(luò)號(hào)和子網(wǎng)號(hào)的位置為1,主機(jī)位為0。2.子網(wǎng)掩碼圖8-7子網(wǎng)IP地址結(jié)構(gòu)IP協(xié)議是TCP/IP協(xié)議族中最為核心的協(xié)議,前面我們已經(jīng)討論過,它提供不可靠、無連接的數(shù)據(jù)報(bào)傳輸服務(wù)。IP層提供的服務(wù)是通過IP層對數(shù)據(jù)報(bào)的封裝與拆封來實(shí)現(xiàn)的。IP數(shù)據(jù)報(bào)的格式分為報(bào)頭區(qū)和數(shù)據(jù)區(qū)兩大部分,其中數(shù)據(jù)區(qū)包括高層協(xié)議需要傳輸?shù)臄?shù)據(jù),報(bào)頭區(qū)是為了正確傳輸高層數(shù)據(jù)而加的各種控制信息。IP數(shù)據(jù)報(bào)的格式如圖8-8所示。8.2.5IP數(shù)據(jù)報(bào)格式圖8-8IP數(shù)據(jù)報(bào)格式IP數(shù)據(jù)報(bào)中的每一個(gè)域包含了IP報(bào)文所攜帶的一些信息,正是用這些信息來完成IP協(xié)議功能的,現(xiàn)說明如下。(1)版本號(hào)版本號(hào)占用4位二進(jìn)制數(shù),表示該IP數(shù)據(jù)報(bào)使用的是哪個(gè)版本的IP協(xié)議。目前在Internet中使用的TCP/IP協(xié)議族中,IP協(xié)議的版本號(hào)為4,所以也常稱為IPv4。下一個(gè)IP協(xié)議的版本號(hào)為6,即IPv6,當(dāng)前正在試驗(yàn)中。(2)頭長度頭長度用4位二進(jìn)制數(shù)表示,此域指出整個(gè)報(bào)頭的長度(包括選項(xiàng)),該長度是以32位二進(jìn)制數(shù)為一個(gè)計(jì)數(shù)單位的,接收端通過此域可以計(jì)算出報(bào)文頭在何處結(jié)束及從何處開始讀數(shù)據(jù)。普通IP數(shù)據(jù)報(bào)(沒有任何選項(xiàng))該字段的值是5(即20個(gè)字節(jié)的長度)。(3)服務(wù)類型(TOS,TypeOfService)服務(wù)類型用8位二進(jìn)制數(shù)表示,規(guī)定對本數(shù)據(jù)報(bào)的處理方式。(4)總長度總長度用16位二進(jìn)制數(shù)表示,總長度字段是指整個(gè)IP數(shù)據(jù)報(bào)的長度,以字節(jié)為單位。利用頭部長度字段和總長度字段,就可以計(jì)算出IP數(shù)據(jù)報(bào)中數(shù)據(jù)內(nèi)容的起始位置和長度。由于該字段長度為16位二進(jìn)制數(shù),所以從理論上來說,IP數(shù)據(jù)報(bào)最長可達(dá)65535字節(jié)(實(shí)際由于受物理網(wǎng)絡(luò)的限制,要比這個(gè)數(shù)值小得多)。8.2.5IP數(shù)據(jù)報(bào)格式1.IP數(shù)據(jù)報(bào)各字段的功能(5)生存時(shí)間(TTL,TimeToLive)生存時(shí)間用8位二進(jìn)制數(shù)表示,它指定了數(shù)據(jù)報(bào)可以在網(wǎng)絡(luò)中傳輸?shù)淖铋L時(shí)間。在實(shí)際應(yīng)用中為了簡化處理過程,把生存時(shí)間字段設(shè)置成了數(shù)據(jù)報(bào)可以經(jīng)過的最大路由器數(shù)。TTL的初始值由源主機(jī)設(shè)置(通常為32、64、128或者256),一旦經(jīng)過一個(gè)處理它的路由器,它的值就減去1。當(dāng)該字段的值減為0時(shí),數(shù)據(jù)報(bào)就被丟棄,并發(fā)送ICMP報(bào)文(8.4節(jié)介紹)通知源主機(jī),這樣可以防止進(jìn)入一個(gè)循環(huán)回路時(shí),數(shù)據(jù)報(bào)無休止地傳輸。(6)上層協(xié)議標(biāo)識(shí)上層協(xié)議標(biāo)識(shí)用8位二進(jìn)制數(shù)表示,從圖8-4可知,IP協(xié)議可以承載多種上層協(xié)議,目的端根據(jù)協(xié)議標(biāo)識(shí),就可以把收到的IP數(shù)據(jù)報(bào)送至TCP或UDP等處理此報(bào)文的上層協(xié)議。(7)校驗(yàn)和校驗(yàn)和用16位二進(jìn)制數(shù)表示,這個(gè)域用于協(xié)議頭數(shù)據(jù)有效性的校驗(yàn),可以保證IP報(bào)頭區(qū)在傳輸時(shí)的正確性和完整性。頭部校驗(yàn)和字段是根據(jù)IP協(xié)議頭部計(jì)算出的校驗(yàn)和碼,它不對頭部后面的數(shù)據(jù)進(jìn)行計(jì)算。(8)源地址源地址是用32位二進(jìn)制數(shù)表示的發(fā)送端IP地址。(9)目的地址目的地址是用32位二進(jìn)制數(shù)表示的目的端IP地址。8.2.5IP數(shù)據(jù)報(bào)格式(1)最大傳輸單元MTUIP數(shù)據(jù)報(bào)在互聯(lián)網(wǎng)上傳輸,可能要經(jīng)過多個(gè)物理網(wǎng)絡(luò)才能從源端傳輸?shù)侥康亩?。不同的網(wǎng)絡(luò)由于鏈路層和介質(zhì)的物理特性不同,因此在進(jìn)行數(shù)據(jù)傳輸時(shí),對數(shù)據(jù)幀的最大長度都有一個(gè)限制,這個(gè)限制值即最大傳輸單元MTU(MaximumTransmissionUnit)。(2)分片當(dāng)一個(gè)IP數(shù)據(jù)報(bào)要通過鏈路層進(jìn)行傳輸時(shí),如果IP數(shù)據(jù)報(bào)的長度比鏈路層MTU的值大,那么IP層就需要對將要發(fā)送的IP數(shù)據(jù)報(bào)進(jìn)行分片,把一個(gè)IP數(shù)據(jù)報(bào)分成若干個(gè)長度小于或等于鏈路層MTU的IP數(shù)據(jù)報(bào),才能經(jīng)過鏈路層進(jìn)行傳輸。這種把一個(gè)數(shù)據(jù)報(bào)為了適合網(wǎng)絡(luò)傳輸而分成多個(gè)數(shù)據(jù)報(bào)的過程稱為分片(Fragmentation)。一定要注意,被分片后的各個(gè)IP數(shù)據(jù)報(bào)可能經(jīng)過不同的路徑到達(dá)目的主機(jī)。(3)重組當(dāng)分了片的IP數(shù)據(jù)報(bào)被傳輸?shù)阶罱K目的主機(jī)時(shí),目的主機(jī)要對收到的各分片重新進(jìn)行組裝,以恢復(fù)成源主機(jī)發(fā)送時(shí)的IP數(shù)據(jù)報(bào),這個(gè)過程叫IP數(shù)據(jù)報(bào)的重組。8.2.5IP數(shù)據(jù)報(bào)格式2.IP數(shù)據(jù)報(bào)分片與重組8.3ICMP協(xié)議ICMP報(bào)文和其他協(xié)議的報(bào)文一樣,也是由ICMP報(bào)文頭區(qū)和數(shù)據(jù)區(qū)兩部分組成的。ICMP報(bào)文是封裝在IP數(shù)據(jù)報(bào)中通過鏈路層在網(wǎng)絡(luò)中進(jìn)行傳輸?shù)?,如圖8-9所示。8.3.1ICMP報(bào)文的封裝與格式圖8-9ICMP報(bào)文及封裝格式1.ICMP報(bào)文的封裝ICMP報(bào)文的格式如圖8-10所示,其中報(bào)文頭分為三部分:類型、代碼和校驗(yàn)和。2.ICMP報(bào)文的格式圖8-10ICMP報(bào)文的格式回送請求報(bào)文由源主機(jī)發(fā)出,目的主機(jī)應(yīng)答,用于測試另一臺(tái)主機(jī)或路由器是否可達(dá)。其報(bào)文格式如圖8-11所示。8.3.2ICMP請求與應(yīng)答報(bào)文1.回送請求與應(yīng)答報(bào)文圖8-11回送請求與應(yīng)答ICMP報(bào)文格式在劃分了子網(wǎng)的網(wǎng)絡(luò)中,有些主機(jī)(如無盤工作站)并不知道自己的子網(wǎng)掩碼。ICMP地址掩碼請求報(bào)文可用于主機(jī)在引導(dǎo)過程中獲取自己的子網(wǎng)掩碼,方法是主機(jī)在本網(wǎng)廣播ICMP地址掩碼請求報(bào)文,通常由本網(wǎng)中的路由器向請求主機(jī)發(fā)送一個(gè)ICMP地址掩碼應(yīng)答報(bào)文。地址掩碼請求與應(yīng)答報(bào)文的格式與圖8-16所示的回送請求與應(yīng)答ICMP報(bào)文格式相似,但數(shù)據(jù)區(qū)是一個(gè)4字節(jié)的地址掩碼。掩碼請求報(bào)文的類型字段地址為17,地址掩碼應(yīng)答報(bào)文為18,代碼字段都為0。2.地址掩碼請求與應(yīng)答報(bào)文8.4ARP協(xié)議TCP/IP協(xié)議族專門設(shè)計(jì)了用于地址解析的協(xié)議ARP(AddressResolutionProtocol),它可以把一個(gè)IP地址映射成對應(yīng)的物理地址。另外,對于無法保存IP地址的主機(jī)(如無盤工作站),TCP/IP協(xié)議族中也提供了從物理地址到IP地址映射的反向地址解析協(xié)議RARP(ReverseAddressResolutionProtocol),如圖8-12所示。圖8-12ARP和RARP在常用的以太網(wǎng)中,ARP報(bào)文被封裝成如圖8-13所示的以太網(wǎng)數(shù)據(jù)幀,然后以廣播方式發(fā)送到物理網(wǎng)絡(luò)。ARP報(bào)文格式如圖8-14所示。8.4.1ARP報(bào)文格式圖8-13ARP報(bào)文的以太網(wǎng)封裝格式圖8-14ARP報(bào)文格式8.4.1ARP報(bào)文格式ARP報(bào)文格式說明如下:(1)硬件類型。硬件類型字段占2個(gè)字節(jié),表示發(fā)送者硬件地址的類型。它的值為1即表示以太網(wǎng)地址。(2)協(xié)議類型。協(xié)議類型字段占2個(gè)字節(jié),表示發(fā)送方要映射的協(xié)議地址類型,該字段的常用值如表8-4所示。協(xié)議地址為IP地址時(shí),它的值為0x0800。它的值與包含IP數(shù)據(jù)報(bào)的以太網(wǎng)數(shù)據(jù)幀中的類型字段的值相同。表8-4協(xié)議類型字段常用值(即以太網(wǎng)協(xié)議類型字段)8.4.1ARP報(bào)文格式(3)硬件地址長度和協(xié)議地址長度。硬件地址長度和協(xié)議地址長度各占一個(gè)1字節(jié),分別指出硬件地址和協(xié)議地址的長度,以字節(jié)為單位。對于以太網(wǎng)上IP地址的ARP請求或應(yīng)答來說,它們的值分別為6和4。(4)操作代碼。ARP和RARP在設(shè)計(jì)時(shí)的協(xié)議格式完全相同,只有操作代碼字段可以對它們進(jìn)行區(qū)分。該字段指出四種操作報(bào)文類型:值為1時(shí)表示ARP請求報(bào)文,值為2時(shí)表示ARP應(yīng)答報(bào)文,值為3時(shí)表示RARP請求報(bào)文,值為4時(shí)表示RARP應(yīng)答報(bào)文。(5)發(fā)送方硬件地址和發(fā)送方協(xié)議地址。該地址長度由硬件地址長度字段和協(xié)議地址長度字段指定。(6)目的方硬件地址和目的方協(xié)議地址。該地址長度由硬件地址長度字段和協(xié)議地址長度字段指定。ARP工作時(shí),首先由知道目的主機(jī)IP地址但不知道目的主機(jī)物理地址的主機(jī)發(fā)出一份ARP請求報(bào)文,該報(bào)文中填有發(fā)送方硬件地址、發(fā)送方IP地址和目的方IP地址,操作代碼為1,目的方硬件地址填的是廣播地址(在以太網(wǎng)中為全1),因此該網(wǎng)絡(luò)內(nèi)的所有主機(jī)都可以收到該報(bào)文,其含意是“如果你是這個(gè)IP地址的擁有者,請回答你的硬件地址”。目的主機(jī)的ARP層收到這份廣播報(bào)文后,識(shí)別出這是發(fā)送方在尋問它的IP地址,于是發(fā)送一個(gè)ARP應(yīng)答報(bào)文。這個(gè)ARP應(yīng)答報(bào)文包含它的IP地址及對應(yīng)的硬件地址,操作代碼為2,把原來的發(fā)送方硬件地址和協(xié)議地址填入目的方硬件地址和協(xié)議地址位置,即這時(shí)目的方變成了發(fā)送方,發(fā)送方變成了目的方。請求方收到ARP應(yīng)答報(bào)文后,就可以使用目的方物理地址進(jìn)行IP數(shù)據(jù)報(bào)的發(fā)送了。8.4.2ARP工作原理一臺(tái)主機(jī)向另一臺(tái)主機(jī)發(fā)送數(shù)據(jù)報(bào)后,可能不久還要發(fā)送,如果每發(fā)送一次數(shù)據(jù)報(bào)就進(jìn)行一次ARP請求,那么ARP的工作效率就會(huì)很低。另外,由于ARP請求是以廣播方式發(fā)送的,因此頻繁使用ARP會(huì)使造成網(wǎng)絡(luò)擁擠,影響網(wǎng)絡(luò)的正常工作。解決該問題的關(guān)鍵是使用ARP高速緩存技術(shù)。在網(wǎng)絡(luò)中,每臺(tái)主機(jī)上都有一個(gè)ARP高速緩存,這個(gè)高速緩存存放了最近IP地址到硬件地址之間的映射記錄。高速緩存區(qū)中表項(xiàng)建立的方法是:(1)請求主機(jī)收到ARP應(yīng)答后,主機(jī)就把獲得的IP地址與物理地址的映射關(guān)系存入ARP表中。(2)由于ARP請求報(bào)文是廣播發(fā)送的,所有收到ARP請求報(bào)文的主機(jī)都可以把其中發(fā)送方的物理地址和IP地址映射存入自己的高速緩存中,以備將來使用。(3)網(wǎng)絡(luò)中的主機(jī)在啟動(dòng)時(shí),可以主動(dòng)廣播自己的IP地址和物理地址的映射關(guān)系,以免其他主機(jī)對它提出ARP請求(這也使一臺(tái)主機(jī)在啟動(dòng)時(shí),就可以知道自己的IP地址與網(wǎng)絡(luò)中其他主機(jī)的IP地址有沒有沖突)。8.4.3ARP高速緩存8.5端到端通信和端口號(hào)在互聯(lián)網(wǎng)中,任何兩臺(tái)通信的主機(jī)之間,從源端到目的端的信道都是由一段一段的點(diǎn)到點(diǎn)通信線路組成的(一個(gè)局域網(wǎng)中兩臺(tái)主機(jī)通信時(shí)只有一段點(diǎn)到點(diǎn)的線路)。如圖8-15所示。8.5.1端到端通信圖8-15傳輸層端到端通信為了識(shí)別傳輸層之上不同的網(wǎng)絡(luò)通信程序(進(jìn)程),傳輸層引入了端口的概念。在一臺(tái)主機(jī)上,要進(jìn)行網(wǎng)絡(luò)通信的進(jìn)程首先要向系統(tǒng)提出動(dòng)態(tài)申請,由系統(tǒng)(操作系統(tǒng)內(nèi)核)返回一個(gè)本地惟一的端口號(hào),進(jìn)程再通過系統(tǒng)調(diào)用把自己和這個(gè)特定的端口聯(lián)系在一起,這個(gè)過程叫綁定(Binding)。這樣,每個(gè)要通信的進(jìn)程都與一個(gè)端口號(hào)對應(yīng),傳輸層就可以使用其報(bào)文頭中的端口號(hào),把收到的數(shù)據(jù)送到不同的應(yīng)用程序,如圖8-16所示。8.5.2傳輸層端口圖8-16傳輸層端到端通信在TCP/IP協(xié)議中,傳輸層使用的端口號(hào)用一個(gè)16位的二進(jìn)制數(shù)表示。因此,在傳輸層如果使用TCP協(xié)議進(jìn)行進(jìn)程通信,則可用的端口號(hào)共有216個(gè)。由于UDP也是傳輸層一個(gè)獨(dú)立于TCP的協(xié)議,因此使用UDP協(xié)議時(shí)也有216個(gè)不同的端口。每個(gè)要通信的進(jìn)程在通信之前都要先通過系統(tǒng)調(diào)用動(dòng)態(tài)地申請一個(gè)端口號(hào),TCP/IP協(xié)議在進(jìn)行設(shè)計(jì)時(shí)就把服務(wù)器上守候進(jìn)程的端口號(hào)進(jìn)行了靜態(tài)分配。這些端口號(hào)由Internet號(hào)分配機(jī)構(gòu)IANA(InternetAssignedNumbersAuthority)來管理。一些常用服務(wù)的TCP和UDP的眾所周知端口號(hào)見表8-5和表8-6。8.5.2傳輸層端口表8-5常用的眾所周知的TCP端口號(hào)每個(gè)要通信的進(jìn)程在通信之前都要先通過系統(tǒng)調(diào)用動(dòng)態(tài)地申請一個(gè)端口號(hào),TCP/IP協(xié)議在進(jìn)行設(shè)計(jì)時(shí)就把服務(wù)器上守候進(jìn)程的端口號(hào)進(jìn)行了靜態(tài)分配。這些端口號(hào)由Internet號(hào)分配機(jī)構(gòu)IANA(InternetAssignedNumbersAuthority)來管理。一些常用服務(wù)的TCP和UDP的眾所周知端口號(hào)見表8-5和表8-6。8.5.2傳輸層端口表8-6常用的眾所周知的UDP端口號(hào)256~1023之間的端口號(hào)通常都是由Unix系統(tǒng)占用的,以提供一些特定的Unix服務(wù)。現(xiàn)在IANA管理1~1023之間所有的端口號(hào)。任何TCP/IP實(shí)現(xiàn)所提供的服務(wù)都使用1~1023之間的端口號(hào)。8.6TCP協(xié)議在傳輸層,如果要保證端到端數(shù)據(jù)傳輸?shù)目煽啃?,就要使用TCP協(xié)議。TCP提供一種面向連接的、可靠的數(shù)據(jù)流服務(wù)。因?yàn)樗母呖煽啃裕筎CP協(xié)議成為傳輸層最常用的協(xié)議,同時(shí)也是一個(gè)比較復(fù)雜的協(xié)議。TCP和IP一樣,是TCP/IP協(xié)議族中最重要的協(xié)議。TCP報(bào)文段(常稱為段)與UDP數(shù)據(jù)報(bào)一樣也是封裝在IP中進(jìn)行傳輸?shù)?,只是IP報(bào)文的數(shù)據(jù)區(qū)為TCP報(bào)文段。TCP報(bào)文段的格式如圖8-17所示。8.6.1TCP報(bào)文段格式圖8-17TCP報(bào)文段的格式TCP源端口號(hào)長度為16位,用于標(biāo)識(shí)發(fā)送方通信進(jìn)程的端口。目的端在收到TCP報(bào)文段后,可以用源端口號(hào)和源IP地址標(biāo)識(shí)報(bào)文的返回地址。8.6.1TCP報(bào)文段格式1.TCP源端口號(hào)TCP目的端口號(hào)長度為16位,用于標(biāo)識(shí)接收方通信進(jìn)程的端口。源端口號(hào)與IP頭部中的源端IP地址,目的端口號(hào)與目的端IP地址,這4個(gè)數(shù)就可以惟一確定從源端到目的端的一對TCP連接。2.TCP目的端口號(hào)序列號(hào)長度為32位,用于標(biāo)識(shí)TCP發(fā)送端向TCP接收端發(fā)送數(shù)據(jù)字節(jié)流的序號(hào)。序列號(hào)的實(shí)際值等于該主機(jī)選擇的本次連接的初始序號(hào)ISN(InitialSequenceNumber)加上該報(bào)文段中第一個(gè)字節(jié)在整個(gè)數(shù)據(jù)流中的序號(hào)。由于TCP為應(yīng)用層提供的是全雙工通信服務(wù),這意味著數(shù)據(jù)能在兩個(gè)方向上獨(dú)立地進(jìn)行傳輸,因此,連接的每一端必須保持每個(gè)方向上傳輸數(shù)據(jù)的序列號(hào)到達(dá)232-1后又從0開始。序列號(hào)保證了數(shù)據(jù)流發(fā)送的順序性,是TCP提供的可靠性保證措施之一。3.序列號(hào)確認(rèn)號(hào)長度為32位。因?yàn)榻邮斩耸盏降拿總€(gè)字節(jié)都被計(jì)數(shù),所以確認(rèn)號(hào)可用來標(biāo)識(shí)接收端希望收到的下一個(gè)TCP報(bào)文段第一個(gè)字節(jié)的序號(hào)。確認(rèn)號(hào)包含發(fā)送確認(rèn)的一端希望收到的下一個(gè)字節(jié)的序列號(hào),因此確認(rèn)號(hào)應(yīng)當(dāng)是上次已成功收到數(shù)據(jù)字節(jié)的序列號(hào)加1。確認(rèn)號(hào)字段只有ACK標(biāo)志(下面介紹)為1時(shí)才有效。8.6.1TCP報(bào)文段格式4.確認(rèn)號(hào)該字段用4位二進(jìn)制數(shù)表示TCP頭部的長短,它以32位二進(jìn)制數(shù)為一個(gè)計(jì)數(shù)單位。TCP頭部長度一般為20個(gè)字節(jié),因此通常它的值為5。但當(dāng)頭部包含選項(xiàng)時(shí)該長度是可變的。頭部長度主要用來標(biāo)識(shí)TCP數(shù)據(jù)區(qū)的開始位置,因此又稱為數(shù)據(jù)偏移。5.頭部長度保留字段長度為6位,該域必須置0,準(zhǔn)備為將來定義TCP新功能時(shí)使用。6.保留標(biāo)志域長度為6位,每1位標(biāo)志可以打開或關(guān)閉一個(gè)控制功能,這些控制功能與連接的管理和數(shù)據(jù)傳輸控制有關(guān)。7.標(biāo)志窗口大小字段長度為16位,它是接收端的流量控制措施,用來告訴另一端它的數(shù)據(jù)接收能力。連接的每一端把可以接收的最大數(shù)據(jù)長度(其本質(zhì)為接收端TCP可用的緩沖區(qū)大?。┩ㄟ^TCP發(fā)送報(bào)文段中的窗口字段通知對方,對方發(fā)送數(shù)據(jù)的總長度不能超過窗口大小。窗口的大小用字節(jié)數(shù)表示,它起始于確認(rèn)號(hào)字段指明的值,窗口最大長度為65535個(gè)字節(jié)。通過TCP報(bào)文段頭部的窗口刻度選項(xiàng),它的值可以按比例變化,以提供更大的窗口。8.6.1TCP報(bào)文段格式8.窗口大小校驗(yàn)和字段長度為16位,用于進(jìn)行差錯(cuò)校驗(yàn)。校驗(yàn)和覆蓋了整個(gè)的TCP報(bào)文段的頭部和數(shù)據(jù)區(qū)。9.校驗(yàn)和緊急指針字段長度為16位,只有當(dāng)URG標(biāo)志置1時(shí)緊急指針才有效,它的值指向緊急數(shù)據(jù)最后一個(gè)字節(jié)的位置(如果把它的值與TCP頭部中的序列號(hào)相加,則表示緊急數(shù)據(jù)最后一個(gè)字節(jié)的序號(hào),在有些實(shí)現(xiàn)中指向最后一個(gè)字節(jié)的下一個(gè)字節(jié))。如果URG標(biāo)志沒有被設(shè)置,緊急指針域用0填充。10.緊急指針選項(xiàng)的長度不固定,通過選項(xiàng)使TCP可以提供一些額外的功能。每個(gè)選項(xiàng)由選項(xiàng)類型(占1個(gè)字節(jié))、該選項(xiàng)的總長度(占1個(gè)字節(jié))和選項(xiàng)值組成,如圖8-18所示。8.6.1TCP報(bào)文段格式11.選項(xiàng)填充字段的長度不定,用于填充以保證TCP頭部的長度為32位的整數(shù)倍,值全為0。12.填充圖8-18TCP選項(xiàng)格式在互聯(lián)網(wǎng)中兩臺(tái)要進(jìn)行通信的主機(jī),在一般情況下,總是其中的一臺(tái)主動(dòng)提出通信的請求(客戶機(jī)),另一臺(tái)被動(dòng)地響應(yīng)(服務(wù)器)。如果傳輸層使用TCP協(xié)議,則在通信之前要求通信的雙方首先要建立一條連接。TCP使用“3次握手”(3-wayHandshake)法來建立一條連接。所謂3次握手,就是指在建立一條連接時(shí)通信雙方要交換3次報(bào)文。具體過程如下。第1次握手:由客戶機(jī)的應(yīng)用層進(jìn)程向其傳輸層TCP協(xié)議發(fā)出建立連接的命令,則客戶機(jī)TCP向服務(wù)器上提供某特定服務(wù)的端口發(fā)送一個(gè)請求建立連接的報(bào)文段,該報(bào)文段中SYN被置1,同時(shí)包含一個(gè)初始序列號(hào)x(系統(tǒng)保持著一個(gè)隨時(shí)間變化的計(jì)數(shù)器,建立連接時(shí)該計(jì)數(shù)器的值即為初始序列號(hào),因此不同的連接初始序列號(hào)不同)。第2次握手:服務(wù)器收到建立連接的請求報(bào)文段后,發(fā)送一個(gè)包含服務(wù)器初始序號(hào)y,SYN被置1,確認(rèn)號(hào)置為x+1的報(bào)文段作為應(yīng)答。確認(rèn)號(hào)加1是為了說明服務(wù)器已正確收到一個(gè)客戶連接請求報(bào)文段,因此從邏輯上來說,一個(gè)連接請求占用了一個(gè)序號(hào)。第3次握手:客戶機(jī)收到服務(wù)器的應(yīng)答報(bào)文段后,也必須向服務(wù)器發(fā)送確認(rèn)號(hào)為y+1的報(bào)文段進(jìn)行確認(rèn)。同時(shí)客戶機(jī)的TCP協(xié)議層通知應(yīng)用層進(jìn)程,連接已建立,可以進(jìn)行數(shù)據(jù)傳輸了。8.6.2TCP連接的建立與關(guān)閉1.建立連接通過以上3次握手,兩臺(tái)要通信的主機(jī)之間就建立了一條連接,相互知道對方的哪個(gè)進(jìn)程在與自己進(jìn)行通信,通信時(shí)對方傳輸數(shù)據(jù)的順序號(hào)應(yīng)該是多少。連接建立后通信的雙方可以相互傳輸數(shù)據(jù),并且雙方的地位是平等的。如果在建立連接的過程中握手報(bào)文段丟失,則可以通過重發(fā)機(jī)制進(jìn)行解決。如果服務(wù)器端關(guān)機(jī),則客戶端收不到服務(wù)器端的確認(rèn),客戶端按某種機(jī)制重發(fā)建立連接的請求報(bào)文段若干次后,就通知應(yīng)用進(jìn)程,連接不能建立(超時(shí))。還有一種情況是當(dāng)客戶請求的服務(wù)在服務(wù)器端沒有對應(yīng)的端口提供時(shí),服務(wù)器端以一個(gè)復(fù)位報(bào)文應(yīng)答(RST=1),連接也不能建立。最后要說明一點(diǎn),建立連接的TCP報(bào)文段中只有報(bào)文頭(無選項(xiàng)時(shí)長度為20個(gè)字節(jié)),沒有數(shù)據(jù)區(qū)。8.6.2TCP連接的建立與關(guān)閉1.建立連接由于TCP是一個(gè)全雙工協(xié)議,因此在通信過程中兩臺(tái)主機(jī)都可以獨(dú)立地發(fā)送數(shù)據(jù),完成數(shù)據(jù)發(fā)送的任何一方可以提出關(guān)閉連接的請求。關(guān)閉連接時(shí),由于在每個(gè)傳輸方向既要發(fā)送一個(gè)關(guān)閉連接的報(bào)文段,又要接收對方的確認(rèn)報(bào)文段,因此關(guān)閉一個(gè)連接要經(jīng)過4次握手。具體過程如下(下面設(shè)客戶機(jī)首先提出關(guān)閉連接的請求):第1次握手:由客戶機(jī)的應(yīng)用進(jìn)程向其TCP協(xié)議層發(fā)出終止連接的命令,則客戶TCP協(xié)議層向服務(wù)器TCP協(xié)議層發(fā)送一個(gè)FIN被置1的關(guān)閉連接的TCP報(bào)文段。第2次握手:服務(wù)器的TCP協(xié)議層收到關(guān)閉連接的報(bào)文段后,就發(fā)出確認(rèn),確認(rèn)號(hào)為已收到的最后一個(gè)字節(jié)的序列號(hào)加1,同時(shí)把關(guān)閉的連接通知其應(yīng)用進(jìn)程,告訴它客戶機(jī)已經(jīng)終止了數(shù)據(jù)傳送。在發(fā)送完確認(rèn)后,服務(wù)器如
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 共享服務(wù)合同的創(chuàng)新發(fā)展趨勢展望
- 江蘇省江陰市璜土中學(xué)高中地理 4.1區(qū)域農(nóng)業(yè)發(fā)展-以我國東北地區(qū)為例教案2 新人教版必修3
- 2024-2025學(xué)年高中語文 第四單元 有無相生教案6 新人教版選修《先秦諸子選讀》
- 九年級(jí)化學(xué)下冊 第12單元 化學(xué)與生活教案 (新版)新人教版
- 2024-2025學(xué)年高中歷史下學(xué)期第13周 羅斯福新政教學(xué)設(shè)計(jì)
- 2024六年級(jí)語文下冊 第六單元 古詩詞誦讀 5 江上漁者教學(xué)設(shè)計(jì)+教案+素材 新人教版
- 2024-2025學(xué)年上海市浦東新區(qū)七年級(jí)上英語期中試卷(含答案和音頻)
- 雨花石音樂課件
- 發(fā)現(xiàn)規(guī)律 課件
- 剖宮產(chǎn)手術(shù)課件
- 粒子物理基礎(chǔ)
- 珠寶首飾制作倒模工藝流程
- 2023年象山縣特殊教育崗位教師招聘考試筆試題庫及答案解析
- YY/T 1760-2021一次性使用腹膜透析引流器
- GB/T 41365-2022中藥材種子(種苗)白術(shù)
- GB/T 34570.1-2017電動(dòng)工具用可充電電池包和充電器的安全第1部分:電池包的安全
- GB/T 12527-2008額定電壓1 kV及以下架空絕緣電纜
- 一級(jí)建造師考試題庫及答案(全國通用)
- 公司社會(huì)責(zé)任管理制度
- 思想政治工作和文化工作理論1
- 2022屆北京市東城區(qū)高三語文一模語文試卷講評(píng)課件
評(píng)論
0/150
提交評(píng)論