J基礎(chǔ)篇_第2章網(wǎng)絡(luò)模型及TCPIP協(xié)議簇cll_第1頁
J基礎(chǔ)篇_第2章網(wǎng)絡(luò)模型及TCPIP協(xié)議簇cll_第2頁
J基礎(chǔ)篇_第2章網(wǎng)絡(luò)模型及TCPIP協(xié)議簇cll_第3頁
J基礎(chǔ)篇_第2章網(wǎng)絡(luò)模型及TCPIP協(xié)議簇cll_第4頁
J基礎(chǔ)篇_第2章網(wǎng)絡(luò)模型及TCPIP協(xié)議簇cll_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第二章 網(wǎng)絡(luò)模型與TCP/IP協(xié)議簇2.1 概論 TCP/IP起源于1969年美國國防部(DOD:The United States Department Of Defense)高級(jí)研究項(xiàng)目管理局(APRA:Advanced Resarch Projects Agency)對(duì)有關(guān)分組交換的廣域網(wǎng)(Packet-Switched wide-area network)科研項(xiàng)目,因此起初的網(wǎng)絡(luò)稱為ARPANET。1973年TCP(傳輸控制協(xié)議)正式投入使用,1981年IP(網(wǎng)際協(xié)議)協(xié)議投入使用,1983年TCP/IP協(xié)議正式被集成到美國加州大學(xué)伯克利分校的UNIX版本中,該“網(wǎng)絡(luò)版”操作系統(tǒng)適應(yīng)了

2、當(dāng)時(shí)各大學(xué)、機(jī)關(guān)、企業(yè)的旺盛的連網(wǎng)需求,因而隨著該免費(fèi)分發(fā)的操作系統(tǒng)的廣泛使用,TCP/IP協(xié)議得到了流傳。TCP/IP技術(shù)得到了眾多廠商的支持,不久就有了很多分散的網(wǎng)絡(luò)。所有這些單個(gè)的TCP/IP網(wǎng)絡(luò)都互聯(lián)起來稱為INTERNET?;赥CP/IP協(xié)議的Internet已逐步發(fā)展成為當(dāng)今世界上規(guī)模最大、擁有用戶和資源最多的一個(gè)超大型計(jì)算機(jī)網(wǎng)絡(luò),TCP/IP協(xié)議也因此成為事實(shí)上的工業(yè)標(biāo)準(zhǔn)。IP網(wǎng)絡(luò)正逐步成為當(dāng)代乃至未來計(jì)算機(jī)網(wǎng)絡(luò)的主流。 本章主要對(duì)TCP/IP協(xié)議組件進(jìn)行概述,著重介紹TCP/IP協(xié)議簇模型及各層次協(xié)議的處理機(jī)制。2.2 網(wǎng)絡(luò)模型與TCP/IP協(xié)議簇早在TCP/IP協(xié)議出現(xiàn)之前

3、,國際標(biāo)準(zhǔn)化組織(ISO)就提出了開放系統(tǒng)互連(OSI)網(wǎng)絡(luò)模型,為網(wǎng)絡(luò)的設(shè)計(jì)、開發(fā)、編程、維護(hù)提供了便利的分而治之的思想,其先進(jìn)性、科學(xué)性、實(shí)用性是不言而喻的。TCP/IP協(xié)議不是單純的兩個(gè)協(xié)議,是一組不同層次上的多個(gè)協(xié)議的組合,常稱為TCP/IP協(xié)議簇或者互聯(lián)網(wǎng)協(xié)議簇,為實(shí)現(xiàn)整個(gè)網(wǎng)絡(luò)的互聯(lián)提供指導(dǎo),其層次組合已很難用OSI的七層模型來套用,它是OSI模型的濃縮,將原來的七層模型合并為四層協(xié)議的體系結(jié)構(gòu),自頂向下分別是應(yīng)用層、傳輸層、網(wǎng)絡(luò)層和鏈路層,沒有OSI參考模型的會(huì)話層和表示層,一般認(rèn)為TCP/IP的會(huì)話和表示功能是在傳輸層完成的。OSI參考模型和TCP/IP協(xié)議簇兩者結(jié)構(gòu)如圖2-1所

4、示。OSI TCP/IP應(yīng)用層應(yīng)用層表示層會(huì)話層傳輸層傳輸層網(wǎng)絡(luò)層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層鏈路層物理層圖2-1 網(wǎng)絡(luò)模型與TCP/IP協(xié)議簇 每一層的功能如下:鏈路層:有時(shí)也稱作數(shù)據(jù)鏈路層或網(wǎng)絡(luò)接口層,通常包括操作系統(tǒng)中的設(shè)備驅(qū)動(dòng)程序和計(jì)算機(jī)中對(duì)應(yīng)的網(wǎng)絡(luò)接口卡。它們一起處理與電纜(或其他任何傳輸媒介)的物理接口細(xì)節(jié)。在TCP/IP協(xié)議簇中,鏈路層的協(xié)議比較多,它決定了網(wǎng)絡(luò)形態(tài),但很多都不是專門為TCP/IP設(shè)計(jì)的。常用的鏈路層協(xié)議包括: 以太網(wǎng)協(xié)議、PPP協(xié)議、幀中繼協(xié)議、ATM等。網(wǎng)絡(luò)層:有時(shí)也稱作互連網(wǎng)層,處理分組在網(wǎng)絡(luò)中的活動(dòng),例如分組的路由選擇。在TCP/IP協(xié)議簇中,網(wǎng)絡(luò)層協(xié)議包括IP協(xié)議(

5、網(wǎng)際協(xié)議),ICMP協(xié)議(Internet互連網(wǎng)控制報(bào)文協(xié)議),ARP/RARP(地址解析/逆向地址解析協(xié)議),以及IGMP協(xié)議(Internet組管理協(xié)議)。傳輸層:主要為兩臺(tái)主機(jī)上的應(yīng)用程序提供端到端的通信。在TCP/IP協(xié)議簇中,有兩個(gè)互不相同的傳輸協(xié)議:TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報(bào)協(xié)議),它們分別承載不同的應(yīng)用。應(yīng)用層:負(fù)責(zé)處理特定的應(yīng)用程序細(xì)節(jié)。幾乎各種不同的TCP/IP實(shí)現(xiàn)都會(huì)提供下面這些通用的應(yīng)用程序: Telnet 遠(yuǎn)程登錄 FTP 文件傳輸協(xié)議 SMTP 用于電子郵件的簡單郵件傳輸協(xié)議 SNMP 簡單網(wǎng)絡(luò)管理協(xié)議 嚴(yán)格來講,分層模型的動(dòng)機(jī)就是將各層的功能盡量獨(dú)立

6、,每層的功能對(duì)另一層來說是透明的,只對(duì)通信的另一端負(fù)責(zé),為編程和診斷提供良好的層次隔離,然而實(shí)際情況并非如此,首先軟件編程上完全按照分層模型來做,編程效率會(huì)降低,與其分層,不如按功能實(shí)現(xiàn)來模塊化。其次,對(duì)于許多功能實(shí)現(xiàn)來說,必須實(shí)現(xiàn)兩層子間的交互,這又違背了當(dāng)初的出發(fā)點(diǎn),比如鏈路層在成幀時(shí)需要接收端的物理地址,該地址必須由網(wǎng)絡(luò)層處理ARP地址解析才行,簡單地將ARP放在那一層都有些牽強(qiáng)。所以說,分層模型對(duì)于理解網(wǎng)絡(luò)的抽象性是有益處的,它有助于指導(dǎo)網(wǎng)絡(luò)入門,但并不是網(wǎng)絡(luò)的精髓,只有結(jié)合具體的系統(tǒng)分析才有實(shí)際意義。2.2.1 TCP/IP封裝過程 如下圖2-2分析TCP/IP的封裝是如何進(jìn)行的。數(shù)

7、據(jù)由文本username組成,它被封裝在傳輸層的段中,該段再封裝到網(wǎng)絡(luò)層報(bào)文包中,網(wǎng)絡(luò)層報(bào)文包再封裝到數(shù)據(jù)鏈路幀,以便在所選的介質(zhì)上傳送。當(dāng)系統(tǒng)接收到數(shù)據(jù)時(shí),是拆封/多路分解過程。當(dāng)數(shù)據(jù)沿著協(xié)議棧向上傳遞時(shí),檢查幀的格式,決定網(wǎng)絡(luò)類型,并去掉幀的格式,檢查內(nèi)含的報(bào)文包,決定傳輸協(xié)議。數(shù)據(jù)由某個(gè)傳輸層處理,最后數(shù)據(jù)遞交給正確的應(yīng)用程序。 路由器提示: username: 傳輸層: 傳輸層數(shù)據(jù)段頭(SP、DP)數(shù)據(jù)(username:) 網(wǎng)絡(luò)層: 網(wǎng)絡(luò)層數(shù)據(jù)包頭(SA、DA)傳輸層數(shù)據(jù)段 數(shù)據(jù)鏈路層: 數(shù)據(jù)鏈路層幀頭(DMAC、SMAC)網(wǎng)絡(luò)層數(shù)據(jù)包TR圖2-2 TCP/IP封裝2.2.2 協(xié)議棧

8、多路復(fù)用圖2-3 TCP/IP協(xié)議多路復(fù)用 在TCP/IP協(xié)議棧各個(gè)層次中的段、報(bào)文包和幀頭部中都有控制字節(jié),對(duì)于傳送數(shù)據(jù)時(shí),是標(biāo)識(shí)數(shù)據(jù)源;對(duì)于接收數(shù)據(jù)時(shí),是標(biāo)識(shí)處理數(shù)據(jù)的上層。圖2-3說明了TCP/IP協(xié)議棧內(nèi)部的控制字節(jié)。當(dāng)從物理介質(zhì)收到幀時(shí),以太網(wǎng)控制器只將幀的MAC地址與控制器卡的(包括接口所認(rèn)識(shí)的廣播及多路廣播地址)MAC地址一致的報(bào)文傳遞到上層。以太網(wǎng)軟件接收幀并檢查協(xié)議類型代碼以決定幀中數(shù)據(jù)類型,如代碼0x800表明所封裝的是IP報(bào)文包,0806表明所封裝的是ARP報(bào)文包。網(wǎng)絡(luò)層報(bào)文包由IP處理。檢查IP頭部及目的地址的有效性,若目的地址是本系統(tǒng)的,檢查報(bào)文協(xié)議標(biāo)識(shí)碼(ID)。協(xié)

9、議ID決定哪個(gè)協(xié)議應(yīng)該接收此數(shù)據(jù)包。如協(xié)議代碼6表示TCP,協(xié)議代碼17表示UDP。接下來通過檢查TCP段或UDP數(shù)據(jù)報(bào)文以確定端口號(hào),從而識(shí)別由哪個(gè)應(yīng)用接收數(shù)據(jù)。如端口號(hào)23留給Telnet,端口號(hào)25留給SMTP。 TCP/IP協(xié)議簇的內(nèi)涵十分豐富,并非只有TCP和IP兩個(gè)協(xié)議,它已經(jīng)圍繞IP發(fā)展成為了一個(gè)龐大的家族,這里我們將介紹TCP/IP協(xié)議簇中最常見、最重要的部分。2.3 鏈路層協(xié)議 根據(jù)分層操作的思想,每一層對(duì)上一層送來的數(shù)據(jù)進(jìn)行處理時(shí)要加上一個(gè)報(bào)頭(首部信息),有時(shí)還要加上尾部信息,這稱為數(shù)據(jù)包封裝。 鏈路層的工作是將IP數(shù)據(jù)包按照鏈路協(xié)議定義的格式進(jìn)行封裝,并按照硬件接口的編

10、碼方式轉(zhuǎn)成合適的基帶信號(hào)發(fā)送到傳輸介質(zhì)上。該層數(shù)據(jù)一般稱為數(shù)據(jù)幀。常見的以太網(wǎng)(IEEE 802.3等)、令牌環(huán)網(wǎng)(IEEE 802.5)、幀中繼、ATM、HDLC、PPP、Q.921都是鏈路層協(xié)議,但每個(gè)協(xié)議的封裝格式各不相同。例如以太網(wǎng)(Ethernet II)協(xié)議的封裝格式如圖2-4。前導(dǎo)碼目的地址源地址協(xié)議類型數(shù)據(jù)CRC8字節(jié)6字節(jié)6字節(jié)2字節(jié)461500字節(jié)4字節(jié)圖2-4 常見的以太網(wǎng)(Ethernet II)協(xié)議的封裝格式 兩字節(jié)的協(xié)議類型字段用來識(shí)別封裝的協(xié)議類型:0800表示封裝的是IP數(shù)據(jù)包,0806表示封裝的是ARP地址解析請(qǐng)求/應(yīng)答數(shù)據(jù)包,8035表示封裝的是RARP請(qǐng)求

11、/應(yīng)答數(shù)據(jù)包,8137表示封裝的是IPX數(shù)據(jù)包。封裝好的數(shù)據(jù)幀在線路空閑時(shí)(用CSMA/CD載波偵聽多路存取/碰撞檢測(cè)的方法來檢測(cè))按照曼徹斯特編碼將數(shù)據(jù)轉(zhuǎn)成高低電平發(fā)送到線路上。 線速路由器中常用的一種鏈路層幀格式為點(diǎn)到點(diǎn)協(xié)議(PPP)中的HDLC幀格式,IP數(shù)據(jù)包被封裝成ISO HDLC幀格式,然后再映射進(jìn)同步數(shù)字序列SDH中去透明傳輸,路由器上這樣的接口常稱為POS接口(Packet over SDH)。PPP in HDLC幀格式如圖2-5所示。標(biāo)記地址控制協(xié)議數(shù)據(jù)幀校驗(yàn)7EFF032 字節(jié)1500字節(jié)1字節(jié)圖2-5 PPP in HDLC幀格式 協(xié)議字段為0021時(shí)表示數(shù)據(jù)部分為IP

12、數(shù)據(jù)包,C021表示數(shù)據(jù)部分為LCP鏈路控制協(xié)議,8021為NCP網(wǎng)絡(luò)控制協(xié)議,C023為PAP密碼驗(yàn)證,C223為CHAP質(zhì)詢握手驗(yàn)證協(xié)議。2.4 網(wǎng)絡(luò)層協(xié)議 比較嚴(yán)格的說網(wǎng)絡(luò)層的協(xié)議就是IP,ICMP、ARP/RARP是幫助IP完成尋址的功能,因此也被認(rèn)為是第三層的協(xié)議。2.4.1 IP協(xié)議 全球INTERNET網(wǎng)的廣泛應(yīng)用使IP協(xié)議深入人心。IP協(xié)議以其簡單、有效、開放性成為事實(shí)上的工業(yè)標(biāo)準(zhǔn)。IP協(xié)議使異種網(wǎng)互聯(lián)方便可行,尤其值得一提的是它對(duì)下層通信技術(shù)有巨大包容性。 IP協(xié)議作為通信子網(wǎng)的最高層,提供無連接的數(shù)據(jù)報(bào)傳輸機(jī)制。IP協(xié)議是點(diǎn)到點(diǎn)的,核心問題是尋徑。它向上層提供統(tǒng)一的IP數(shù)據(jù)

13、報(bào),使得各種物理幀的差異性對(duì)上層協(xié)議不復(fù)存在?;ミB網(wǎng)協(xié)議IP是TCP/IP體系中兩個(gè)最重要的協(xié)議之一。與IP協(xié)議配套使用的還有三個(gè)協(xié)議: 地址轉(zhuǎn)換協(xié)議ARP(Address Resolution Protocol)反向地址轉(zhuǎn)換協(xié)議RARP(Reverse Address Resolution Protocol) Internet控制報(bào)文協(xié)議ICMP(Internet Control Message Protcol)Telnet,F(xiàn)TP,TFTPTCP,UDPICMPARPRARPIP圖2-6 IP協(xié)議及其相關(guān)協(xié)議 如圖2-6中畫出了這三個(gè)協(xié)議和IP協(xié)議的關(guān)系。在這一層中,ARP和RARP畫在最

14、下面,因?yàn)镮P經(jīng)常要使用著兩個(gè)協(xié)議。ICMP畫在這一層的上部,因?yàn)樗褂肐P協(xié)議。 下圖2-7是IP數(shù)據(jù)報(bào)的格式。首部20字節(jié)固定長度0 1 234567優(yōu)先級(jí)DTRC未用4位版本4位首部長度8位服務(wù)類型(TOS)16位總長度16位標(biāo)識(shí)3位標(biāo)志13位片偏移8位生存時(shí)間(TTL)8位協(xié)議標(biāo)識(shí)16位首部檢驗(yàn)和32位源IP地址可變長度32位目的IP地址長度可變的任選字段填充數(shù)據(jù)圖2-7 TP數(shù)據(jù)報(bào)格式從上圖可看出,一個(gè)IP數(shù)據(jù)報(bào)由首部和數(shù)據(jù)兩部分組成。首部的前一部分長度是固定的20個(gè)字節(jié),后面部分的長度則是可變長度。下面介紹首部各字段的意義。版本,該字段占4bit,指IP協(xié)議的版本。通信雙方使用的

15、IP協(xié)議的版本必須一致。目前使用的IP協(xié)議版本為4,下一代的版本為IPv6。首部長度,該字段占4bit,可表示的最大數(shù)值是15個(gè)單位(一個(gè)單位為4字節(jié)),因此IP的首部長度的最大值是60字節(jié)。普通IP數(shù)據(jù)包是沒有任選項(xiàng)的,因此該字段的值為5。如果有任選項(xiàng),該字段值最大為15。路由器收到IP包后對(duì)此字段要做檢查,帶任選項(xiàng)的IP數(shù)據(jù)包在轉(zhuǎn)發(fā)前要做特殊處理。當(dāng)IP分組的首部長度不是4字節(jié)的整數(shù)倍時(shí),必須利用最后一個(gè)填充字段加以填充。這樣,數(shù)據(jù)部分永遠(yuǎn)在4字節(jié)的整數(shù)倍時(shí)開始,實(shí)現(xiàn)起來會(huì)比較方便。服務(wù)類型,該字段共8位長,前三個(gè)比特表示優(yōu)先級(jí),它可使數(shù)據(jù)報(bào)具有8個(gè)優(yōu)先級(jí)中的一個(gè)。第4個(gè)比特是D比特,表示

16、要求有最小延遲。第5個(gè)比特是T比特,表示要求有最大吞吐量。第6個(gè)比特是R比特,表示要求有更高的可靠性,即在數(shù)據(jù)報(bào)傳遞過程中,被結(jié)點(diǎn)交換機(jī)丟棄的概率要更小些。第7個(gè)比特是C比特,是新增加的,表示要求用最小費(fèi)用進(jìn)行傳輸。最后一個(gè)比特目前尚未使用。其意義見圖6的上面部分所示。RFC1349、RFC1340文件對(duì)不同的應(yīng)用定義了建議的TOS值,如Telnet和Rlogin這樣的交互應(yīng)用要求最小的傳輸時(shí)延,而Ftp文件傳輸需要最大的吞吐量,網(wǎng)絡(luò)管理和路由協(xié)議需要最大的可靠性,用戶網(wǎng)絡(luò)新聞(Usenet news)需要最小費(fèi)用??傞L度,該字段為16位,指明該IP數(shù)據(jù)包的長度(即首部和數(shù)據(jù)之和的長度),單位

17、為字節(jié)??傞L度字段為16bit,因此數(shù)據(jù)報(bào)的最大長度為65535字節(jié)(64K字節(jié))。一般不可能達(dá)到這么大的值,因?yàn)殒溌穼訉?duì)數(shù)據(jù)幀的長度有明確限制,該限制稱為最大傳輸單元(MTU),IP數(shù)據(jù)包長度小于MTU長度,典型的以太網(wǎng)MTU為1500字節(jié)。當(dāng)很長的數(shù)據(jù)報(bào)要分段進(jìn)行傳送時(shí),“總長度”不是指未分段前的數(shù)據(jù)報(bào)長度,而是指分段后每個(gè)段的首部長度與數(shù)據(jù)長度的總和。該字段的另一個(gè)作用是接收到從鏈路層上傳的數(shù)據(jù)包后用來決定有用的數(shù)據(jù)包長度,因?yàn)橛行┳止?jié)可能是無用的填充字節(jié),是為了達(dá)到鏈路層所要求的最短幀長度要求而填充進(jìn)去的。標(biāo)識(shí),該字段為16位,是為了使分段后的各數(shù)據(jù)報(bào)段最后能準(zhǔn)確地重裝成為原來的數(shù)據(jù)報(bào)

18、。請(qǐng)注意:這里的“標(biāo)識(shí)”并沒有順序號(hào)的意思,因?yàn)镮P是無連接服務(wù),數(shù)據(jù)報(bào)不存在按序接收的問題。源主機(jī)發(fā)出IP數(shù)據(jù)包時(shí)是不存在IP分組的,只有路由器從一個(gè)MTU較大的接口接收到IP包后又從一MTU較小的接口發(fā)送出去時(shí)才需要分組。接收端根據(jù)該字段和后面的偏移字段的值將分組的IP碎包重新組裝成原始的包。標(biāo)志,該字段為3位,目前只有前兩個(gè)比特有意義。標(biāo)志字段中的最低位記為MF(More Fragment),MF=1即表示后面還有分段的數(shù)據(jù)報(bào),MF=0表示這已是若干數(shù)據(jù)報(bào)段中的最后一個(gè)。中間的一位記為DF(Dont Fragment),是用來測(cè)試網(wǎng)絡(luò)中的各段MTU大小的,只有當(dāng)DF=0時(shí)才允許分段。片偏

19、移,該字段為13位,其意義和OSI的IPDU中規(guī)定的相似,只是表示的單位不同。這里是以8個(gè)字節(jié)為偏移單位??梢奍P數(shù)據(jù)報(bào)的片偏移字段(13bit長)和OSI的IPDU的片偏移字段(16bit長)是相當(dāng)?shù)摹I鏁r(shí)間,該字段為8位,單位為秒。生存時(shí)間設(shè)置了數(shù)據(jù)包可以經(jīng)過的最多路由器數(shù),目的是防止數(shù)據(jù)包在網(wǎng)絡(luò)上的無限循環(huán),占用網(wǎng)絡(luò)帶寬,甚至引起網(wǎng)絡(luò)風(fēng)暴。該值由源主機(jī)設(shè)置(通常為32或64),一旦經(jīng)過一個(gè)路由器,該路由器將它減1,當(dāng)某路由器檢查該值為1并且目的地址不在該路由器直聯(lián)的網(wǎng)絡(luò)上時(shí),該數(shù)據(jù)包就被丟棄,并發(fā)送一條ICMP報(bào)文通知源主機(jī)。當(dāng)TTL值改變后,首部檢驗(yàn)和也要改變。通常路由器在轉(zhuǎn)發(fā)IP數(shù)

20、據(jù)包時(shí),僅僅改變這兩個(gè)字段。協(xié)議標(biāo)識(shí),該字段為8位,它指出此數(shù)據(jù)攜帶的傳輸層數(shù)據(jù)是使用何種協(xié)議,以便目的主機(jī)的IP層知道應(yīng)將此數(shù)據(jù)報(bào)上交給哪個(gè)進(jìn)程。如協(xié)議標(biāo)識(shí)為6表示封裝的是TCP(傳輸控制協(xié)議)數(shù)據(jù)包,協(xié)議標(biāo)識(shí)為17表示封裝的是UDP(用戶數(shù)據(jù)包協(xié)議)數(shù)據(jù)包,協(xié)議標(biāo)識(shí)為89表示封裝的是OSPF(開發(fā)最短路徑優(yōu)先)數(shù)據(jù)包,協(xié)議標(biāo)識(shí)為1表示封裝的是ICMP(網(wǎng)際控制報(bào)文協(xié)議)數(shù)據(jù)包,協(xié)議標(biāo)識(shí)為2表示封裝的是IGMP(網(wǎng)際組管理協(xié)議)數(shù)據(jù)包,協(xié)議標(biāo)識(shí)為46表示封裝的是RSVP(資源預(yù)留協(xié)議)數(shù)據(jù)包。首部檢驗(yàn)和,該字段為16位,此字段只檢驗(yàn)數(shù)據(jù)報(bào)的首部,不包括數(shù)據(jù)部分。不檢驗(yàn)數(shù)據(jù)部分是因?yàn)閿?shù)據(jù)報(bào)每經(jīng)

21、過一個(gè)結(jié)點(diǎn),結(jié)點(diǎn)處理機(jī)就要重新計(jì)算一下首部檢驗(yàn)和(一些字段,如壽命、標(biāo)志、段偏移等都可能發(fā)生變化)。如將數(shù)據(jù)部分一起檢驗(yàn),計(jì)算的工作量就太大了。首部檢驗(yàn)和的計(jì)算過程是:先將該字段置為0,然后對(duì)首部中每個(gè)16比特進(jìn)行二進(jìn)制反碼求和,將結(jié)果存在檢驗(yàn)和字段中。當(dāng)路由器收到一份IP數(shù)據(jù)包后,同樣對(duì)首部中每個(gè)16比特進(jìn)行二進(jìn)制反碼求和,如果結(jié)果為FF才表示IP數(shù)據(jù)包正確。出錯(cuò)的數(shù)據(jù)包將被丟棄,但不發(fā)送ICMP報(bào)文,上層協(xié)議可以檢測(cè)到出錯(cuò)并對(duì)該數(shù)據(jù)包重傳。地址,源站IP地址字段和目的站IP地址字段都各占4字節(jié)。任選項(xiàng),該字段為32位,如果長度不足32比特要用0作填充。任選字段用來支持排錯(cuò)、測(cè)量以及安全等措

22、施,內(nèi)容很豐富。此字段的長度可變,從一個(gè)字節(jié)到40個(gè)字節(jié)不等,取決于所選擇的項(xiàng)目。其主要選項(xiàng)有以下幾種: 1)安全和處理限制 2)記錄路徑,轉(zhuǎn)發(fā)的路由器在此記錄IP地址 3)時(shí)間戳,供路由器記錄IP地址和時(shí)間 4)寬松源站選路,指定IP包必須經(jīng)過的IP地址 5)嚴(yán)格源站選路,要求IP包只能經(jīng)過指定的這些地址2.4.2 互聯(lián)網(wǎng)控制消息協(xié)議ICMP IP數(shù)據(jù)報(bào)在端對(duì)端傳輸方式下,由于網(wǎng)關(guān)(GateWay)自主地完成尋徑和報(bào)文傳輸服務(wù),不需要信源主機(jī)的參與,而對(duì)于傳輸過程來說,發(fā)生傳輸錯(cuò)誤是不可避免的,也是很自然的,比如說當(dāng)某個(gè)IP包中的IP目的地址根本不存在時(shí)自然就無法傳送;或某一網(wǎng)關(guān)因?yàn)榫彌_區(qū)滿

23、,超過它的處理能力和速度的話,它就無法正常中繼或接收數(shù)據(jù)報(bào)了。這樣的話,一旦發(fā)生了傳輸錯(cuò)誤,信源主機(jī)如何才能夠知道并且進(jìn)行相應(yīng)的處理呢?對(duì)于IP協(xié)議本身來說,并不存在一種內(nèi)在機(jī)制來獲取上述的差錯(cuò)信息,從而進(jìn)行相應(yīng)處理。因此,在網(wǎng)絡(luò)通信中提供一種手段,對(duì)傳輸過程提供出錯(cuò)時(shí)的報(bào)告和有關(guān)路徑、流量等的控制,是十分必要的。與此同時(shí),也增加了網(wǎng)絡(luò)之間傳輸?shù)目煽匦院涂煽啃?。ICMP協(xié)議就是這樣一種提供網(wǎng)間報(bào)錯(cuò)和控制信息的手段,它為IP協(xié)議加上了一種差錯(cuò)報(bào)告和控制的機(jī)制。乍看起來,ICMP是對(duì)IP協(xié)議的有利補(bǔ)充,是與之相分離的。實(shí)際上,它應(yīng)該是IP協(xié)議族中不可或缺的部分,必須體現(xiàn)在每一個(gè)IP的實(shí)現(xiàn)之中。由此

24、可見它與IP協(xié)議的緊密關(guān)系。ICMP協(xié)議的功能及其實(shí)現(xiàn),跟IP協(xié)議一樣,體現(xiàn)為一種報(bào)文格式ICMP報(bào)文,或稱ICMP包,可以像其他報(bào)文一樣尋找路由,ICMP消息是一個(gè)獨(dú)立的消息,沒有流控及應(yīng)答機(jī)制。 雖然IP數(shù)據(jù)報(bào)的傳送不保證不丟失,但互連網(wǎng)層對(duì)數(shù)據(jù)報(bào)的傳送還是有一定的質(zhì)量保證功能,這就是使用Internet控制消息協(xié)議ICMP(Internet Control Message Protocol)。ICMP是IP控制及錯(cuò)誤消息協(xié)議,是集差錯(cuò)報(bào)告和控制于一身的協(xié)議,它通過ICMP消息傳遞差錯(cuò)報(bào)告或控制信息,消息傳遞可發(fā)生在主機(jī)、路由器,主機(jī)、主機(jī)或路由器、路由器之間。ICMP消息的接收者根據(jù)消息

25、類型采取相應(yīng)的措施。ICMP不是高層協(xié)議,它仍是互連網(wǎng)層中的協(xié)議。 隨著Internet的發(fā)展,ICMP與其他協(xié)議一樣,被賦予越來越多的功能。一般說來,除了ICMP差錯(cuò)報(bào)文外,ICMP還提供控制報(bào)文和請(qǐng)求/應(yīng)答報(bào)文對(duì),前者與IP層的擁塞和路徑控制有關(guān),后者則用于獲取故障診斷和網(wǎng)絡(luò)控制方面的信息。另外,需要說明的是,ICMP協(xié)議雖與IP協(xié)議屬于同層協(xié)議,但I(xiàn)CMP報(bào)文跟TCP等協(xié)議的報(bào)文一樣,是封裝在IP報(bào)文中進(jìn)行傳輸?shù)摹?兩種主要ICMP消息的類型:詢問消息和錯(cuò)誤消息。詢問消息是指ICMP響應(yīng)請(qǐng)求、響應(yīng)應(yīng)答、路由器公告和地址屏蔽請(qǐng)求等。錯(cuò)誤消息指目的地址不可達(dá)、源地址消亡(擁塞指示)及生命周期

26、超時(shí)等。 當(dāng)原始數(shù)據(jù)報(bào)文的目的地址是廣播或組播地址或源地址不是單個(gè)系統(tǒng)時(shí),不產(chǎn)生ICMP消息。這是為了防止由于網(wǎng)絡(luò)擁塞或誤配置系統(tǒng)而引起的ICMP消息風(fēng)暴。 ICMP是以報(bào)文形式裝載信息的。每個(gè)ICMP 報(bào)文都是作為IP數(shù)據(jù)報(bào)的數(shù)據(jù)部分進(jìn)行網(wǎng)際傳送,如圖2-8所示。下面介紹一下ICMP報(bào)文的格式。ICMP報(bào)頭ICMP數(shù)據(jù)IP報(bào)頭IP數(shù)據(jù)區(qū)圖2-8 ICMP數(shù)據(jù)報(bào)的封裝ICMP報(bào)文包括兩個(gè)部分:ICMP報(bào)頭和ICMP數(shù)據(jù)區(qū)。ICMP報(bào)頭長度固定為8字節(jié)(圖2-9):第一字節(jié)是類型(TYPE),它的取值決定了ICMP報(bào)文的類別、作用和具體格式;第二字節(jié)是代碼(CODE),它對(duì)同一類型下的不同問題、

27、原因、信息進(jìn)行進(jìn)一步的細(xì)分和說明,以求對(duì)問題的表述更準(zhǔn)確;第三、四字節(jié)是校驗(yàn)和(CHECKSUM),它用來檢查自身的ICMP報(bào)文有沒有在傳輸中發(fā)生錯(cuò)誤,以便進(jìn)行相應(yīng)處理;其他字節(jié)是可能會(huì)用到的數(shù)據(jù)區(qū),包含因類型(TYPE)而異的信息。ICMP數(shù)據(jù)區(qū)長度可變,也可以不用(為0字節(jié)),也因類型(TYPE)而異。原異常IP報(bào)頭+前64位該IP報(bào)的數(shù)據(jù):差錯(cuò)、控制ICMP報(bào)中有關(guān)IP報(bào)的數(shù)據(jù)信息。IP報(bào)頭TYPECODECHECKSUM其它信息原異常IP報(bào)頭+前64位該IP數(shù)據(jù)報(bào)的數(shù)據(jù)圖2-9 ICMP報(bào)文頭統(tǒng)一格式2.4.3 ARP/RARP協(xié)議當(dāng)向目的地發(fā)送報(bào)文時(shí),路由器需要決定對(duì)應(yīng)于IP報(bào)文中所

28、含的IP地址的特定介質(zhì)地址(即MAC地址)。IP用地址解析協(xié)議(ARP)發(fā)現(xiàn)對(duì)應(yīng)于給定IP地址的特定介質(zhì)數(shù)據(jù)鏈路層地址。ARP是針對(duì)于廣播型網(wǎng)絡(luò)設(shè)計(jì)的,該協(xié)議采取一種動(dòng)態(tài)編連(Dynamic binding)的機(jī)制進(jìn)行地址解析。ARP工作原理如下:1、主機(jī)A廣播一條ARP請(qǐng)求報(bào)文(主機(jī)B的IP地址),請(qǐng)求主機(jī)B的物理地址;2、主機(jī)B收到ARP請(qǐng)求報(bào)文,向主機(jī)A發(fā)送一條ARP應(yīng)答報(bào)文,主機(jī)B的物理地址包含在應(yīng)答報(bào)文中;3、主機(jī)A收到主機(jī)B發(fā)出的應(yīng)答報(bào)文,得到B的物理地址。 注意:ARP請(qǐng)求是廣播,而ARP回答只是送給發(fā)送請(qǐng)求的路由器并非廣播。 RARP(反向ARP)執(zhí)行ARP逆過程,主要用于無盤

29、工作站在啟動(dòng)時(shí)獲取本機(jī)的 IP 地址,其工作原理與ARP相似。1、主機(jī)A廣播一條ARP請(qǐng)求(ARP報(bào)文中操作代碼為3,表示是一個(gè)反向ARP請(qǐng)求),請(qǐng)求本機(jī)的IP地址(報(bào)文中帶有本機(jī)的物理地址P);2、反向ARP服務(wù)器S收到RARP請(qǐng)求報(bào)文,查詢數(shù)據(jù)庫(已知MAC地址與IP地址的對(duì)應(yīng)表),如果找到物理地址為P的主機(jī)A,向主機(jī)A發(fā)送一條RARP應(yīng)答報(bào)文,物理地址為P的主機(jī)A的IP地址包含在應(yīng)答報(bào)文中;3、主機(jī)A收到S發(fā)出的應(yīng)答報(bào)文,就得到本機(jī)的IP地址。2.5 傳輸層協(xié)議傳輸層提供了TCP和UDP兩種協(xié)議。兩個(gè)傳輸協(xié)議將應(yīng)用程序的數(shù)據(jù)加上自身格式的首部字段后交給下一層進(jìn)行處理。盡管TCP和UDP都

30、使用相同的網(wǎng)絡(luò)層(IP),TCP卻向應(yīng)用層提供與UDP完全不同的服務(wù)。UDP是無連接的,它不保證數(shù)據(jù)報(bào)的可靠傳輸,任何必須的可靠性必須由上層應(yīng)用程序來提供。TCP提供一種面向連接的、可靠的協(xié)議。它能將報(bào)文分解為數(shù)段,在目的站再重新裝配這些段,重新發(fā)送沒有被收到的段。TCP為兩臺(tái)主機(jī)提供高可靠性的通信連接,有著復(fù)雜的控制機(jī)制。2.5.1 UDP協(xié)議UDP協(xié)議相對(duì)于TCP來說要簡單得多,它沒有所謂的窗口技術(shù),也不用確認(rèn),因此處理開銷小。應(yīng)用層協(xié)議可以保證可靠性。通常來說,UDP的傳輸效率較高,適用于那些無須把有序段重新裝配的應(yīng)用。使用UDP的協(xié)議包括:TFTP、SNMP、NFS、DNS。UDP首部

31、各字段如圖2-10所示。16位源端口號(hào)16位目的端口號(hào)16位UDP長度16位UDP校驗(yàn)和數(shù)據(jù)圖2-10 UDP報(bào)文UDP首部包括以下成員: 兩字節(jié)源端口號(hào)(source port number)和兩字節(jié)目的端口號(hào)(destination port number):用于確認(rèn)發(fā)送及接收應(yīng)用程序;兩字節(jié)報(bào)文長度:用于說明整個(gè)UDP報(bào)文的長度,包括UDP頭部。由于長度為16位,因此UDP數(shù)據(jù)報(bào)文最大長度為65535字節(jié)(2161)。兩字節(jié)校驗(yàn)和:用于校驗(yàn)數(shù)據(jù)報(bào)的有效性,UDP對(duì)報(bào)文的校驗(yàn)是可選的,收到的報(bào)文中若校驗(yàn)和為0,則不進(jìn)行校驗(yàn),否則校驗(yàn)) UDP數(shù)據(jù)報(bào)文可能會(huì)以不同于源端的順序到達(dá)目的端,原因

32、是由于某些報(bào)文被發(fā)送到慢速的鏈路上,而后續(xù)的報(bào)文在快速的鏈路上發(fā)送,接收端的程序必須能夠正確處理這種情況。2.5.2 TCP協(xié)議TCP(傳輸控制協(xié)議)是面向連接的協(xié)議,它提供兩個(gè)網(wǎng)絡(luò)設(shè)備間數(shù)據(jù)有保證的順序傳遞。TCP通過序列號(hào)和確認(rèn)號(hào)實(shí)現(xiàn)可靠傳輸,通過滑動(dòng)窗口實(shí)現(xiàn)流量控制。在收到接收者的應(yīng)答前,數(shù)據(jù)段一直保留在發(fā)送者系統(tǒng)的緩沖區(qū)中。如果丟失了某段,TCP將自動(dòng)重傳。TCP連接可分解為三個(gè)不同的階段:初始連接建立階段(三次握手)、數(shù)據(jù)傳輸階段以及最后的連接關(guān)閉階段。連接建立和連接關(guān)閉階段需要交換多個(gè)報(bào)文包。這種機(jī)制使得TCP在傳輸幾個(gè)字節(jié)時(shí)顯得非常昂貴,如在域名查找時(shí)就只需傳輸幾個(gè)字節(jié)。TCP連

33、接用段實(shí)現(xiàn)網(wǎng)絡(luò)系統(tǒng)間的通信,段的最大長度取決于輸出接口的最大報(bào)文長度或與對(duì)等系統(tǒng)協(xié)商的結(jié)果。TCP首部各字段(如圖2-11所示)及定義如下:16位源端口號(hào)16位目的端口號(hào)32位序列號(hào)32位確認(rèn)號(hào)4位首部長度6位保留6位編碼位16位窗口大小16位TCP校驗(yàn)和16位緊急指針選項(xiàng)(若有)數(shù)據(jù)圖2-11 TCP首部源端口(Source Port):呼叫端口的號(hào)目的端口(Destination Port):被叫端口的號(hào)序號(hào)(Sequence Number):用于確保數(shù)據(jù)到達(dá)的正確順序確認(rèn)號(hào)(Acknowledgment Number):所期待的下一個(gè)TCP字段的編號(hào)首部長度(HLEN):首部的字?jǐn)?shù)(字長

34、為32位)保留域(Reserved):設(shè)置為0編碼位(Code Bits):控制功能(比如會(huì)話的建立或終止)窗口(Window):發(fā)送者愿意接收的字節(jié)數(shù)校驗(yàn)和(Checksum):報(bào)頭和數(shù)據(jù)字段的校驗(yàn)和緊急指針(Urgent Pointer):指明這是緊急數(shù)據(jù)的末尾選項(xiàng)(Option):當(dāng)前定義項(xiàng):TCP段的最大值數(shù)據(jù)(Data):上層協(xié)議數(shù)據(jù) 端口號(hào)端口號(hào)用于識(shí)別兩個(gè)通信網(wǎng)絡(luò)系統(tǒng)的應(yīng)用(程序)。創(chuàng)建一條連接時(shí),源系統(tǒng)要求TCP選取一個(gè)可用的本地端口號(hào),這樣源系統(tǒng)和運(yùn)行服務(wù)器程序的遠(yuǎn)程系統(tǒng)(已知端口)之間建立連接。下圖2-12說明:當(dāng)源系統(tǒng)中有多個(gè)Telnet用戶與服務(wù)器連接時(shí),

35、用戶1向TCP請(qǐng)求一個(gè)可用端口,TCP回答端口1046可用,用戶2同樣向TCP請(qǐng)求一個(gè)可用端口,TCP回答端口1093,則兩個(gè)用戶連接時(shí),用戶1客戶機(jī)向服務(wù)器發(fā)送一個(gè)連接,端口為23,來自,端口為1046;用戶2客戶機(jī)向服務(wù)器發(fā)送一個(gè)連接,端口為23,來自,端口為1093。因此,相同IP地址上具有不同源端口號(hào)的兩個(gè)連接是不同的。無論報(bào)文包何時(shí)發(fā)送或接收,IP地址和端口號(hào)用來唯一地確認(rèn)數(shù)據(jù)途徑的連接。圖2-12 使用多個(gè)端口 序列號(hào)和確認(rèn)號(hào)序列號(hào)和確認(rèn)號(hào)用于識(shí)別TCP段中的數(shù)據(jù)。序列號(hào)標(biāo)識(shí)段開始處的字節(jié)

36、。序列號(hào)可以從任意值開始,用戶數(shù)據(jù)每傳送一個(gè)字節(jié),序列號(hào)加1,段的長度決定了段中正在發(fā)送的字節(jié)順序。序列號(hào)的作用一是用于標(biāo)識(shí)數(shù)據(jù)順序,以便接收者在將其遞交給應(yīng)用程序前按正確的順序進(jìn)行裝配;二是消除網(wǎng)絡(luò)中的重復(fù)報(bào)文包,這種現(xiàn)象在網(wǎng)絡(luò)擁塞時(shí)會(huì)出現(xiàn)。設(shè)備緩沖區(qū)中可能較長時(shí)間存有多個(gè)報(bào)文,發(fā)送者認(rèn)為網(wǎng)絡(luò)出現(xiàn)了故障,需要重傳數(shù)據(jù),當(dāng)?shù)诙M數(shù)據(jù)到達(dá)時(shí),接收者檢測(cè)出重復(fù)的序列號(hào)并丟棄重復(fù)報(bào)文包。確認(rèn)號(hào)用于接收者告訴發(fā)送者哪個(gè)數(shù)據(jù)包已經(jīng)成功接收。確認(rèn)號(hào)指示接收者希望接受的下一個(gè)字節(jié)。 TCP三次握手/建立連接TCP是一個(gè)面向連接的協(xié)議,無論哪一方向另一方發(fā)送數(shù)據(jù)之前,都必須先在雙方之間建立一條連

37、接。為了建立或初始化一個(gè)連接,兩個(gè)TCP通信者必須同步各自的初始序號(hào)。初始序號(hào)是建立一個(gè)TCP連接時(shí)的開始號(hào),用于跟蹤通信順序并確保多個(gè)包傳輸時(shí)無數(shù)據(jù)丟失。在連接過程中交換初始序號(hào),可以確保在以后出現(xiàn)問題時(shí),能恢復(fù)丟失的數(shù)據(jù)。同步是通過各個(gè)攜帶有初始序號(hào)和1位被稱為SYN控制位(攜帶有SYN控制位的TCP段被成為同步段)的段之間的交換過程來實(shí)現(xiàn)的。同步要求每一方都發(fā)送自己的初始序號(hào),并接受本次連接中另一方發(fā)送的一個(gè)確認(rèn)號(hào)和初始序號(hào)。每一方都必須接受另一方的初始序號(hào)并發(fā)送一個(gè)確認(rèn)應(yīng)答,這一過程順序如下:AgB SYN:我的序號(hào)是X;AfB ACK:你的序號(hào)是X;AfB SYN:我的序號(hào)是Y;Ag

38、B ACK:你的序號(hào)是Y。順序2和3可以合并在一個(gè)簡單的消息中,因此是3次握手/建立連接(如圖2-13示)。主機(jī)A主機(jī)B接收確認(rèn)(ACK=Y+1)發(fā)送確認(rèn)(ACK=Y+1)接收SYN(SEQ=Y,ACK=X1)發(fā)送SYN(SEQ=Y,ACK=X1)接收SYN(SEQ=X)發(fā)送SYN(SEQ=X)圖2-13 3次握手完成之前不能交換數(shù)據(jù) TCP四次握手/終止連接一個(gè)TCP連接是全雙工(即數(shù)據(jù)在兩個(gè)方向上能同時(shí)傳遞),因此每個(gè)方向必須單獨(dú)進(jìn)行關(guān)閉。這原則就是當(dāng)一方完成它的數(shù)據(jù)發(fā)送任務(wù)后就發(fā)送一個(gè)FIN來終止這個(gè)方向連接。當(dāng)一端收到一個(gè)FIN,它必須通知應(yīng)用層另一端已經(jīng)終止了那個(gè)方向的

39、數(shù)據(jù)傳送。這一過程順序如下:AgB FIN:我的序號(hào)是Z;AfB ACK:你的序號(hào)是Z1;AfB FIN:我的序號(hào)是W;AgB ACK:你的序號(hào)是W1。例如:當(dāng)Telnet客戶端關(guān)閉連接時(shí)(鍵入quit命令后),它將導(dǎo)致TCP客戶端發(fā)送一個(gè)FIN,用來關(guān)閉從客戶到服務(wù)器的數(shù)據(jù)傳送。當(dāng)服務(wù)器收到這個(gè)FIN,它發(fā)回ACK,確認(rèn)序號(hào)為收到的序號(hào)加1,同時(shí)TCP服務(wù)器還向應(yīng)用程序傳送一個(gè)文件結(jié)束符。接著這個(gè)服務(wù)器應(yīng)用程序就關(guān)閉它的連接,并在它的TCP端發(fā)送一個(gè)FIN,客戶必須發(fā)回一個(gè)確認(rèn),并將確認(rèn)序號(hào)設(shè)置為收到序號(hào)加1。圖2-14顯示了終止一個(gè)連接的握手順序(省略了序號(hào))。FIN的ACKFIN的ACK

40、FINFIN應(yīng)用程序關(guān)閉主機(jī)A主機(jī)B圖2-14 連接終止期間報(bào)文的交換應(yīng)用程序關(guān)閉 TCP為有序發(fā)送的段提供了一個(gè)前向參考確認(rèn)號(hào)。每個(gè)數(shù)據(jù)報(bào)在發(fā)送前都賦予一個(gè)編號(hào)。在接收站,TCP把分開的段重新裝配為一個(gè)完整的報(bào)文。如果在序號(hào)系列中丟失了一個(gè)序號(hào),那個(gè)丟失序號(hào)的段要被重發(fā)。在給定時(shí)間間隔內(nèi),沒有得到確認(rèn)的段也要被重發(fā)。序號(hào)和確認(rèn)號(hào)是有方向性的,因?yàn)橥ㄐ攀请p向的。 TCP的滑動(dòng)窗口 TCP的窗口大小用于實(shí)現(xiàn)流控機(jī)制,接收者用該域告訴發(fā)送者還有多少緩沖區(qū)空間可用,即接收者一次可以接收多少數(shù)據(jù)。發(fā)送者一次發(fā)送的數(shù)量總是小于可用緩沖區(qū),因此不會(huì)引起接收緩沖區(qū)溢出。當(dāng)一臺(tái)主機(jī)傳送了一個(gè)窗口

41、大小的字節(jié)數(shù)后,它必須等到接受了一個(gè)應(yīng)答后才能繼續(xù)傳送信息。窗口的目的是改善流量控制和可靠性?;瑒?dòng)窗口的“滑動(dòng)”指的是:在TCP會(huì)話過程中,可以通過協(xié)商動(dòng)態(tài)地修改窗口的大小?;瑒?dòng)窗口可使主機(jī)更加有效地利用帶寬,因?yàn)榇蟮拇翱诔叽缈梢栽诘却_認(rèn)期間發(fā)送更多的數(shù)據(jù)。2.6 IP編址地址有網(wǎng)絡(luò)層地址和鏈路層地址,它們的作用各不相同。整個(gè)網(wǎng)絡(luò)中的尋址是根據(jù)網(wǎng)絡(luò)層的地址進(jìn)行的,因?yàn)榫W(wǎng)絡(luò)層地址有不依賴于硬件的獨(dú)立性,有利于統(tǒng)一規(guī)劃與編排,而且它的“分層”設(shè)計(jì)將地址分為網(wǎng)絡(luò)部分與主機(jī)部分,這更加有利于路由的構(gòu)建和選擇。傳輸鏈路上數(shù)據(jù)包的識(shí)別是根據(jù)鏈路層地址進(jìn)行的,鏈路層的地址編排依賴于傳輸鏈路的技術(shù)本身,不同

42、的鏈路協(xié)議采用不同的編址方式,如以太網(wǎng)的鏈路層地址為48位編碼的唯一地址,PPP鏈路層地址用統(tǒng)一的FF表示,幀中繼網(wǎng)絡(luò)的鏈路層地址用連接標(biāo)識(shí)符DLCI表示,ATM網(wǎng)絡(luò)用PVC永久虛電路、SVC交換虛電路來標(biāo)識(shí)。下面我們主要介紹網(wǎng)絡(luò)層地址IP編址方法。2.6.1 IP地址的表示方法 所謂IP地址就是給每一個(gè)連接在Internet上的主機(jī)分配一個(gè)唯一的32bit地址。IP地址的結(jié)構(gòu)使我們可以在Internet上很方便地進(jìn)行尋址,這就是:先按IP地址中的網(wǎng)絡(luò)號(hào)碼把網(wǎng)絡(luò)找到,再按主機(jī)號(hào)碼把主機(jī)找到。所以IP地址并不只是一個(gè)計(jì)算機(jī)的號(hào)碼,而是指出了連接到某個(gè)網(wǎng)絡(luò)上的某個(gè)計(jì)算機(jī)。IP地址由美國國防數(shù)據(jù)網(wǎng)D

43、DN的網(wǎng)絡(luò)信息中心NIC進(jìn)行分配。為了便于對(duì)IP地址進(jìn)行管理,同時(shí)還考慮到網(wǎng)絡(luò)的差異很大,有的網(wǎng)絡(luò)擁有很多的主機(jī),而有的網(wǎng)絡(luò)上的主機(jī)則很少。因此Internet 的IP地址就分成為五類,即A類到E類。常用的為前三類,D類地址為網(wǎng)絡(luò)組播地址,E類地址保留在今后使用。IP地址由三個(gè)字段組成,即:特征位,用來區(qū)分IP地址的類型網(wǎng)絡(luò)號(hào)碼字段net-id主機(jī)號(hào)碼字段host-id網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)的確定是由子網(wǎng)掩碼來決定的。子網(wǎng)掩碼與IP地址一樣也是32bit長度,并且兩者是一一對(duì)應(yīng)的,子網(wǎng)掩碼中數(shù)字為“1”所對(duì)應(yīng)的IP地址中的部分為網(wǎng)絡(luò)號(hào),為“0”所對(duì)應(yīng)的部分為主機(jī)號(hào)。子網(wǎng)掩碼中數(shù)字“1”和“0”都是連續(xù)

44、的,不允許間插,且數(shù)字“1”在前,數(shù)字“0”在后。常規(guī)IP地址分類結(jié)構(gòu)如圖2-15所示。類別特征位網(wǎng)絡(luò)號(hào)主機(jī)號(hào)范圍A類07位24位到55B類1014位16位到55C類11021位8位到55D類111028位多播(multicast)組號(hào)到55E類11110保留圖2-15 常規(guī)IP地址分類這種地址分類方法為早期路由協(xié)議的設(shè)計(jì)提供了便利,從IP地址的首部特征位可以判定子網(wǎng)掩碼。隨著互聯(lián)網(wǎng)的急劇膨脹,地址短缺的問題愈來愈突出,傳統(tǒng)

45、的地址分配方法使得IP地址空間的利用率不高。目前出現(xiàn)的無類域間路由(CIDR)技術(shù)淡化了IP地址的類的概念,較新的路由協(xié)議在路由條目更新中都帶有子網(wǎng)掩碼,不再利用IP地址的首部特征位去判定子網(wǎng)掩碼了,新的互連網(wǎng)地址分配方案在一定程度上緩解了目前IP地址短缺的問題,但最終的解決方案是過渡到下一代的IPv6編址方法,其地址長度為128位。關(guān)于IP地址的一些約定如下:,用于沒有IP地址的主機(jī)啟動(dòng)時(shí)使用,通過RARP、BOOTP、DHCP來獲得地址。在路由表中該地址還用作缺省路由。55,表示“向我的網(wǎng)絡(luò)上的所有主機(jī)廣播”。用于廣播的目的地址,不能作源地址。全0的

46、網(wǎng)絡(luò)號(hào)碼,表示“本網(wǎng)絡(luò)”或“我不知道號(hào)碼的這個(gè)網(wǎng)絡(luò)”。網(wǎng)絡(luò)號(hào)碼為127.X.X.X,這里X.X.X為任何數(shù)。這樣的網(wǎng)絡(luò)號(hào)碼用作本地軟件回送測(cè)試之用。不知道主機(jī)的實(shí)際IP地址時(shí),用該地址代表“本機(jī)”。全1的主機(jī)號(hào)碼,表示廣播地址,即對(duì)該網(wǎng)絡(luò)上所有的主機(jī)進(jìn)行廣播。全0的主機(jī)號(hào)碼,表示該IP地址就是網(wǎng)絡(luò)的地址。合法的主機(jī)IP地址其網(wǎng)絡(luò)部分或主機(jī)部分都不能為全0或全1。 IP地址有一些重要的特點(diǎn)。如:有一些IP地址是一種非等級(jí)的地址結(jié)構(gòu),它不能反映任何有關(guān)主機(jī)位置的地理信息;當(dāng)一個(gè)主機(jī)同時(shí)連接到兩個(gè)網(wǎng)絡(luò)上時(shí)(作路由器用的主機(jī)即為這種情況),該主機(jī)就必須同時(shí)具有兩個(gè)相應(yīng)的IP地址,其網(wǎng)絡(luò)號(hào)碼net-id

47、是不同的,這種主機(jī)成為多地址主機(jī)(multihomed host);在IP地址中,所有分配到網(wǎng)絡(luò)號(hào)碼的網(wǎng)絡(luò)(不管是小的局域網(wǎng)還是很大的廣域網(wǎng))都是平等的。2.6.2 IP子網(wǎng)的劃分 IP地址的設(shè)計(jì)有不夠合理的地方。例如,IP地址中的A至C類地址,可供分配的網(wǎng)絡(luò)號(hào)碼超過211萬個(gè),而這些網(wǎng)絡(luò)上的主機(jī)號(hào)碼的總數(shù)則超過37.2億個(gè),初看起來,似乎IP地址足夠全世界來使用,(在70年代初期設(shè)計(jì)IP地址是就是這樣認(rèn)為的)。其實(shí)不然。第一,當(dāng)初沒有預(yù)計(jì)到微機(jī)會(huì)普及得如此之快。各種局域網(wǎng)和局域網(wǎng)上的主機(jī)數(shù)目急劇增長。第二,IP地址在使用時(shí)有很大的浪費(fèi)。例如:某個(gè)單位申請(qǐng)到了一個(gè)B類地址。但該單位只有1萬臺(tái)主

48、機(jī)。于是,在一個(gè)B類地址中的其余5萬5千多個(gè)主機(jī)號(hào)碼就白白地浪費(fèi)了。因?yàn)槠渌麊挝坏闹鳈C(jī)無法使用這些號(hào)碼。 從1985年起,為了使IP地址的使用更加靈活,不是把IP地址看成由單純的一個(gè)網(wǎng)絡(luò)號(hào)和一個(gè)主機(jī)號(hào)組成,而是把主機(jī)號(hào)再分成一個(gè)子網(wǎng)號(hào)和一個(gè)主機(jī)號(hào)。IP地址的網(wǎng)絡(luò)號(hào)碼net-id被統(tǒng)一分配后,后面的主機(jī)號(hào)碼host-id則是受本單位控制,由本單位進(jìn)行分配,本單位所有的主機(jī)都使用同一個(gè)網(wǎng)絡(luò)號(hào)碼。當(dāng)一個(gè)單位的主機(jī)很多而且分布在很大的地理范圍是,往往需要用一些網(wǎng)橋(而不是路由器,因?yàn)槁酚善鬟B接的主機(jī)具有不同的網(wǎng)絡(luò)號(hào)碼)將這些主機(jī)互連起來。網(wǎng)橋的缺點(diǎn)較多,例如容易引起廣播風(fēng)暴,同時(shí)當(dāng)網(wǎng)絡(luò)出現(xiàn)故障時(shí)也不太

49、容易隔離和管理。為此使本單位的各子網(wǎng)之間使用路由器來互連,這由于子網(wǎng)的劃分純屬本單位內(nèi)部的事,在本單位以外是看不見這樣的劃分。從外部看,這個(gè)單位只有一個(gè)網(wǎng)絡(luò)號(hào)碼。只有當(dāng)外面的分組進(jìn)入到本單位范圍后,本單位的路由器在根據(jù)子網(wǎng)號(hào)碼進(jìn)行選路,最后找到目的主機(jī)。若本單位按照主機(jī)所在的地理位置劃分子網(wǎng),那么在管理方面就會(huì)方便得多。 子網(wǎng)掩碼用來標(biāo)識(shí)各子網(wǎng)的位數(shù),它是網(wǎng)絡(luò)設(shè)備屏蔽所有標(biāo)識(shí)子網(wǎng)位的一種測(cè)量手段。NIC分配的網(wǎng)絡(luò)號(hào)的位包含在子網(wǎng)掩碼中。子網(wǎng)位數(shù)取決于你的網(wǎng)絡(luò)需要。下圖2-16說明是在劃分子網(wǎng)時(shí)要用到的子網(wǎng)掩碼(subnet mask)的意義。(a)舉了一個(gè)B類IP地址作為例子。(b)表示將本地

50、控制部分再增加一個(gè)子網(wǎng)字段,子網(wǎng)號(hào)字段究竟選為多長,由本單位根據(jù)情況確定。(c)具體示例:子網(wǎng)掩碼由一連串的“1”和一連串的“0”組成?!?”對(duì)應(yīng)于網(wǎng)絡(luò)號(hào)碼和子網(wǎng)號(hào)碼字段,而“0”對(duì)應(yīng)于主機(jī)號(hào)碼字段。 多劃分出一個(gè)子網(wǎng)號(hào)碼字段是要付出代價(jià)的。例如,對(duì)于上述的例子,本來一個(gè)B類IP地址可以容納65534個(gè)主機(jī)號(hào)碼,但劃分出6bit長的子網(wǎng)字段后,最多可有62個(gè)子網(wǎng)(去掉全1和全0的子網(wǎng)號(hào)碼)。每個(gè)子網(wǎng)有10bit的主機(jī)號(hào)碼,即每個(gè)子網(wǎng)最多可有1022個(gè)主機(jī)號(hào)碼。因此主機(jī)號(hào)碼的總數(shù)是62*1022=63364個(gè),比不劃分子網(wǎng)時(shí)要少了一些。 若一個(gè)單位不進(jìn)行子網(wǎng)的劃分,則其子網(wǎng)掩碼即為默認(rèn)值,對(duì)于A

51、,B和C類IP地址,其對(duì)應(yīng)的子網(wǎng)掩碼默認(rèn)值分別為,和。(a)B類地址網(wǎng)絡(luò)號(hào) 主機(jī)號(hào)(b)增加子網(wǎng)段字段 網(wǎng)絡(luò)號(hào) 子網(wǎng)號(hào) 主機(jī)號(hào)(c)子網(wǎng)掩碼 00 圖2-16 子網(wǎng)與子網(wǎng)掩碼2.6.3 子網(wǎng)化舉例實(shí)際子網(wǎng)數(shù)2n2(n表示標(biāo)準(zhǔn)掩碼從左向右擴(kuò)展的位數(shù),減2表示地址全0、全1的子網(wǎng)被保留)。某子網(wǎng)內(nèi)實(shí)際主機(jī)數(shù)2m2(m表示子網(wǎng)掩碼中為0的位數(shù),減2表示地址全0、全1的IP地址)例如:一個(gè)小公司被分配了一個(gè)的C類地址,但它需要5個(gè)子網(wǎng),每個(gè)子網(wǎng)支持20臺(tái)主機(jī)。請(qǐng)計(jì)算出該網(wǎng)絡(luò)的子網(wǎng)掩碼。第一步:確定建立5個(gè)子網(wǎng)需要多

52、少位掩碼。根據(jù)以上公式可知,C類掩碼需要擴(kuò)展3位,即: 1111 1111.1111 1111.1111 1111.1110 000024第二步:驗(yàn)證主機(jī)數(shù)是否符合要求。根據(jù)以上公式可知,主機(jī)數(shù)25230。第三步:列出所有子網(wǎng)地址:保留: 子網(wǎng)1:2子網(wǎng)2:4子網(wǎng)3:6子網(wǎng)4:28子網(wǎng)5:60子網(wǎng)5:92保留: 242.6.4 地址的轉(zhuǎn)換IP地址還不能直接用來進(jìn)行通信。這是因?yàn)椋?、IP地址中的

53、主機(jī)地址只是主機(jī)在網(wǎng)絡(luò)層中的地址,若要將網(wǎng)絡(luò)層中傳送的數(shù)據(jù)報(bào)交給目的主機(jī),必須知道該主機(jī)的物理地址。因此必須在IP地址和主機(jī)的物理地址之間進(jìn)行轉(zhuǎn)換。2、用戶平時(shí)不愿意使用難于記憶的主機(jī)號(hào)碼,而是愿意使用易于記憶的主機(jī)名字。因此也需要在主機(jī)名字和IP地址之間進(jìn)行轉(zhuǎn)換。 因此,在TCP/IP體系中都有這兩種轉(zhuǎn)換的機(jī)制。 IP地址和主機(jī)的物理地址轉(zhuǎn)換 對(duì)于IP地址和主機(jī)的物理地址之間的轉(zhuǎn)換由地址轉(zhuǎn)換協(xié)議ARP/反向地址轉(zhuǎn)換協(xié)議RARP來完成。由于IP地址有32bit,而局域網(wǎng)的物理地址(即MAC地址)是48bit,因此它們之間不是一個(gè)簡單的轉(zhuǎn)換關(guān)系。此外,在一個(gè)網(wǎng)絡(luò)上可能經(jīng)常會(huì)有新的計(jì)

54、算機(jī)假如近來,或撤走一些計(jì)算機(jī)。更換計(jì)算機(jī)的網(wǎng)卡也會(huì)使其物理地址改變??梢娫谟?jì)算機(jī)中應(yīng)當(dāng)存放一個(gè)從IP地址到物理地址的轉(zhuǎn)換表,并且能夠經(jīng)常動(dòng)態(tài)更新。地址轉(zhuǎn)換協(xié)議ARP很好地解決了這些問題。 每一個(gè)主機(jī)都有一個(gè)ARP高速緩存(ARP cache),里面有IP地址到物理地址的映射表,這些都是該主機(jī)目前知道的一些地址。當(dāng)主機(jī)A欲向本局域網(wǎng)上的主機(jī)B發(fā)送一個(gè)IP數(shù)據(jù)報(bào)時(shí),就先在其ARP高速緩存中查看有無主機(jī)B的IP地址。如有,就可查出其對(duì)應(yīng)的物理地址,然后將該數(shù)據(jù)報(bào)發(fā)往此物理地址。如沒有,則可能是主機(jī)B才入網(wǎng),也可能是主機(jī)A剛剛加電,其高速緩存還是空的。在這種情況下,主機(jī)A就自動(dòng)運(yùn)行ARP,按以下步驟

55、找出主機(jī)B的物理地址。1)ARP進(jìn)程在本局域網(wǎng)上廣播發(fā)送一個(gè)ARP請(qǐng)求分組,上面有主機(jī)B的IP地址;2)在本局域網(wǎng)上的所有主機(jī)上運(yùn)行的ARP進(jìn)程都收到此ARP請(qǐng)求分組;3)主機(jī)B在ARP請(qǐng)求分組中見到自己的IP地址,就向主機(jī)A發(fā)送一個(gè)ARP響應(yīng)分組,上面寫入自己的物理映射;4)主機(jī)A收到主機(jī)B的ARP響應(yīng)分組后,就在其ARP高速緩存中寫入主機(jī)B的IP地址到物理地址的映射。 在很多情況下,當(dāng)主機(jī)A向主機(jī)B發(fā)送數(shù)據(jù)報(bào)時(shí),很可能以后不久主機(jī)B還要向主機(jī)A發(fā)送數(shù)據(jù)報(bào),因而主機(jī)B也可能要向主機(jī)A發(fā)送ARP請(qǐng)求分組。為了減少網(wǎng)絡(luò)上的通信量,主機(jī)A在發(fā)送其ARP請(qǐng)求分組時(shí),就將自己的IP地址到物理地址的映射寫入ARP請(qǐng)求分組。當(dāng)主機(jī)B收到主機(jī)A的ARP請(qǐng)求分組時(shí),主機(jī)B就將主機(jī)A的這一地址映射寫入主機(jī)B自己的ARP高速緩存中。這對(duì)主機(jī)B以后向主機(jī)A發(fā)送數(shù)據(jù)報(bào)時(shí)就更方便了。 在進(jìn)行地址轉(zhuǎn)換時(shí),有時(shí)還要用到反向地址轉(zhuǎn)換協(xié)議RARP。RARP使只知道自己物理地址的主機(jī)能夠知道其IP地址。這種主機(jī)往往是無盤工作站。這種無盤工作站一般只要運(yùn)行其ROM中的文件傳送代碼,就可用下行裝載方法,從局域網(wǎng)上其他主機(jī)得到所需的操作系統(tǒng)和TCP/IP通信軟件,但這些軟件中并沒有IP地址。無盤工作站要運(yùn)行ROM中的RAR

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論