網(wǎng)站建設(shè)的日常工作有什么做個(gè)公司網(wǎng)站多少錢(qián)
文章目錄
- 網(wǎng)絡(luò)層概述
- 網(wǎng)絡(luò)層提供的兩種服務(wù)
- IPv4地址
- IPv4地址概述
- 分類(lèi)編址的IPv4地址
- 劃分子網(wǎng)的IPv4地址
- 無(wú)分類(lèi)編址的IPv4地址
- IPv4地址的應(yīng)用規(guī)劃
- IP數(shù)據(jù)報(bào)的發(fā)送和轉(zhuǎn)發(fā)過(guò)程
- 靜態(tài)路由配置及其可能產(chǎn)生的路由環(huán)路問(wèn)題
- 路由選擇
- 路由選擇協(xié)議概述
- 路由信息協(xié)議RIP的基本工作原理
- 開(kāi)放最短路徑優(yōu)先OSPF的基本工作原理
- 邊界網(wǎng)關(guān)協(xié)議BGP的基本工作原理
- IPv4數(shù)據(jù)報(bào)的首部格式
- 網(wǎng)際控制報(bào)文協(xié)議ICMP
- 虛擬專(zhuān)用網(wǎng)VPN與網(wǎng)絡(luò)地址轉(zhuǎn)換NAT
網(wǎng)絡(luò)層概述
網(wǎng)絡(luò)層的主要任務(wù)是實(shí)現(xiàn)網(wǎng)絡(luò)互連,進(jìn)而實(shí)現(xiàn)數(shù)據(jù)包在各網(wǎng)絡(luò)之間的傳輸
如圖所示,這些異構(gòu)型網(wǎng)絡(luò),如果只是需要各自內(nèi)部通信,他們只要實(shí)現(xiàn)各自的物理層和數(shù)據(jù)鏈入層即可,但是如果需要將這些異構(gòu)型網(wǎng)絡(luò)互連起來(lái),形成一個(gè)更大的互聯(lián)網(wǎng),就需要使用網(wǎng)絡(luò)層互聯(lián)設(shè)備路由器。
需要說(shuō)明的是為了簡(jiǎn)單起見(jiàn),有時(shí)我們可以不用畫(huà)出這些網(wǎng)絡(luò),而將他們看作是一條鏈路即可。
對(duì)于互聯(lián)網(wǎng)而言,僅實(shí)現(xiàn)計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)中的物理層和數(shù)據(jù)鏈路層,是不能實(shí)現(xiàn)數(shù)據(jù)包在互聯(lián)網(wǎng)中各網(wǎng)絡(luò)之間傳輸?shù)?#xff0c;要實(shí)現(xiàn)該功能,就要必須實(shí)現(xiàn)網(wǎng)絡(luò)層,網(wǎng)絡(luò)層需要解決以下主要問(wèn)題:
- 向運(yùn)輸層提供怎么樣的服務(wù)
- 尋址問(wèn)題
- 路由選擇問(wèn)題
接下來(lái)我們一個(gè)個(gè)來(lái)看看。
首要問(wèn)題是網(wǎng)絡(luò)層應(yīng)該向其上面的運(yùn)輸層提供怎樣的服務(wù),是可靠傳輸服務(wù),還是不可靠傳輸服務(wù)?我們?cè)谥暗奈恼轮性榻B過(guò),數(shù)據(jù)包在傳輸過(guò)程中可能會(huì)出現(xiàn)誤碼,也有可能由于路由器繁忙而被路由器丟棄,還有可能出現(xiàn)按序發(fā)送的數(shù)據(jù)包,不能按序到達(dá)接收方。
- 如果網(wǎng)絡(luò)層對(duì)于上述傳輸錯(cuò)誤不采取任何措施,則提供的是不可靠傳輸服務(wù)。
- 如果網(wǎng)絡(luò)層對(duì)于上述傳輸錯(cuò)誤采取措施,并使得接收方能正確接收發(fā)送方所發(fā)送的數(shù)據(jù)包,則提供的是可靠傳輸服務(wù)。
- 不同網(wǎng)絡(luò)體系結(jié)構(gòu)所提供的服務(wù)可能是不同的。例如因特網(wǎng)使用的tcpip協(xié)議體系的網(wǎng)際層,提供的是無(wú)連接的不可靠的數(shù)據(jù)報(bào)服務(wù),而ATM,幀中繼和X.25的網(wǎng)絡(luò)層提供的都是面向連接的可靠的虛電路服務(wù)。
網(wǎng)絡(luò)層需要解決的第二個(gè)主要問(wèn)題是尋址問(wèn)題,例如TCP/IP協(xié)議體系的網(wǎng)際層使用IP地址,我們來(lái)舉例說(shuō)明:
- 網(wǎng)絡(luò)N1上兩個(gè)路由器接口各自所分配的IP地址,它們的前三個(gè)數(shù)是相同的,可以看作是他們所在網(wǎng)絡(luò)的網(wǎng)絡(luò)編號(hào),而第4個(gè)數(shù)各不相同,用于區(qū)分這兩個(gè)不同的路由器接口,
- 網(wǎng)絡(luò)N3上兩個(gè)路由器接口各自所分配的IP地址,它們的前兩個(gè)數(shù)是相同的,可以看作是他們所在網(wǎng)絡(luò)的網(wǎng)絡(luò)編號(hào),而后兩個(gè)數(shù)不完全相同,用于區(qū)分這兩個(gè)不同的路由器接口,
- 網(wǎng)絡(luò)N7上兩個(gè)路由器接口各自所分配的IP地址,它們的第一個(gè)數(shù)是相同的,可以看作是他們所在網(wǎng)絡(luò)的網(wǎng)絡(luò)編號(hào),而后三個(gè)數(shù)不完全相同,用于區(qū)分這兩個(gè)不同的路由器接口。
網(wǎng)絡(luò)層需要解決的第三個(gè)主要問(wèn)題是路由選擇問(wèn)題。我們來(lái)舉例說(shuō)明,如圖所示:
數(shù)據(jù)包從原站到達(dá)目的站,可以走上面那條路徑,也可以走下面那條路徑。對(duì)于本例還有其他路徑可走,我們就要不一一演示了。
那么路由器收到數(shù)據(jù)包后,是依據(jù)什么來(lái)決定將數(shù)據(jù)包從自己的哪個(gè)接口轉(zhuǎn)發(fā)出去的呢?
依據(jù)的是數(shù)據(jù)包中的目的地址和路由器中的路由表
?
- 例如這是路由器R1的路由表,里面記錄著路由器、R1所知道的網(wǎng)絡(luò)以及數(shù)據(jù)包要到達(dá)這些網(wǎng)絡(luò),應(yīng)該從自己的哪個(gè)接口轉(zhuǎn)發(fā)。
- 假設(shè)R1知道數(shù)據(jù)包要到達(dá)網(wǎng)絡(luò)N7,下一跳,應(yīng)將其轉(zhuǎn)發(fā)給路由器R4,則路由表中應(yīng)該有這樣一條記錄,
- 而數(shù)據(jù)包要到達(dá)網(wǎng)絡(luò)N6,下一跳,應(yīng)將其轉(zhuǎn)發(fā)給路由器R2,則路由表裝應(yīng)該有這樣一條記錄。
請(qǐng)大家想想看,剛才是我們假設(shè)而已,知道這些路由記錄,但在實(shí)踐當(dāng)中路由器是如何得出這樣的路由記錄呢?有兩種方法,
- 一種是由用戶或網(wǎng)絡(luò)管理員進(jìn)行人工配置,這種方法只適用于規(guī)模較小,且網(wǎng)絡(luò)拓?fù)洳桓淖兊男⌒突ヂ?lián)網(wǎng)。
- 另一種是實(shí)現(xiàn)各種路由選擇協(xié)議,由路由器執(zhí)行路由選擇協(xié)議中所規(guī)定的路由選擇算法,而自動(dòng)得出路由表中的路由記錄。這種方法更適用于規(guī)模較大,且網(wǎng)絡(luò)拓?fù)浣?jīng)常改變的大型互聯(lián)網(wǎng)。
因特網(wǎng)是目前全世界用戶數(shù)量最多的互聯(lián)網(wǎng),它使用4層協(xié)議體系的TCPIP協(xié)議站,如圖所示,由于TCPIP協(xié)議站的網(wǎng)絡(luò)層需要網(wǎng)際協(xié)議IP,它是整個(gè)協(xié)議站的核心協(xié)議。因此在TCP IP協(xié)議戰(zhàn)中,網(wǎng)絡(luò)層常稱(chēng)為網(wǎng)際層。
內(nèi)容小結(jié):
網(wǎng)絡(luò)層提供的兩種服務(wù)
網(wǎng)絡(luò)層提供的兩種服務(wù):
- 一種是面向連接的虛電路服務(wù)
- 另一種是無(wú)連接的數(shù)據(jù)報(bào)服務(wù)
虛電路服務(wù);
數(shù)據(jù)報(bào)服務(wù):
內(nèi)容小結(jié):
IPv4地址
IPv4地址概述
IPv4地址的基本概念:
- 在TCP/IP體系中,IP地址是一個(gè)最基本的概念,我們必須把它弄清楚。
IPv4地址
就是給因特網(wǎng)上的每一臺(tái)主機(jī)(或路由器)的每一個(gè)接口分配一個(gè)在全世界范圍內(nèi)是唯一的32比特的標(biāo)識(shí)符。- IP地址,由因特網(wǎng)名字和數(shù)字分配機(jī)構(gòu)ICANN(The Internet Corporation for Assigned Names and Numbers))進(jìn)行分配。
- 我國(guó)用戶可向亞太網(wǎng)絡(luò)信息中心(Asia-Pacific Network Information Center,APNIC)申請(qǐng)IP地址,這需要繳納費(fèi)用,一般并不接受個(gè)人申請(qǐng)。
- 2011年2月3日,因特網(wǎng)號(hào)碼分配管理局宣布,IPv4地址已經(jīng)分配完畢
- 我國(guó)在2014~2015年也逐步停止了向新用戶和應(yīng)用分配IPV4、地址,同時(shí)全面開(kāi)展商用部署IPV6
IPV4地址的編制方法,經(jīng)歷了如下三個(gè)歷史階段,我們?cè)诤竺鏁?huì)詳細(xì)介紹:
由于32比特的IPV4地址不方便閱讀記錄以及輸入等,因此IPV4地址采用點(diǎn)分十進(jìn)制表示方法,以方便用戶使用。
關(guān)于二進(jìn)制的轉(zhuǎn)換等計(jì)算在此不贅述
內(nèi)容小結(jié):
分類(lèi)編址的IPv4地址
這里我們介紹IPv4地址編制方法的第一個(gè)歷史階段,也就是分類(lèi)編制的IPv4地址
分類(lèi)編制的IPv4地址分為ABCDE 5類(lèi):
- A類(lèi)地址的網(wǎng)絡(luò)號(hào)部分占8比特,主機(jī)號(hào)部分占24比特,網(wǎng)絡(luò)號(hào)的最高位固定為零
- B類(lèi)地址的網(wǎng)絡(luò)號(hào)部分和主機(jī)號(hào)部分各占16比特,網(wǎng)絡(luò)號(hào)的最高兩位,固定為10
- C類(lèi)地址的網(wǎng)絡(luò)號(hào)部分占24個(gè)比特,主機(jī)號(hào)部分占8個(gè)比特,網(wǎng)絡(luò)號(hào)的最高3位固定為110
- D類(lèi)地址是多播地址,其最高4位固定為1110
- E類(lèi)地址是保留地址,及最高4位固定為1111
- 需要注意的是只有A類(lèi),B類(lèi)和C類(lèi)地址可分配給網(wǎng)絡(luò)中的主機(jī)或路由器的各接口。
- 主機(jī)號(hào)為全0的地址是網(wǎng)絡(luò)地址,不能分配給主機(jī)或路由器的各接口
- 主機(jī)號(hào)為全1的地址是廣播地址,不能分配給主機(jī)或路由器的各接口
-
8位網(wǎng)絡(luò)號(hào)的最高位固定為0,第7位全部取0時(shí),就是A類(lèi)網(wǎng)絡(luò)的最小網(wǎng)絡(luò)號(hào),其十進(jìn)制值為0,該網(wǎng)絡(luò)號(hào)被保留,不能指派。
-
因此A類(lèi)網(wǎng)絡(luò)第一個(gè)可指派的網(wǎng)絡(luò)號(hào)為最高位固定為0,低7位為000 0001,其十進(jìn)制值為1,將24位的主機(jī)號(hào)全部取0,就可以得到該網(wǎng)絡(luò)的網(wǎng)絡(luò)地址,且點(diǎn)分十進(jìn)制為1.0.0.0,
-
當(dāng)8位網(wǎng)絡(luò)號(hào)的第7位全部取1時(shí),就是A類(lèi)網(wǎng)絡(luò)的最大網(wǎng)絡(luò)號(hào),其十進(jìn)制值為127,該網(wǎng)絡(luò)號(hào)被用于本地軟件環(huán)回測(cè)試,不能指派
-
將127開(kāi)頭的IPv4地址的主機(jī)號(hào)部分的最低位取1,其他位取0,就可得到最小的本地軟件環(huán)回測(cè)試地址,且點(diǎn)分十進(jìn)制為127.0.0.1,
-
將127開(kāi)頭的IPv4地址的主機(jī)號(hào)部分的最低位取0,其他位取1,就可得到最大的本地軟件環(huán)回測(cè)試地址,且點(diǎn)分十進(jìn)制為127.255.255.254
-
-
因此A類(lèi)網(wǎng)絡(luò)最后一個(gè)可指派的網(wǎng)絡(luò)號(hào)為最高為固定為0,低7位為1111 110,10進(jìn)制值為126,將24位的主機(jī)號(hào)全部取0,就可以得到該網(wǎng)絡(luò)的網(wǎng)絡(luò)地址,且點(diǎn)分10進(jìn)制為126.0.0.0。
-
可指派的A類(lèi)網(wǎng)絡(luò)的數(shù)量是多少?我們可以寫(xiě)出這樣的表達(dá)式,由于網(wǎng)絡(luò)號(hào)占8位,并且其最高位固定為0,因此網(wǎng)絡(luò)號(hào)有2的8減一次的組合,-2的原因需要去掉最小網(wǎng)絡(luò)號(hào)0和最大網(wǎng)絡(luò)號(hào)127,他們不能指派
-
每個(gè)A類(lèi)網(wǎng)絡(luò)中可分配的IP地址數(shù)量是多少呢?我們可以寫(xiě)出這樣的表達(dá)式,由于主機(jī)號(hào)占24位,因此主機(jī)號(hào)有2~24次方個(gè)組合,-2的原因是要去掉主機(jī)號(hào)為全0的網(wǎng)絡(luò)地址 和主機(jī)號(hào)為全1的廣播地址。
-
也就是說(shuō),一個(gè)IP地址的第一個(gè)數(shù)如果是1~126,就是A類(lèi)地址
再來(lái)看B類(lèi)地址的細(xì)節(jié),16位網(wǎng)絡(luò)號(hào)的最高兩位固定為10:
- 低14位全部取0時(shí),就是B類(lèi)網(wǎng)絡(luò)的最小網(wǎng)絡(luò)號(hào),且點(diǎn)分時(shí)進(jìn)制為128.0。該網(wǎng)絡(luò)號(hào)是B類(lèi)網(wǎng)第一個(gè)可指派的網(wǎng)絡(luò)號(hào),將16位的主機(jī)號(hào)全部取0,就可以得到該網(wǎng)絡(luò)的網(wǎng)絡(luò)地址,且點(diǎn)分十進(jìn)制為128.0.0.0
- 16位網(wǎng)絡(luò)號(hào)的最高兩位固定為10,低14位全部取一時(shí),就是B類(lèi)網(wǎng)絡(luò)的最大網(wǎng)絡(luò)號(hào),且點(diǎn)分時(shí)進(jìn)制為191.255,該網(wǎng)絡(luò)號(hào)是B類(lèi)網(wǎng)最后一個(gè)可指派的網(wǎng)絡(luò)號(hào),將16位的主機(jī)號(hào)全部取0,就可以得到該網(wǎng)絡(luò)的網(wǎng)絡(luò)地址,且點(diǎn)分時(shí)進(jìn)制為191.255.0.0。
- 可指派的B類(lèi)網(wǎng)絡(luò)的數(shù)量是多少,我們可以寫(xiě)出這樣的表達(dá)式。由于網(wǎng)絡(luò)號(hào)占16位,并且其最高兩位固定為10,因此,網(wǎng)絡(luò)號(hào)有2~16-2次個(gè)組合
- 每個(gè)B類(lèi)網(wǎng)絡(luò)中可分配的IP地址數(shù)量又是多少,我們可以寫(xiě)出這樣的表達(dá)式。由于主機(jī)號(hào)占16位,因此主機(jī)號(hào)有2的16 次個(gè)組合,-2的原因是要去掉主機(jī)號(hào)為全0的網(wǎng)絡(luò)地址,和主機(jī)號(hào)為全一的廣播地址。
- 需要說(shuō)明的是有些教材中指出128.0是保留網(wǎng)絡(luò)號(hào),B類(lèi)第一個(gè)可指派的網(wǎng)絡(luò)號(hào)為128.1,但根據(jù)2002年9月發(fā)表的RFC3330文檔,128.0網(wǎng)絡(luò)號(hào)已經(jīng)可以分配了,有興趣的同學(xué)可以自行查詢,以128.0開(kāi)頭的IP地址,看看他們屬于哪些國(guó)家。
- 也就是說(shuō),IP地址第一個(gè)開(kāi)頭的如果是128~191,就是B類(lèi)地址
再來(lái)看C類(lèi)地址的細(xì)節(jié),24位網(wǎng)絡(luò)號(hào)的最高三位固定為110:
- 低21位全部取0時(shí),就是C類(lèi)網(wǎng)絡(luò)的最小網(wǎng)絡(luò)號(hào),且點(diǎn)分時(shí)進(jìn)制為192.0.0,該網(wǎng)絡(luò)號(hào)是C類(lèi)網(wǎng)第一個(gè)可指派的網(wǎng)絡(luò)號(hào),將8位的主機(jī)號(hào)全部取0,就可以得到該網(wǎng)絡(luò)的網(wǎng)絡(luò)地址,且點(diǎn)分十進(jìn)制為192.0.0.0
- 24位網(wǎng)絡(luò)號(hào)的最高三位固定為110,低21位全部取1是,就是C類(lèi)網(wǎng)絡(luò)的最大網(wǎng)絡(luò)號(hào),寫(xiě)點(diǎn)分十進(jìn)制為223.255.255,該網(wǎng)絡(luò)號(hào)是C類(lèi)網(wǎng)最后一個(gè)可指派的網(wǎng)絡(luò)號(hào),將8位的主機(jī)號(hào)全部取0,就可以得到該網(wǎng)絡(luò)的網(wǎng)絡(luò)地址,其點(diǎn)十時(shí)進(jìn)制為223.255.255.0。
- 可指派的C類(lèi)網(wǎng)絡(luò)的數(shù)量是多少呢?我們可以寫(xiě)出這樣的表達(dá)式,由于網(wǎng)絡(luò)號(hào)占24位,并且其最高三位固定為110,因此網(wǎng)絡(luò)號(hào)有2的24減3次個(gè)組合。
- 每個(gè)C類(lèi)網(wǎng)絡(luò)中可分配的IP地址數(shù)量是多少,我們可以寫(xiě)出這樣的表達(dá)式。由于主機(jī)號(hào)占8位,因此主機(jī)號(hào)有2的8次方個(gè)組合,減2的原因是要去掉主機(jī)號(hào)為全名的網(wǎng)絡(luò)地址和主機(jī)號(hào)為全1的廣播地址。
- 需要注意的是有些教材中指出,192.0.0是保留網(wǎng)絡(luò)號(hào),C類(lèi)第一個(gè)可指派的網(wǎng)絡(luò)號(hào)為192.0.1,但根據(jù)2002年9月發(fā)表的RFC3330文檔,192.0.0網(wǎng)絡(luò)號(hào)已經(jīng)可以分配了,只不過(guò)目前還沒(méi)有分配出去。
- 也就是說(shuō),IP地址第一個(gè)開(kāi)頭的如果是192~223,就是C類(lèi)地址
第一題:
第二題:
這里的源地址和目標(biāo)地址表示的是:
- 在路由器通信中,IP數(shù)據(jù)包中一般有2個(gè)IP地址,一個(gè)是源IP,另外一個(gè)是目標(biāo)IP地址;
- 源IP地址就是發(fā)出這個(gè)數(shù)據(jù)包的電腦的IP地址,它是數(shù)據(jù)的來(lái)源;
- 目標(biāo)IP地址就是數(shù)據(jù)最終要到達(dá)的那臺(tái)電腦的IP地址;
第三題:
步驟:
- 首先應(yīng)該找出圖中都有哪些網(wǎng)絡(luò)(在圖中已經(jīng)標(biāo)出,橙色區(qū)、藍(lán)色區(qū)、粉色區(qū)、綠色區(qū),注意兩臺(tái)路由器通過(guò)一段鏈路直連,他們的直連接口也屬于同一個(gè)網(wǎng)絡(luò))
- 之后可以根據(jù)各網(wǎng)絡(luò)中主機(jī)和路由器接口總數(shù)量,來(lái)決定給各網(wǎng)絡(luò)分配哪個(gè)類(lèi)別的網(wǎng)絡(luò)號(hào)。橙色區(qū)網(wǎng)絡(luò)的主機(jī)數(shù)量為65534加上一個(gè)路由器接口,需要可分配的IP地址數(shù)量為65535,只能給該網(wǎng)絡(luò)分配一個(gè)A類(lèi)網(wǎng)絡(luò)號(hào)
- 藍(lán)色區(qū)網(wǎng)絡(luò)的主機(jī)數(shù)量為254,加上一個(gè)路由器接口,需要可分配的IP地址數(shù)量為255,可以給該網(wǎng)絡(luò)分配一個(gè)A類(lèi)或B類(lèi)網(wǎng)絡(luò)號(hào)。本著節(jié)約IP地址的原則,給該網(wǎng)絡(luò)分配一個(gè)B類(lèi)網(wǎng)絡(luò)號(hào)
- 綠色區(qū)網(wǎng)絡(luò)的主機(jī)數(shù)量為40,再加上一個(gè)路由器接口,需要可分配的IP地址數(shù)量為41,給該網(wǎng)絡(luò)分配一個(gè)A類(lèi)B類(lèi)或C類(lèi)網(wǎng)絡(luò)號(hào)都可以,本著節(jié)約IP地址的原則,給該網(wǎng)絡(luò)分配一個(gè)C類(lèi)網(wǎng)絡(luò)號(hào)
- 粉色區(qū)網(wǎng)絡(luò)沒(méi)有主機(jī),只有兩個(gè)路由器接口,需要可分配的IP地址數(shù)量為2,給該網(wǎng)絡(luò)分配一個(gè)A類(lèi)B類(lèi)或C類(lèi)網(wǎng)絡(luò)號(hào)都可以。本著節(jié)約IP地址的原則,給該網(wǎng)絡(luò)分配一個(gè)C類(lèi)網(wǎng)絡(luò)號(hào)
- 依據(jù)所確定的網(wǎng)絡(luò)號(hào)類(lèi)別,為每個(gè)網(wǎng)絡(luò)挑選一個(gè)網(wǎng)絡(luò)號(hào),A類(lèi)網(wǎng)絡(luò)號(hào)的取值范圍是1~126,可在該范圍內(nèi)挑選一個(gè)網(wǎng)絡(luò)號(hào),分配給網(wǎng)絡(luò),B類(lèi)網(wǎng)絡(luò)號(hào)的取值范圍是128.0 ~191.255可在該范圍內(nèi)選一個(gè)網(wǎng)絡(luò)號(hào)分配給網(wǎng)絡(luò),C類(lèi)網(wǎng)絡(luò)號(hào)的取值范圍是192.0.0 ~223.255.255,可在該范圍內(nèi)挑選一個(gè)網(wǎng)絡(luò)號(hào)分配給網(wǎng)絡(luò)
- 不同網(wǎng)絡(luò)的網(wǎng)絡(luò)號(hào)不能相同
- 網(wǎng)絡(luò)號(hào)分配完畢后,就可給各網(wǎng)絡(luò)中的各主機(jī)和路由器的各接口,分配IP地址了
- 需要注意的是所分配的IP地址應(yīng)該互不相同,并且其主機(jī)號(hào)部分不能出現(xiàn)全0,因?yàn)檫@是網(wǎng)絡(luò)地址,也不能出現(xiàn)全1,因?yàn)檫@是廣播地址,網(wǎng)絡(luò)地址或廣播地址都不能分配給主機(jī)或路由器的各接口,因?yàn)樗麄儫o(wú)法唯一標(biāo)識(shí)一臺(tái)主機(jī)或路由器的某個(gè)接口
內(nèi)容小結(jié):
劃分子網(wǎng)的IPv4地址
這里我們介紹IPv4地址編制方法的第二個(gè)歷史階段,也就是劃分子網(wǎng)的IPv4地址。
我們首先來(lái)舉例說(shuō)明,為什么會(huì)出現(xiàn)劃分子網(wǎng)這樣的需求,如圖所示某單位有一個(gè)大型的局域網(wǎng),需要連接到因特網(wǎng),如果申請(qǐng)一個(gè)C類(lèi)網(wǎng)絡(luò)地址,其可分配的IP地址數(shù)量只有254個(gè),不夠使用。因此該單位申請(qǐng)了一個(gè)B類(lèi)網(wǎng)絡(luò)地址,其可分配的IP地址數(shù)量達(dá)到了65,534個(gè),給每臺(tái)計(jì)算機(jī)和路由器的接口,分配一個(gè)IP地址后,還有大量的IP地址剩余。
這些剩余的IP地址只能由該單位的同一個(gè)網(wǎng)絡(luò)使用,而其他單位的網(wǎng)絡(luò)不能使用。隨著該單位計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展和建設(shè),該單位又新增了一些計(jì)算機(jī),并且需要將原來(lái)的網(wǎng)絡(luò)劃分成三個(gè)獨(dú)立的網(wǎng)絡(luò),我們稱(chēng)其為子網(wǎng)一、子網(wǎng)二和子網(wǎng)三。假設(shè)子網(wǎng)一仍然使用原先申請(qǐng)到的B類(lèi)網(wǎng)絡(luò)地址,那么就需要為子網(wǎng)二和子網(wǎng)三各自申請(qǐng)一個(gè)網(wǎng)絡(luò)地址,但這樣會(huì)存在一些弊端,申請(qǐng)新的網(wǎng)絡(luò)地址,需要等待很長(zhǎng)的時(shí)間,并且要花費(fèi)更多的費(fèi)用。
即便申請(qǐng)到了兩個(gè)新的網(wǎng)絡(luò)地址,這也會(huì)使其他路由器的路由表新增針對(duì)這兩個(gè)新的網(wǎng)絡(luò)的路由記錄。另外這樣還會(huì)浪費(fèi)原有網(wǎng)絡(luò)中剩余的大量IP地址。
如果可以從IP地址的主機(jī)號(hào)部分借用一些位作為子網(wǎng)號(hào)來(lái)區(qū)分不同的子網(wǎng),就可以利用原有網(wǎng)絡(luò)中剩余的大量IP地址,而不用申請(qǐng)新的網(wǎng)絡(luò)地址。
例如對(duì)于本例,我們可以借用16位主機(jī)號(hào)中的8位作為子網(wǎng)號(hào),假設(shè)我們給子網(wǎng)一分配的子網(wǎng)號(hào)為0,給子網(wǎng)二分配的子網(wǎng)號(hào)為1,給子網(wǎng)三分配的子網(wǎng)號(hào)為2,之后就可以給各子網(wǎng)中的主機(jī)和路由器接口分配IP地址了。
現(xiàn)在請(qǐng)大家思考這樣一個(gè)問(wèn)題,如果我們未在圖中標(biāo)記子網(wǎng)號(hào)部分,那么我們和計(jì)算機(jī)又是如何知道分類(lèi)地址中主機(jī)號(hào)有多少位被用作了子網(wǎng)號(hào)?
這樣我們就引出了一個(gè)劃分子網(wǎng)的工具,他就是子網(wǎng)掩碼,32比特的子網(wǎng)掩碼,可以表明分類(lèi)IP地址的主機(jī)號(hào)部分,被借用了幾位作為子網(wǎng)號(hào)。
如圖所示,這是32比特的分類(lèi)IPv4地址,它有網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)兩部分構(gòu)成。
當(dāng)我們從主機(jī)號(hào)部分借用一些位作為子網(wǎng)號(hào)時(shí),IP地址從兩級(jí)結(jié)構(gòu)的分類(lèi)IP地址變成了三級(jí)結(jié)構(gòu)的劃分子網(wǎng)的IP地址,我們用連續(xù)的比特1來(lái)對(duì)應(yīng)網(wǎng)絡(luò)號(hào)和子網(wǎng)號(hào),用連續(xù)的比特0來(lái)對(duì)應(yīng)主機(jī)號(hào),這樣就構(gòu)成了劃分子網(wǎng)的IP地址的32比特的子網(wǎng)掩碼
將劃分子網(wǎng)的IP地址與相應(yīng)的子網(wǎng)掩碼進(jìn)行邏輯與運(yùn)算,也就是逐比特相與,就可得到IP地址所在子網(wǎng)的網(wǎng)絡(luò)地址,如圖所示這樣網(wǎng)絡(luò)號(hào)和子網(wǎng)號(hào)被保留,而主機(jī)號(hào)被清零,結(jié)果為IP地址所在子網(wǎng)的網(wǎng)絡(luò)地址。
接下來(lái)我們來(lái)舉例說(shuō)明劃分子網(wǎng)的細(xì)節(jié),已知某個(gè)網(wǎng)絡(luò)的地址為218.75.230.0,使用子網(wǎng)掩碼255.255.255.128,對(duì)其進(jìn)行子網(wǎng)劃分,給出劃分細(xì)節(jié):
注意:由于原來(lái)的8位主機(jī)號(hào)被借走一位作為子網(wǎng)號(hào),因此主機(jī)號(hào)還剩7位,這就是表達(dá)式中8-1的原因,可有2的7次方個(gè)組合,但是我們還要去掉主機(jī)號(hào)為全0的網(wǎng)絡(luò)地址和全1的廣播地址,這就是表達(dá)式中-2的原因。
我們來(lái)看看題目所給的C類(lèi)網(wǎng)地址,218.75.230.0的細(xì)節(jié):
接下來(lái)我們引入子網(wǎng)再來(lái)看看細(xì)節(jié);
最后我們介紹默認(rèn)子網(wǎng)掩碼的概念,默認(rèn)子網(wǎng)掩碼是指在未劃分子網(wǎng)的情況下使用的子網(wǎng)掩碼,概念較為簡(jiǎn)單:
內(nèi)容小結(jié):
無(wú)分類(lèi)編址的IPv4地址
這里我們介紹IPv4地址編制方法的第三個(gè)歷史階段,也就是無(wú)分類(lèi)編制的IPv4地址
:
我們來(lái)看一個(gè)例子:請(qǐng)給出CIDR地址塊128.14.35.7/20的全部細(xì)節(jié)
注意:
- 這里是最小和最大地址,而不是最小和最大可分配地址。
- 聚合C類(lèi)網(wǎng)數(shù)量就是地址數(shù)量除以C類(lèi)網(wǎng)的主機(jī)數(shù)量
接下來(lái)我們介紹CIDR中有關(guān)路由聚合的概念,路由聚合也稱(chēng)為構(gòu)造超網(wǎng)。我們來(lái)舉例說(shuō)明,如圖所示路由器R1與5個(gè)網(wǎng)絡(luò)以及路由器R2直接相連,路由器R1和R2互為相鄰路由器,它們周期性的通告自己所知道的路由信息給對(duì)方。請(qǐng)大家思考一下,R1應(yīng)該將怎樣的路由信息通告給R2
如果R1將自己直連的這5個(gè)網(wǎng)絡(luò)的路由記錄都通告給R則R的路由表會(huì)增加5條路由記錄,為了減少路由記錄對(duì)路由表的占用,能否將這5條路由記錄聚合成1條?
?
答案是肯定的,其方法是找共同前綴,也就是找出這5個(gè)目的網(wǎng)絡(luò)地址的共同前綴,這5個(gè)目的網(wǎng)絡(luò)地址的左起前2個(gè)字節(jié)都是相同的,從第三個(gè)字節(jié)開(kāi)始不同,因此只需將第三個(gè)字節(jié)轉(zhuǎn)換成二進(jìn)制形式,這樣就可以很容易找出這5個(gè)目的網(wǎng)絡(luò)地址的共同前綴,共22個(gè)比特,我們將其記為斜線22,將共同前綴保持不變,而剩余的10個(gè)比特全部取0,然后寫(xiě)成點(diǎn)分10進(jìn)制形式放在斜線22的前面,這就是聚合后的地址塊,也可以稱(chēng)為超網(wǎng)。
通過(guò)本地我們還可以看出網(wǎng)絡(luò)前綴越長(zhǎng),地址塊越小,路由就越具體。需要說(shuō)明的是若路由器查表轉(zhuǎn)發(fā)分組時(shí),發(fā)現(xiàn)有多條路由可選則選擇網(wǎng)絡(luò)前綴最長(zhǎng)的那條,這稱(chēng)為最長(zhǎng)前綴匹配,因?yàn)檫@樣的路由更具體。
接下來(lái)我們看兩個(gè)題:
內(nèi)容小結(jié)如下;
IPv4地址的應(yīng)用規(guī)劃
這里我們介紹IPv4地址的應(yīng)用規(guī)劃,也就是給定一個(gè)IPv4地址塊,如何將其劃分成幾個(gè)更小的地址塊,并將這些地址塊分配給互聯(lián)網(wǎng)中的不同網(wǎng)絡(luò),進(jìn)而可以給各網(wǎng)絡(luò)中的主機(jī)和路由器接口分配IPv4地址,一般有以下兩種方法:
- 一種是采用定長(zhǎng)的子網(wǎng)掩碼進(jìn)行劃分。就是使用同一個(gè)子網(wǎng)掩碼來(lái)劃分子網(wǎng)
- 采用定長(zhǎng)的子網(wǎng)掩碼來(lái)劃分子網(wǎng),每個(gè)子網(wǎng)所分配的IP地址數(shù)量相同,容易造成IP地址浪費(fèi)
- 另一種是采用變長(zhǎng)的子網(wǎng)掩碼進(jìn)行劃分。就是使用不同的子網(wǎng)掩碼來(lái)劃分子網(wǎng)
- 采用變長(zhǎng)的子網(wǎng)掩碼來(lái)劃分子網(wǎng),每個(gè)子網(wǎng)所分配的IP地址數(shù)量可以不相同,盡可能減少了對(duì)IP地址的浪費(fèi)。
接下來(lái)我們舉例說(shuō)明,采用定長(zhǎng)的子網(wǎng)掩碼劃分子網(wǎng)的方法,假設(shè)我們申請(qǐng)到了一個(gè)C類(lèi)網(wǎng)絡(luò),218.75.230.0,要使用定長(zhǎng)的子網(wǎng)掩碼,給圖中所示的小型互聯(lián)網(wǎng)中的各設(shè)備分配IP地址。
這是所申請(qǐng)到的C類(lèi)網(wǎng)地址218.75.230.0,這是它的3字節(jié)網(wǎng)絡(luò)號(hào),這是它的1字節(jié)主機(jī)號(hào),我們需要從主機(jī)號(hào)部分借用3個(gè)比特作為子網(wǎng)號(hào),這樣可劃分出的子網(wǎng)數(shù)量為2的3次方個(gè),也就是8個(gè),可以滿足我們對(duì)子網(wǎng)數(shù)量的要求,而每個(gè)子網(wǎng)上的地址數(shù)量為2的8-3次個(gè),也就是32個(gè),可以滿足我們對(duì)子網(wǎng)上IP地址數(shù)量的要求。這樣我們就可以得出劃分子網(wǎng)所需的子網(wǎng)掩碼,用3個(gè)10進(jìn)制數(shù)255來(lái)對(duì)應(yīng)網(wǎng)絡(luò)號(hào)部分,也就是用24個(gè)連續(xù)的比特1來(lái)對(duì)應(yīng)網(wǎng)絡(luò)號(hào),而最后8個(gè)比特為1110 0000,其中3個(gè)連續(xù)的比特1表示,從主機(jī)號(hào)部分借用三個(gè)比特作為子網(wǎng)號(hào),將這8比特寫(xiě)成10進(jìn)制數(shù)為224。
接下來(lái)我們來(lái)看劃分子網(wǎng)的細(xì)節(jié):
- 這是24比特網(wǎng)絡(luò)號(hào)部分,這是從主機(jī)號(hào)部分借用的3比特作為子網(wǎng)號(hào)部分,這是剩余的5比特主機(jī)號(hào)部分,
- 這是子網(wǎng)1的網(wǎng)絡(luò)地址,這是它的點(diǎn)分十進(jìn)制形式,
- 將網(wǎng)絡(luò)號(hào)和子網(wǎng)號(hào)保持不變,主機(jī)號(hào)從5個(gè)比特0增長(zhǎng)到5個(gè)比特1,就可得到子網(wǎng)一的廣播地址,這是它的點(diǎn)分十進(jìn)制形式。
- 這是比子網(wǎng)1的網(wǎng)絡(luò)地址大1的地址,它是子網(wǎng)1上個(gè)分配給主機(jī)或路由器接口的最小地址,這是他的點(diǎn)分時(shí)進(jìn)制形式
- 這是比子網(wǎng)1的廣播地址小1的地址,它是子網(wǎng)1上可分配給主機(jī)或路由器接口的最大地址,這是它的點(diǎn)分十進(jìn)制形式,
- 這是比子網(wǎng)1的廣播地址大1的地址,它是子網(wǎng)2的網(wǎng)絡(luò)地址,這是它的點(diǎn)分10進(jìn)制形式,
將網(wǎng)絡(luò)號(hào)和子網(wǎng)號(hào)保持不變,主機(jī)號(hào)從5個(gè)比特0增長(zhǎng)到5個(gè)比特1,就可得到子網(wǎng)2的廣播地址,這是它的點(diǎn)分10進(jìn)制形式, - 這是比子網(wǎng)2的網(wǎng)絡(luò)地址大1的地址,它是子網(wǎng)2上可分配給主機(jī)或路由器接口的最小地址,這是它的點(diǎn)分十進(jìn)制形式,
- 這是比子網(wǎng)2的廣播地址小1的地址,它是子網(wǎng)2上可分配給主機(jī)或路由器接口的最大地址,這是它的點(diǎn)分十進(jìn)制形式,
- 這是比子網(wǎng)2的廣播地址大1的地址,它是子網(wǎng)3的網(wǎng)絡(luò)地址,這是它的點(diǎn)分十進(jìn)制形式,
- 以此類(lèi)推,我們可以得到劃分子網(wǎng)的全部細(xì)節(jié)
現(xiàn)在我們就可以從子網(wǎng)1~8中任選5個(gè),分配給圖中的網(wǎng)絡(luò)N1到N5。通過(guò)本地可以看出采用定長(zhǎng)的子網(wǎng)掩碼進(jìn)行子網(wǎng)劃分,只能劃分出二的N次方個(gè)子網(wǎng),其中N是從主機(jī)號(hào)部分借用的用來(lái)作為子網(wǎng)號(hào)的比特?cái)?shù)量,每個(gè)子網(wǎng)所分配的IP地址數(shù)量相同,容易造成IP地址的浪費(fèi)。
例如圖中的網(wǎng)絡(luò)5只需要4個(gè)IP地址,但是我們只能給他分配32個(gè)IP地址,這樣就造成了IP地址的嚴(yán)重浪費(fèi)。
接下來(lái)我們舉例說(shuō)明,使用變長(zhǎng)的子網(wǎng)掩碼劃分子網(wǎng)的方法,本例與之前的例子基本一樣,只是劃分子網(wǎng)的方法,改為采用變長(zhǎng)的子網(wǎng)掩碼。
既然網(wǎng)絡(luò)N1需要9個(gè)地址,那么分配給網(wǎng)絡(luò)N1的地址的主機(jī)號(hào)應(yīng)為4個(gè)比特,因?yàn)?的4次方等于16,這樣網(wǎng)絡(luò)N1就可有16個(gè)地址。由于使用4個(gè)比特作為主機(jī)號(hào),因此剩余28個(gè)比特可作為網(wǎng)絡(luò)前綴。
既然網(wǎng)絡(luò)N2需要28個(gè)地址,那么分配給網(wǎng)絡(luò)N2的地址的主機(jī)號(hào)應(yīng)該為5個(gè)比特,因?yàn)?的5次方等于32,這樣網(wǎng)絡(luò)N2就可有32個(gè)地址,由于使用5個(gè)比特作為主機(jī)號(hào),因此剩余27個(gè)比特可作為網(wǎng)絡(luò)前綴,
以此類(lèi)推,我們將所得出的各網(wǎng)絡(luò)所需地址塊的大小標(biāo)注在它們各自的旁邊,這樣我們就可得到本例的應(yīng)用需求:
也就是從地址塊218.75.230.0/24中,取出5個(gè)地址塊,按需分配給圖中所示的5個(gè)網(wǎng)絡(luò),218.75.230.0/24地址塊所包含的全部地址如下所示,我們需要在該地址塊中給圖中所示的網(wǎng)絡(luò)N1到N5分配子塊,分配的原則是每個(gè)子塊的起點(diǎn)位置不能隨意選取,只能選取塊大小整數(shù)倍的地址作為起點(diǎn),建議大家先給大的子塊進(jìn)行分配。
分配結(jié)果如下:
通過(guò)本例可以看出采用變長(zhǎng)的子網(wǎng)掩碼進(jìn)行子網(wǎng)劃分,可以按需劃分出相應(yīng)數(shù)量的子網(wǎng),每個(gè)子網(wǎng)所分配到的IP地址數(shù)量可以不相同,盡可能減少了對(duì)IP地址的浪費(fèi)。例如圖中的網(wǎng)絡(luò)5只需要4個(gè)IP地址,我們也非常精確的給他分配了4個(gè)IP地址,沒(méi)有造成IP地址的浪費(fèi)。
內(nèi)容小結(jié):
IP數(shù)據(jù)報(bào)的發(fā)送和轉(zhuǎn)發(fā)過(guò)程
IP數(shù)據(jù)報(bào)的發(fā)送和轉(zhuǎn)發(fā)過(guò)程包含以下兩部分:
- 一部分是主機(jī)發(fā)送IP數(shù)據(jù)報(bào)
- 另一部分是路由器轉(zhuǎn)發(fā)IP數(shù)據(jù)報(bào)
需要說(shuō)明的是為了將重點(diǎn)放在TCP協(xié)議站的網(wǎng)際層,發(fā)送和轉(zhuǎn)發(fā)IP數(shù)據(jù)報(bào)的過(guò)程上,在接下來(lái)的舉例中,我們將忽略使用ARP協(xié)議來(lái)獲取目的主機(jī)或路由器接口的MAC地址的過(guò)程,以及以太網(wǎng)交換機(jī)自學(xué)習(xí)和轉(zhuǎn)發(fā)幀的過(guò)程。下面我們就來(lái)舉例說(shuō)明,IP數(shù)據(jù)報(bào)的發(fā)送和轉(zhuǎn)發(fā)過(guò)程。
在下圖所示的小型互聯(lián)網(wǎng)中,路由器的接口0直連了1個(gè)交換式以太網(wǎng),接口1也直連了一個(gè)交換式以太網(wǎng):
- 同一個(gè)網(wǎng)絡(luò)中的主機(jī)之間可以直接通信,這屬于
直接交付
- 不同網(wǎng)絡(luò)中的主機(jī)之間的通信,需要通過(guò)路由器來(lái)中轉(zhuǎn),這屬于
間接交付
那么源主機(jī)如何判斷出目的主機(jī)是否與自己在同一個(gè)網(wǎng)絡(luò)中?
我們來(lái)舉例說(shuō)明:
-
假設(shè)主機(jī)C要給主機(jī)F發(fā)送IP數(shù)據(jù)報(bào),主機(jī)C將自己的IP地址和子網(wǎng)掩碼相與,就可以得到主機(jī)C所在網(wǎng)絡(luò)的網(wǎng)絡(luò)地址。
-
既然主機(jī)C要給主機(jī)F發(fā)送IP數(shù)據(jù)報(bào),主機(jī)C肯定知道主機(jī)F的IP地址,否則就沒(méi)法發(fā)送了。主機(jī)C將主機(jī)F的IP地址與自己的子網(wǎng)掩碼相遇,就可得到目的網(wǎng)絡(luò)地址
-
該地址與主機(jī)C的網(wǎng)絡(luò)地址不相等,因此主機(jī)C就知道了主機(jī)F與自己不在同一個(gè)網(wǎng)絡(luò),他們之間的通信屬于間接交付,主機(jī)C需要將IP數(shù)據(jù)報(bào)傳輸給路由器,由路由器將IP數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)給主機(jī)F
那么主機(jī)C又是如何知道應(yīng)該把IP數(shù)據(jù)報(bào)交給哪個(gè)路由器進(jìn)行轉(zhuǎn)發(fā)呢?
實(shí)際上用戶為了讓本網(wǎng)絡(luò)中的主機(jī)能和其他網(wǎng)絡(luò)中的主機(jī)進(jìn)行通信,就要必須給其指定本網(wǎng)絡(luò)中的一個(gè)路由器,由該路由器幫忙進(jìn)行轉(zhuǎn)發(fā),所指定的路由器也被稱(chēng)為默認(rèn)網(wǎng)關(guān)
。
對(duì)于本例我們可以將路由器接口0的IP地址指定給該接口所直連網(wǎng)絡(luò)中的各個(gè)主機(jī)作為默認(rèn)網(wǎng)關(guān)。同理可將路由器接口1的IP地址指定給該接口所直連網(wǎng)絡(luò)中的各個(gè)主機(jī)作為默認(rèn)網(wǎng)關(guān),這樣當(dāng)本網(wǎng)絡(luò)中的主機(jī)要和其他網(wǎng)絡(luò)中的主機(jī)進(jìn)行通信時(shí),會(huì)將IP數(shù)據(jù)報(bào)傳輸給默認(rèn)網(wǎng)關(guān),由默認(rèn)網(wǎng)關(guān)幫主機(jī)將IP數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)出去
假設(shè)本例中的主機(jī)A要給主機(jī)D發(fā)送IP數(shù)據(jù)報(bào),這屬于間接交付,主機(jī)A會(huì)將該IP數(shù)據(jù)報(bào)傳輸給自己的默認(rèn)網(wǎng)關(guān),也就是圖中所示的路由器。
那么當(dāng)路由器收到IP數(shù)據(jù)報(bào)后,又是如何轉(zhuǎn)發(fā)的呢?
- 路由器首先會(huì)檢查IP數(shù)據(jù)報(bào)的首部是否出錯(cuò),若出錯(cuò)則丟棄該IP數(shù)據(jù)報(bào),并通告源主機(jī),若沒(méi)有出錯(cuò)則進(jìn)行轉(zhuǎn)發(fā)。
- 然后路由器根據(jù)IP數(shù)據(jù)報(bào)首部中的目的地址,在自己的路由表中查找匹配的路由條目
- 若找到匹配的路由條目,則轉(zhuǎn)發(fā)給路由條目中指示的下一跳
- 若找不到則丟棄該IP數(shù)據(jù)報(bào),并通告源主機(jī)。
為了簡(jiǎn)單起見(jiàn),我們假設(shè)本地中的IP數(shù)據(jù)報(bào)首部沒(méi)有出現(xiàn)差錯(cuò),路由器取出IP數(shù)據(jù)報(bào)首部各地址字段的值,源地址字段的值為主機(jī)A的IP地址,目的地址字段的值為主機(jī)D的IP地址,接下來(lái)路由器就要對(duì)該IP數(shù)據(jù)報(bào)進(jìn)行查表轉(zhuǎn)發(fā)了。
當(dāng)我們給路由器的接口配置IP地址和子網(wǎng)掩碼時(shí),路由器就知道了自己的該接口與哪個(gè)網(wǎng)絡(luò)是直連的。例如在本例中接口0所直連的網(wǎng)絡(luò)是192.168.0.0,相應(yīng)的地址源碼為255.255.255.128,不需要下一跳路由器,因?yàn)榻涌?與該網(wǎng)絡(luò)是直連的,接口1所直連的網(wǎng)絡(luò)是192.168.0.128,相應(yīng)的地址源碼為255.255.255.128,不需要下一跳路由器,因?yàn)榻涌?與該網(wǎng)絡(luò)是直連的,
需要說(shuō)明的是路由表中可能還會(huì)有其他路由條目,這可以是用戶或網(wǎng)絡(luò)管理員手工配置的靜態(tài)路由,也可以是路由器使用路由協(xié)議自動(dòng)獲取到的動(dòng)態(tài)路由。
接下來(lái)路由器根據(jù)IP數(shù)據(jù)報(bào)的目的地址,在自己的路由表中查找匹配的路由條目。逐條檢查路由條目,將目的地址與路由條目中的地址掩碼相與得到目的網(wǎng)絡(luò)地址,看和路由表中的是否吻合。如果吻合,則該條路由條目就是匹配的路由條目,按照他的下一跳指示,也就是從接口1轉(zhuǎn)發(fā)該IP數(shù)據(jù)報(bào),這樣主機(jī)D就可以收到路由器轉(zhuǎn)發(fā)來(lái)的該IP數(shù)據(jù)報(bào)。
需要說(shuō)明的是我們這里所介紹的路由器查表轉(zhuǎn)發(fā)IP數(shù)據(jù)報(bào)的過(guò)程,只是為了讓同學(xué)們理解其最基本的工作原理,在路由器的實(shí)際研發(fā)過(guò)程中,需要設(shè)計(jì)很好的數(shù)據(jù)結(jié)構(gòu),以便提高查找速度。
?再來(lái)看這種情況,假設(shè)主機(jī)A給本網(wǎng)絡(luò)上的各設(shè)備發(fā)送了一個(gè)廣播IP數(shù)據(jù)報(bào),在數(shù)據(jù)報(bào)首部中的目的地址字段,可以填寫(xiě)的目的地址為192.168.0.127,這是本網(wǎng)絡(luò)的廣播地址,也可以填寫(xiě)255.255.255.255,這是受限的廣播地址。該網(wǎng)絡(luò)中的各設(shè)備都會(huì)收到該廣播IP數(shù)據(jù)報(bào),但是路由器收到后并不會(huì)轉(zhuǎn)發(fā)該數(shù)據(jù)報(bào),也就是說(shuō)路由器是隔離廣播域的,這是很有必要的。
試想一下,如果因特網(wǎng)中數(shù)量巨大的路由器,收到廣播IP數(shù)據(jù)報(bào)后都進(jìn)行轉(zhuǎn)發(fā),則會(huì)造成巨大的廣播風(fēng)暴,嚴(yán)重浪費(fèi)因特網(wǎng)資源。同理,主機(jī)A給另一個(gè)網(wǎng)絡(luò)發(fā)送廣播IP數(shù)據(jù)報(bào),在數(shù)據(jù)報(bào)首部中的目的地址字段,填寫(xiě)的目的地址為192.168.0.255,這是網(wǎng)絡(luò)192.168.0.128的廣播地址。主機(jī)A將該廣播IP數(shù)據(jù)報(bào)傳輸給路由器,希望由路由器幫其轉(zhuǎn)發(fā),但路由器判斷出這是廣播IP數(shù)據(jù)報(bào),不會(huì)轉(zhuǎn)發(fā)。
內(nèi)容小結(jié)如下;
?
靜態(tài)路由配置及其可能產(chǎn)生的路由環(huán)路問(wèn)題
靜態(tài)路由配置
是指用戶或網(wǎng)絡(luò)管理員使用路由器的相關(guān)命令,給路由器人工配置路由表,這種人工配置方式簡(jiǎn)單,開(kāi)銷(xiāo)小,但不能及時(shí)適應(yīng)網(wǎng)絡(luò)狀態(tài)(流量、拓?fù)涞?#xff09;的變化,一般只在小規(guī)模網(wǎng)絡(luò)中
使用靜態(tài)路由配置,可能出現(xiàn)以下導(dǎo)致產(chǎn)生路由環(huán)路的錯(cuò)誤:
- 配置錯(cuò)誤
- 聚合了不存在的網(wǎng)絡(luò)
- 網(wǎng)絡(luò)故障
接下來(lái)我們首先舉例說(shuō)明靜態(tài)路由配置
我們采用如圖所示的網(wǎng)絡(luò)拓?fù)浜拖鄳?yīng)的IP地址配置。路由器R1通過(guò)自己的接口0所配置的IP地址和地址掩碼,可以自動(dòng)得出接口0所在的網(wǎng)絡(luò)。由于接口0與該網(wǎng)絡(luò)直連,則下一跳不是路由器地址,而是通過(guò)接口0轉(zhuǎn)發(fā)IP數(shù)據(jù)報(bào)給該網(wǎng)絡(luò)中的某個(gè)主機(jī),這屬于直接交付。這條自動(dòng)得出的路由條目的類(lèi)型屬于直連路由。同理,R1還可自行得出接口1的直連網(wǎng)絡(luò)路由條目。路由器R2同樣如此
-
假設(shè)R1要轉(zhuǎn)發(fā)1個(gè)IP數(shù)據(jù)報(bào)給該網(wǎng)絡(luò)中的某個(gè)主機(jī),從圖中可以看出,R1應(yīng)該將該IP數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)給路由器R2的接口0
-
但R1的路由表中并沒(méi)有關(guān)于該目的網(wǎng)絡(luò)的路由條目,換句話說(shuō),R1并不知道目的網(wǎng)絡(luò)的存在。因此我們可以使用路由器的相關(guān)配置命令,給R1添加1條到達(dá)該目的網(wǎng)絡(luò)的路由條目,下1跳為路由器R2的接口0的地址,該路由條目是我們?nèi)斯づ渲玫撵o態(tài)路由:
-
假設(shè)R2要轉(zhuǎn)發(fā)1個(gè)IP數(shù)據(jù)報(bào)給該網(wǎng)絡(luò)中的某個(gè)主機(jī),從圖中可以看出,R2應(yīng)該將該IP數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)給路由器R1的接口1,但R2的路由表中并沒(méi)有關(guān)于該目的網(wǎng)絡(luò)的路由條目,因此我們可以給R2添加1條到達(dá)該目的網(wǎng)絡(luò)的路由條目。下1跳為路由器R1的接口1的地址,類(lèi)型為靜態(tài)。以上就是我們舉例說(shuō)明的靜態(tài)路由配置。
接下來(lái)我們舉例說(shuō)明默認(rèn)路由的概念
假設(shè)路由器R的接口2連接到了因特網(wǎng),假設(shè)R1要轉(zhuǎn)發(fā)1個(gè)IP數(shù)據(jù)報(bào)給因特網(wǎng)中某個(gè)網(wǎng)絡(luò)中的某個(gè)主機(jī),從圖中可以看出,R1應(yīng)該將該IP數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)給路由器R的接口0。由于因特網(wǎng)中包含了眾多的網(wǎng)絡(luò),如果我們給R1添加針對(duì)這些網(wǎng)絡(luò)的每1條路由條目,則會(huì)給人工配置帶來(lái)巨大的工作量,并且使R1的路由表變得非常大,降低了查表轉(zhuǎn)發(fā)的速度。
實(shí)際上對(duì)于具有相同下一跳的不同目的網(wǎng)絡(luò)的路由條目,我們可以用一條默認(rèn)路由條目來(lái)替代。默認(rèn)路由條目中的目的網(wǎng)絡(luò)地址為0.0.0.0,地址掩碼也為0.0.0.0,其CIDR形式為0.0.0.0/0。對(duì)于本例默認(rèn)路由條目中的下一跳,是路由器R2的接口0的地址。
由于默認(rèn)路由也是由我們?nèi)斯づ渲玫?#xff0c;因此其類(lèi)型也是靜態(tài)。在配置了默認(rèn)路由條目后,我們甚至可以刪除這條路由條目。
接下來(lái)我們舉例說(shuō)明特定主機(jī)路由
的概念
有時(shí)候我們可以給路由器添加針對(duì)某個(gè)主機(jī)的特定主機(jī)路由條目,一般用于網(wǎng)絡(luò)管理人員對(duì)網(wǎng)絡(luò)的管理和測(cè)試。另外在需要考慮某種安全問(wèn)題時(shí),也可以采用特定主機(jī)路由
假設(shè)192.168.2.1是該網(wǎng)絡(luò)中的某臺(tái)特定主機(jī),我們可以在R1的路由表中添加1條到達(dá)該主機(jī)的特定主機(jī)路由條目。特定主機(jī)路由條目中的目的網(wǎng)絡(luò)地址為該特定主機(jī)的IP地址,地址掩碼為255.255.255.255,其CIDR形式為特定主機(jī)IP地址斜線32。對(duì)于本例特定主機(jī)路由條目中的下一跳,是路由器R2的接口0的地址。由于特定主機(jī)路由也是由我們?nèi)斯づ渲玫?#xff0c;因此其類(lèi)型也是靜態(tài)。
可以看出特定主機(jī)路由的目的網(wǎng)絡(luò)前綴最長(zhǎng),路由最具體,默認(rèn)路由的目的網(wǎng)絡(luò)前綴最短,路由最模糊,當(dāng)路由器查表轉(zhuǎn)發(fā)IP數(shù)據(jù)報(bào)時(shí),若有多條路由條目可選,則采用最長(zhǎng)前綴匹配的原則,選用目的網(wǎng)絡(luò)前綴最長(zhǎng)的路由條目進(jìn)行轉(zhuǎn)發(fā)
接下來(lái)我們舉例說(shuō)明,靜態(tài)路由配置錯(cuò)誤可能導(dǎo)致的路由環(huán)路問(wèn)題,如圖所示,這是各路由器自動(dòng)得出的直連網(wǎng)絡(luò),這是我們給各路由器人工配置的靜態(tài)路由。
-
我們來(lái)看看路由器R2中的這條人工配置的靜態(tài)路由條目,它表明 R2要轉(zhuǎn)發(fā)IP數(shù)據(jù)報(bào)到該網(wǎng)絡(luò),下一跳,應(yīng)轉(zhuǎn)發(fā)給R1的接口1
-
假設(shè)我們將下一跳錯(cuò)誤的配置成了該地址,也就是錯(cuò)誤的指向了R3的接口0,則當(dāng)R2要轉(zhuǎn)發(fā)IP數(shù)據(jù)報(bào)到該網(wǎng)絡(luò)時(shí),下一跳會(huì)錯(cuò)誤的轉(zhuǎn)發(fā)給路由器R3的接口0,R3收到該IP數(shù)據(jù)報(bào)后進(jìn)行查表轉(zhuǎn)發(fā),找到了匹配的路由條目,下一跳,應(yīng)該轉(zhuǎn)發(fā)給該地址,也就是轉(zhuǎn)發(fā)給R的接口1
-
R2收到該IP數(shù)據(jù)報(bào)后進(jìn)行查表轉(zhuǎn)發(fā),找到了匹配的路由條目,下一跳應(yīng)該轉(zhuǎn)發(fā)給該地址,也就是轉(zhuǎn)發(fā)給R3的接口0。很顯然由于我們靜態(tài)路由配置錯(cuò)誤,導(dǎo)致R2和R3之間產(chǎn)生了路由環(huán)路。
為了防止IP數(shù)據(jù)報(bào)在路由環(huán)路中永久兜圈,在IP數(shù)據(jù)報(bào)首部設(shè)有生存時(shí)間、TTL字段。IP數(shù)據(jù)報(bào)進(jìn)入路由器后,TTL字段的值被路由器減1,若TTL字段的值減1號(hào)不等于0,則被路由器轉(zhuǎn)發(fā),否則被丟棄。
我們?cè)賮?lái)舉例說(shuō)明,聚合了不存在的網(wǎng)絡(luò)可能導(dǎo)致的路由環(huán)路問(wèn)題
如下是路由器R1的路由表
這是路由器R2的路由表:
我們給其人工配置了1條聚合路由,它是由圖中兩個(gè)網(wǎng)絡(luò)地址聚合而來(lái)的,具體方法就是找這兩個(gè)網(wǎng)絡(luò)地址的共同前綴,然后將共同前綴保持不變,將剩余比特全部取0,寫(xiě)成點(diǎn)分10進(jìn)制形式,在其后面寫(xiě)上斜線,斜線后面寫(xiě)上共同前綴的數(shù)量。
假設(shè)R2要轉(zhuǎn)發(fā)IP數(shù)據(jù)報(bào)到該網(wǎng)絡(luò),進(jìn)行查表轉(zhuǎn)發(fā),找到了匹配的路由條目,下一跳應(yīng)該轉(zhuǎn)發(fā)給該地址,也就是轉(zhuǎn)發(fā)給R1的接口1。R1收到該IP數(shù)據(jù)報(bào)后進(jìn)行查表轉(zhuǎn)發(fā),找到了匹配的路由條目,下一跳,是通過(guò)接口2直接交付。
我們?cè)賮?lái)看看這條聚合路由的細(xì)節(jié),它實(shí)際上包含了以下4個(gè)網(wǎng)絡(luò),其中兩個(gè)存在,兩個(gè)不存在。
當(dāng)R2要轉(zhuǎn)發(fā)IP數(shù)據(jù)報(bào)到這個(gè)不存在的網(wǎng)絡(luò)時(shí),進(jìn)行查表轉(zhuǎn)發(fā),找到了匹配的路由條目,下一跳應(yīng)該轉(zhuǎn)發(fā)給該地址,也就是轉(zhuǎn)發(fā)給R1的接口1,但對(duì)于這個(gè)不存在的網(wǎng)絡(luò),路由器R2應(yīng)該不予轉(zhuǎn)發(fā),卻錯(cuò)把它轉(zhuǎn)發(fā)給了路由器R1。
R1收到該IP數(shù)據(jù)報(bào)后進(jìn)行查表轉(zhuǎn)發(fā),只能走默認(rèn)路由,下一跳,應(yīng)該轉(zhuǎn)發(fā)給該地址,也就是轉(zhuǎn)發(fā)給R的接口0。很顯然R1和R2之間產(chǎn)生了路由環(huán)路。
針對(duì)這種情況,我們可以在R2的路由表中添加針對(duì)所聚合的不存在的網(wǎng)絡(luò)的黑洞路由,黑洞路由的下一跳為null0,這是路由器內(nèi)部的虛擬接口,可以把它形象的看成是1個(gè)黑洞,IP數(shù)據(jù)報(bào)進(jìn)入它后就有去無(wú)回了,也就是路由器丟棄了該IP數(shù)據(jù)報(bào),而不是轉(zhuǎn)發(fā)該IP數(shù)據(jù)報(bào)。
現(xiàn)在假設(shè)R2要轉(zhuǎn)發(fā)IP數(shù)據(jù)報(bào)到這個(gè)不存在的網(wǎng)絡(luò),進(jìn)行查表轉(zhuǎn)發(fā),找到了兩條可選的路由條目,根據(jù)最長(zhǎng)前綴匹配的原則,將會(huì)選擇這條到達(dá)該不存在網(wǎng)絡(luò)的黑洞路由,下一跳為虛擬接口null0,因此該IP數(shù)據(jù)報(bào)會(huì)進(jìn)入這個(gè)黑洞
接下來(lái)我們?cè)賮?lái)舉例說(shuō)明,網(wǎng)絡(luò)故障可能導(dǎo)致的路由環(huán)路問(wèn)題
-
假設(shè)路由器R1檢測(cè)到其接口0所直連的網(wǎng)絡(luò)出現(xiàn)了故障,而不可達(dá),就會(huì)自動(dòng)在其路由表中刪除該直連網(wǎng)絡(luò)的路由條目。
-
之后,R2要轉(zhuǎn)發(fā)IP數(shù)據(jù)報(bào)到192.168.1.0/24網(wǎng)絡(luò),進(jìn)行查表轉(zhuǎn)發(fā),找到匹配的路由條目,下一跳為R1的接口1。
-
R1收到該IP數(shù)據(jù)報(bào)后進(jìn)行查表轉(zhuǎn)發(fā),找不到該IP數(shù)據(jù)報(bào)的目的,網(wǎng)絡(luò)的相關(guān)路由條目,只能走默認(rèn)路由,下一跳應(yīng)該轉(zhuǎn)發(fā)給該地址,也就是轉(zhuǎn)發(fā)給R2的接口0,
-
這樣就將該IP數(shù)據(jù)報(bào)錯(cuò)誤的轉(zhuǎn)發(fā)給了R2,很顯然 R1和R之間產(chǎn)生了路由環(huán)路。
針對(duì)這種情況,我們可以在R1的路由表中添加針對(duì)該(故障)直連網(wǎng)絡(luò)的黑洞路由,這樣當(dāng)R2要轉(zhuǎn)發(fā)IP數(shù)據(jù)報(bào)到該網(wǎng)絡(luò)時(shí),進(jìn)行查表轉(zhuǎn)發(fā),找到匹配的路由條目,下一跳轉(zhuǎn)發(fā)給R1的接口1,R1收到該IP數(shù)據(jù)報(bào)后,進(jìn)行查表轉(zhuǎn)發(fā),找到匹配的路由條目,這是1條黑洞路由,下一跳為虛擬接口null0,因此該IP數(shù)據(jù)報(bào)會(huì)進(jìn)入這個(gè)黑洞。
假設(shè)一段時(shí)間后之前的故障消失了,則R1又自動(dòng)的得出了其接口0的直連網(wǎng)絡(luò)的路由條目,并將我們之前人工配置的針對(duì)該直連網(wǎng)絡(luò)的黑洞路由條目設(shè)置為失效狀態(tài)。
假設(shè)R1再次檢測(cè)到其接口0所直連的網(wǎng)絡(luò)出現(xiàn)了故障而不可達(dá),則會(huì)自動(dòng)在其路由表中刪除該直連網(wǎng)絡(luò)的路由條目,并將我們之前人工配置的針對(duì)該直連網(wǎng)絡(luò)的黑洞路由條目設(shè)置為生效狀態(tài)。
內(nèi)容小結(jié)如下:
路由選擇
路由選擇協(xié)議概述
路由選擇可分為以下兩類(lèi):
- 靜態(tài)路由選擇
- 動(dòng)態(tài)路由選擇
因特網(wǎng)是全球最大的互聯(lián)網(wǎng)絡(luò),它所采用的路由選擇協(xié)議具有以下三個(gè)主要特點(diǎn),分別是:
自適應(yīng)
:因特網(wǎng)采用的是動(dòng)態(tài)路由選擇,能較好的適應(yīng)網(wǎng)絡(luò)狀態(tài)的變化。分布式
:因特網(wǎng)中的各路由器,通過(guò)相互間的信息交互,共同完成路由信息的獲取和更新分層次
:將整個(gè)因特網(wǎng)劃分為許多較小的自治系統(tǒng)AS,例如一個(gè)較大的因特網(wǎng)服務(wù)提供商,就可劃分為一個(gè)自治系統(tǒng),在自治系統(tǒng)內(nèi)部和自治系統(tǒng)外部,采用不同類(lèi)別的路由選擇協(xié)議,分別進(jìn)行路由選擇。
下面我們來(lái)舉例說(shuō)明,因特網(wǎng)采用的分層次路由選擇協(xié)議,假設(shè)這是因特網(wǎng)中的很小的一部分,我們可以將這些網(wǎng)絡(luò)和路由器劃歸到兩個(gè)不同的自治系統(tǒng):
- 自治之間的路由選擇,簡(jiǎn)稱(chēng)為
域間路由選擇
。自治系統(tǒng)內(nèi)部的路由選擇,簡(jiǎn)稱(chēng)為域內(nèi)路由選擇
。 - 域間路由選擇使用外部網(wǎng)關(guān)協(xié)議EGP類(lèi)別的路由選擇協(xié)議,域內(nèi)路由選擇使用內(nèi)部網(wǎng)關(guān)協(xié)議IGP這個(gè)類(lèi)別的路由選擇協(xié)議
需要說(shuō)明的是外部網(wǎng)關(guān)協(xié)議EGP
和內(nèi)部網(wǎng)關(guān)協(xié)議IGP
只是路由選擇協(xié)議的分類(lèi)名稱(chēng),而不是具體的路由選擇協(xié)議。另外名稱(chēng)中使用的是網(wǎng)關(guān)這個(gè)名詞,是因?yàn)樵谝蛱鼐W(wǎng)早期的RFC文檔中沒(méi)有使用路由器,而使用的是網(wǎng)關(guān)這一名詞?,F(xiàn)在新的RFC文檔中又改用路由器這一名詞,因此外部網(wǎng)關(guān)協(xié)議EGP可改稱(chēng)為外部路由協(xié)議ERP,內(nèi)部網(wǎng)關(guān)協(xié)議IGP,可改稱(chēng)為內(nèi)部路由協(xié)議IRP。
注意:
在一個(gè)自治系統(tǒng)內(nèi)部使用的具體的內(nèi)部網(wǎng)關(guān)協(xié)議,與因特網(wǎng)中其他自治系統(tǒng)中選用何種內(nèi)部網(wǎng)關(guān)協(xié)議無(wú)關(guān)。
接下來(lái)我們給出常見(jiàn)的路由選擇協(xié)議:
路由選擇協(xié)議是在路由器上運(yùn)行的,下面我們就來(lái)看看路由器的基本結(jié)構(gòu)
路由器是一種具有多個(gè)輸入端口和輸出端口的專(zhuān)用計(jì)算機(jī),其任務(wù)是轉(zhuǎn)發(fā)分組。
整個(gè)路由器結(jié)構(gòu)可劃分為兩大部分:
- 路由選擇部分
- 路由選擇部分的核心構(gòu)件是路由選擇處理機(jī),它的任務(wù)是根據(jù)所使用的路由選擇協(xié)議,周期性的與其他路由器進(jìn)行路由信息的交互,來(lái)更新路由表。
- 分組轉(zhuǎn)發(fā)部分
- 分組轉(zhuǎn)發(fā)部分由三部分構(gòu)成,分別是交換結(jié)構(gòu),一組輸入端口,一組輸出端口。
接下來(lái)我們來(lái)看看路由器的工作過(guò)程:
- 信號(hào)從某個(gè)輸入端口進(jìn)入路由器,物理層將信號(hào)轉(zhuǎn)換成比特流,送交數(shù)據(jù)鏈路層處理,數(shù)據(jù)鏈入層從比特流中識(shí)別出幀去掉幀頭和幀尾后,送交網(wǎng)絡(luò)層處理。如果送交網(wǎng)絡(luò)層的分組是普通代轉(zhuǎn)發(fā)的數(shù)據(jù)分組,則根據(jù)分組首部中的目的地址進(jìn)行查表轉(zhuǎn)發(fā),若找不到匹配的轉(zhuǎn)發(fā)條目,則丟棄來(lái)分組,否則按照匹配條目中所指示的端口進(jìn)行轉(zhuǎn)發(fā)。
- 轉(zhuǎn)發(fā)出去時(shí),網(wǎng)絡(luò)層更新數(shù)據(jù)分組首部中某些字段的值,例如將數(shù)據(jù)分組的生存時(shí)間減1,然后送交數(shù)據(jù)鏈路層進(jìn)行封裝,數(shù)據(jù)鏈路層將數(shù)據(jù)分組封裝成幀,送交物理層處理,物理層將幀看作是比特流,將其變換成相應(yīng)的電信號(hào)進(jìn)行發(fā)送。
- 如果送交網(wǎng)絡(luò)層的分組是路由器之間交換路由信息的路由報(bào)文,則把這種分組送交路由選擇處理機(jī),路由選擇處理機(jī)根據(jù)分組的內(nèi)容來(lái)更新自己的路由表。路由表一般僅包含從目的網(wǎng)絡(luò)到下一跳的映射,路由表需要對(duì)網(wǎng)絡(luò)拓?fù)渥兓挠?jì)算最優(yōu)化,而轉(zhuǎn)發(fā)表是從路由表得出的,轉(zhuǎn)發(fā)表的結(jié)構(gòu)應(yīng)當(dāng)是查找過(guò)程最優(yōu)化
需要說(shuō)明的是我們?cè)谇懊娴撵o態(tài)路由配置的相關(guān)內(nèi)容中,并沒(méi)有嚴(yán)格區(qū)分路由器中的路由表和轉(zhuǎn)發(fā)表,這樣有助于簡(jiǎn)化問(wèn)題的分析。因此在后續(xù)有關(guān)路由選擇協(xié)議的內(nèi)容中,我們?nèi)匀徊粐?yán)格區(qū)分路由表和轉(zhuǎn)發(fā)表,還是以路由表來(lái)表述問(wèn)題。
注意:
-
路由選擇處理機(jī)除了處理收到的路由報(bào)文外,還會(huì)周期性的給其他路由器發(fā)送自己所知道的路由信息。
-
路由器的各端口還應(yīng)具有輸入緩沖區(qū)和輸出緩沖區(qū)
-
輸入緩沖區(qū)用來(lái)暫存,新進(jìn)入路由器,但還來(lái)不及處理的分組。
-
輸出緩沖區(qū)用來(lái)暫存,已經(jīng)處理完畢,但還來(lái)不及發(fā)送的分組。
需要說(shuō)明的是路由器的端口一般都具有輸入和輸出的功能。我們圖中分別給出輸入端口和輸出端口,目的在于更好的演示路由器的基本工作過(guò)程,使同學(xué)們更容易理解。
-
內(nèi)容小結(jié):
路由信息協(xié)議RIP的基本工作原理
需要說(shuō)明的是有些廠商的路由器并沒(méi)有嚴(yán)格按照RIP標(biāo)準(zhǔn)文檔的規(guī)定來(lái)實(shí)現(xiàn)RIP,例如思科路由器中的RIP,將路由器到直連網(wǎng)絡(luò)的距離定義為零,但這并不影響RIP的正常運(yùn)行。
RIP認(rèn)為好的路由就是距離短的路由,也就是所通過(guò)路由器數(shù)量最少的路由,如圖所示,從R1到R5可以走上面這條路由,也可以走下面這條路由,RIP認(rèn)為R1到R5的好路由是圖中只經(jīng)過(guò)一個(gè)路由器R4的這條路由。盡管這條路由上各段鏈路的帶寬都非常小:
再來(lái)看這個(gè)例子,從R1到R6可以走上面這條路由,也可以走下面這條路由,而這兩條路由是等價(jià)的,RIP該如何選擇?
當(dāng)?shù)竭_(dá)同一目的網(wǎng)絡(luò),有多條距離相等的路由時(shí),RIP可以進(jìn)行等價(jià)負(fù)載均衡,也就是將通信量均衡的分布到多條等價(jià)的路由上
RIP包含以下三個(gè)要點(diǎn),
- 第一個(gè)要點(diǎn)是和誰(shuí)交換信息?答案是僅和相鄰路由器交換信息。我們來(lái)舉例說(shuō)明相鄰路由器的概念,下圖中R1與R2故為相鄰路由器,因?yàn)樗鼈兪侵边B的,中間沒(méi)有其他路由器。同理,R2與R3也互為相鄰路由器,但是R1與R3不是相鄰路由器,因?yàn)樗鼈冎g還存在其他路由器。
- 第二個(gè)要點(diǎn)是交換什么信息?答案是路由器自己的路由表。
- 第三個(gè)要點(diǎn)是何時(shí)交換信息,答案是周期性交換,例如每30秒發(fā)送一次RIP更新報(bào)文
接下來(lái)我們舉例說(shuō)明RIP的基本工作過(guò)程:
- 路由器剛開(kāi)始工作時(shí),只知道自己到直連網(wǎng)絡(luò)的距離是1。如圖所示,這是各路由器剛開(kāi)始工作時(shí)各自的路由表,其中包含的路由條目都是到達(dá)各自直連網(wǎng)絡(luò)的信息,其距離都是1
- 之后每個(gè)路由器僅和相鄰路由器周期性的交換,并更新路由信息。若干次交換和更新后,每個(gè)路由器都知道到達(dá)本自治系統(tǒng)內(nèi)各網(wǎng)絡(luò)的最短距離和下一跳地址,這稱(chēng)為
收斂
。
接下來(lái)我們舉例說(shuō)明RIP的路由條目更新規(guī)則,路由器C和D互為相鄰路由器,它們之間周期性的交換并更新路由信息
路由器C的路由表,其中到達(dá)各目的網(wǎng)絡(luò)的下一跳都記為問(wèn)號(hào)??梢岳斫鉃槁酚善鱀并不需要關(guān)心路由器C的這些內(nèi)容,
假設(shè)路由器C的RIP更新報(bào)文發(fā)送周期到了,則路由器C將自己路由表中的相關(guān)路由信息封裝到RIP更新報(bào)文中,發(fā)送給路由器D。我們可以簡(jiǎn)單的理解為路由器C將自己的路由表發(fā)送給了路由器D。
路由器D收到后對(duì)其進(jìn)行改造,將到達(dá)各目的網(wǎng)絡(luò)的下一跳都改為C,距離都增加1,這樣的操作很容易理解,因?yàn)槁酚善鰿告訴D,它可以到達(dá)這些目的網(wǎng)絡(luò),那么路由器D作為C的鄰居路由器,當(dāng)然也就可以通過(guò)C來(lái)到達(dá)這些目的網(wǎng)絡(luò),只是比C到達(dá)這些目的網(wǎng)絡(luò)的距離大1,路由器D現(xiàn)在可以根據(jù)改造好的路由表來(lái)更新自己先前的路由表了
更新過(guò)程:
- 路由器D原來(lái)到達(dá)網(wǎng)絡(luò)N2的距離是二,下一跳經(jīng)過(guò)路由器C的轉(zhuǎn)發(fā)。
現(xiàn)在路由器D知道了,到達(dá)網(wǎng)絡(luò)N2仍然經(jīng)過(guò)C的轉(zhuǎn)發(fā),距離變?yōu)榱?,也就是說(shuō)C與N2之間的網(wǎng)絡(luò)拓?fù)浒l(fā)生了變化,于是將自己這條路由條目中的距離更新為5。
更新路由表的理由可總結(jié)為到達(dá)目的網(wǎng)絡(luò)相同的下一跳,最新的消息應(yīng)該更新。 - 路由器D原來(lái)不知道網(wǎng)絡(luò)N3的存在,現(xiàn)在路由器D知道了,可通過(guò)路由器C到達(dá)網(wǎng)絡(luò)N3,于是將該路由條目添加到自己的路由表中
更新路由表的理由可總結(jié)為發(fā)現(xiàn)了新的網(wǎng)絡(luò)添加 - 路由器D原來(lái)到達(dá)網(wǎng)絡(luò)N6的距離是8,下一跳,經(jīng)過(guò)路由器F的轉(zhuǎn)發(fā),現(xiàn)在路由器D知道了,到達(dá)網(wǎng)絡(luò)N6,如果通過(guò)C來(lái)轉(zhuǎn)發(fā),則距離可縮短為5,于是將自己這條路由條目中的距離修改為5,下一跳修改為C
更新路由表的理由可總結(jié)為到達(dá)目的網(wǎng)絡(luò)不同的下一跳,新路由有優(yōu)勢(shì),應(yīng)該更新, - 路由器D原來(lái)到達(dá)網(wǎng)絡(luò)N8的距離是4,下一跳,經(jīng)過(guò)路由器E的轉(zhuǎn)發(fā),現(xiàn)在路由器D知道了,到達(dá)網(wǎng)絡(luò)N8還可以通過(guò)C來(lái)轉(zhuǎn)發(fā),距離也為4,于是將該路由條目添加到自己的路由表中。更新路由表的理由可總結(jié)為到達(dá)目的網(wǎng)絡(luò)不同的下一跳,但距離相等,進(jìn)行等價(jià)負(fù)載均衡。
- 路由器D原來(lái)到達(dá)網(wǎng)絡(luò)N9的距離14,下一跳經(jīng)過(guò)路由器F的轉(zhuǎn)發(fā),現(xiàn)在路由器D知道了,到達(dá)網(wǎng)絡(luò)N9,如果通過(guò)C來(lái)轉(zhuǎn)發(fā),則距離擴(kuò)大為6,于是不使用這條路由條目來(lái)更新自己的路由表。不更新路由表的理由可總結(jié)為到達(dá)目的網(wǎng)絡(luò),不同的下一跳,新路由劣勢(shì),不應(yīng)該更新。
?
下面我們介紹RIP協(xié)議存在的壞消息傳的慢的問(wèn)題,如圖所示:
- 假設(shè)R1到達(dá)其直連網(wǎng)絡(luò)N1的鏈路出現(xiàn)了故障,當(dāng)R1檢測(cè)出該故障后,會(huì)將到達(dá)N1的路由條目中的距離修改為16,表示N1不可達(dá),并等待RIP更新周期到時(shí)后,發(fā)送該路由信息給R2。
- 而此時(shí)R2的路由表中,關(guān)于N1的路由條目仍然是先前通過(guò)RIP協(xié)議獲取到的,也就是到達(dá)N1的距離為2,下一跳通過(guò)R1轉(zhuǎn)發(fā),
- 假設(shè)R2的RIP更新周期先到時(shí),也就是R2的這條路由信息先到達(dá)R1,而R1的這條路由信息一段時(shí)間后才到達(dá)R2,
- 當(dāng)R1收到R2的這條路由信息后就會(huì)被該謠言誤導(dǎo),認(rèn)為可以通過(guò)R2到達(dá)N1距離為3,并在自己的RIP更新周期到時(shí)后,將這條路由信息發(fā)送給R2
- 當(dāng)R2收到R1的這條路,由信息后被該謠言誤導(dǎo),認(rèn)為可以通過(guò)R1到達(dá)N1,距離為4,并在自己的RIP更新周期到時(shí)后將這條路由信息發(fā)送給R1。
- 當(dāng)R1收到R的這條路由信息后被該謠言誤導(dǎo),認(rèn)為可以通過(guò)R2到達(dá)N1,距離為5,并在自己的RIP更新周期,到時(shí)后將這條路由信息發(fā)送給R2
- 很顯然只有R1和R2的路由表中到達(dá)N1的路由條目中的距離都增加到16號(hào),R1和R2才都知道N1不可達(dá),也就是才收斂。
- 在該過(guò)程中,R1和R2之間會(huì)出現(xiàn)路由環(huán)路,時(shí)間長(zhǎng)達(dá)數(shù)分鐘,有關(guān)路由環(huán)路的問(wèn)題,我們之前已經(jīng)介紹過(guò)了,此處就不再贅述了。
造成這種反復(fù)誤導(dǎo)的本質(zhì)就是,接收方將RIP報(bào)文中的下一條改成了發(fā)送方,在上述例子中更新的時(shí)候,都是到達(dá)目的網(wǎng)絡(luò)有著相同下一跳,采取的最新消息更新策略。
請(qǐng)注意使用上述措施后,也不能徹底避免路由環(huán)路問(wèn)題,這是距離向量算法的本質(zhì)所決定的。
內(nèi)容小結(jié):
開(kāi)放最短路徑優(yōu)先OSPF的基本工作原理
我們來(lái)舉例說(shuō)明,在思科路由器中,OSPF計(jì)算代價(jià)的方法是用100兆比特每秒除以鏈路帶寬,計(jì)算結(jié)果小于1的值仍記為1,大于1且有小數(shù)的舍去小數(shù)。我們可以很容易的得出下圖中各路由器的鏈路狀態(tài):
OSPF相鄰路由器之間通過(guò)交互問(wèn)候分組來(lái)建立和維護(hù)鄰居關(guān)系。
如圖所示。問(wèn)候分組需要封裝在IP數(shù)據(jù)報(bào)中發(fā)送,發(fā)往組播地址224.0.0.5,IP數(shù)據(jù)報(bào)首部中的協(xié)議號(hào)字段的取值應(yīng)為89,來(lái)表明IP數(shù)據(jù)報(bào)的數(shù)據(jù)載荷為OSPF分組,問(wèn)候分組的發(fā)送周期為10秒,若40秒仍未收到來(lái)自鄰居路由器的問(wèn)候分組,則認(rèn)為該鄰居路由器不可達(dá)。
因此每個(gè)路由器都會(huì)建立一張鄰居表,其中的每一個(gè)條目對(duì)應(yīng)記錄其各鄰居路由器的相關(guān)信息,包括鄰居ID,接口以及死亡倒計(jì)時(shí)。
例如R2是R1的一個(gè)鄰居路由器,為簡(jiǎn)單起見(jiàn),鄰居ID就記為R2(實(shí)踐中應(yīng)填寫(xiě)相應(yīng)的路由器ID),該鄰居路由器與自己的接口1相連,將接口號(hào)記為1,死亡倒計(jì)時(shí)還剩36秒,若在死亡倒計(jì)時(shí)到達(dá)0之前,再次收到了來(lái)自R2的問(wèn)候分組,則重新啟動(dòng)針對(duì)該鄰居條目的40秒死亡倒計(jì)時(shí),否則當(dāng)死亡倒計(jì)時(shí)為0,則判定該鄰居路由器不可達(dá)。
R4是R1的另一個(gè)鄰居路由器,鄰居ID記為R4,該鄰居路由器與自己的接口0相連,將接口號(hào)記為0,死亡倒計(jì)時(shí)還剩余18秒
使用OSPF的每個(gè)路由器都會(huì)產(chǎn)生鏈路狀態(tài)通告,其中包含以下兩類(lèi)內(nèi)容:
- 一類(lèi)是直連網(wǎng)絡(luò)的鏈路狀態(tài)信息
- 另一類(lèi)是鄰居路由器的鏈路狀態(tài)信息。
假設(shè)N1是路由器R4的直連網(wǎng)絡(luò),則R4的鏈路狀態(tài)通告應(yīng)包含:
- 與其直連網(wǎng)絡(luò)N1的鏈路狀態(tài)信息
- 鄰居路由器R1的鏈路狀態(tài)信息
- 鄰居路由器R3的鏈路狀態(tài)信息
鏈路狀態(tài)通告被封裝在鏈路狀態(tài)更新分組中,采用洪范法發(fā)送。收到鏈路狀態(tài)更新分組的路由器,將從自己其他所有接口轉(zhuǎn)發(fā)該分組,也就是進(jìn)行洪范轉(zhuǎn)發(fā),如圖所示。這樣自制系統(tǒng)中每個(gè)路由器所發(fā)送的封裝有鏈路狀態(tài)通告的鏈路狀態(tài)更新分組,會(huì)傳遞給系統(tǒng)中其他所有路由器。
使用OSPF的每個(gè)路由器都有一個(gè)鏈路狀態(tài)數(shù)據(jù)庫(kù),用于存儲(chǔ)鏈路狀態(tài)通告,通過(guò)各路由器洪范發(fā)送封裝有自己鏈路狀態(tài)通告的鏈路狀態(tài)更新分組,各路由器的鏈路狀態(tài)數(shù)據(jù)庫(kù)最終將達(dá)到一致。
例如這是路由器R2的鏈路狀態(tài)數(shù)據(jù)庫(kù),其中記錄有系統(tǒng)中各路由器的鏈路狀態(tài)通告:
使用OSPF的各路由器,基于鏈路狀態(tài)數(shù)據(jù)庫(kù)進(jìn)行最短路徑優(yōu)先計(jì)算,就可構(gòu)建出各自到達(dá)其他各路由器的最短路徑,也就是構(gòu)建出各自的路由表。
例如有這樣一個(gè)網(wǎng)絡(luò)拓?fù)?#xff0c;各鏈路旁的數(shù)字表示代價(jià)。通過(guò)各路由器洪范發(fā)送封裝有自己鏈路狀態(tài)通告的鏈路狀態(tài)更新分組,各路由器最終會(huì)得出相同的鏈路狀態(tài)數(shù)據(jù)庫(kù),由鏈路狀態(tài)數(shù)據(jù)庫(kù)可以得出帶權(quán)有向圖,對(duì)該圖進(jìn)行基于迪杰斯特拉的最短路徑優(yōu)先算法,就可以得出以各路由器為根的最短路徑,如圖所示
對(duì)于這樣一個(gè)比較簡(jiǎn)單的網(wǎng)絡(luò)拓?fù)?#xff0c;即使大家不懂得最短路徑優(yōu)先算法,也可以很快找出每個(gè)路由器到達(dá)其他各路由器的最短路徑。但是如果網(wǎng)絡(luò)拓?fù)浔容^復(fù)雜,該項(xiàng)工作對(duì)人類(lèi)而言就比較復(fù)雜了,因此可以按照迪杰斯特拉提出的最短路徑優(yōu)先算法,編制程序,讓路由器執(zhí)行該程序。
對(duì)于一般的網(wǎng)絡(luò)工程師,即便不熟悉該算法,也不影響對(duì)OSPF協(xié)議的配置和使用。OSPF包含以下5種分組類(lèi)型:
接下來(lái)我們來(lái)舉例說(shuō)明OSPF協(xié)議的基本工作過(guò)程:
-
相鄰路由器之間周期性發(fā)送問(wèn)候分組,以便建立和維護(hù)鄰居關(guān)系,
-
建立鄰居關(guān)系后,給鄰居路由器發(fā)送數(shù)據(jù)庫(kù)描述分組,也就是將自己的鏈路狀態(tài)數(shù)據(jù)庫(kù)中的所有鏈路狀態(tài)項(xiàng)目的摘要信息發(fā)送給鄰居路由器。
- 例如 R1收到R2的數(shù)據(jù)庫(kù)描述分組后,發(fā)現(xiàn)自己缺少其中的某些鏈路狀態(tài)項(xiàng)目,于是就給R2發(fā)送鏈路狀態(tài)請(qǐng)求分組。R2收到后,將R1所缺少的鏈路狀態(tài)項(xiàng)目的詳細(xì)信息,封裝在鏈路狀態(tài)更新分組中發(fā)送給R1。R1收到后,將這些所缺少的鏈路狀態(tài)項(xiàng)目的詳細(xì)信息添加到自己的鏈路狀態(tài)數(shù)據(jù)庫(kù)中,并給R2發(fā)送鏈路狀態(tài)確認(rèn)分組。需要說(shuō)明的是R2也可以像R1請(qǐng)求自己所缺少的鏈路狀態(tài)項(xiàng)目的詳細(xì)信息。最終 R1和R2的鏈路狀態(tài)數(shù)據(jù)庫(kù)將達(dá)到一致,這也就是鏈路狀態(tài)數(shù)據(jù)庫(kù)達(dá)到同步。
?
- 例如 R1收到R2的數(shù)據(jù)庫(kù)描述分組后,發(fā)現(xiàn)自己缺少其中的某些鏈路狀態(tài)項(xiàng)目,于是就給R2發(fā)送鏈路狀態(tài)請(qǐng)求分組。R2收到后,將R1所缺少的鏈路狀態(tài)項(xiàng)目的詳細(xì)信息,封裝在鏈路狀態(tài)更新分組中發(fā)送給R1。R1收到后,將這些所缺少的鏈路狀態(tài)項(xiàng)目的詳細(xì)信息添加到自己的鏈路狀態(tài)數(shù)據(jù)庫(kù)中,并給R2發(fā)送鏈路狀態(tài)確認(rèn)分組。需要說(shuō)明的是R2也可以像R1請(qǐng)求自己所缺少的鏈路狀態(tài)項(xiàng)目的詳細(xì)信息。最終 R1和R2的鏈路狀態(tài)數(shù)據(jù)庫(kù)將達(dá)到一致,這也就是鏈路狀態(tài)數(shù)據(jù)庫(kù)達(dá)到同步。
-
每30分鐘或鏈路狀態(tài)發(fā)生變化時(shí),路由器都會(huì)發(fā)送鏈路狀態(tài)更新分組,收到該分組的其他路由器,將洪范轉(zhuǎn)發(fā)該分組,并給該路由器發(fā)回鏈路狀態(tài)確認(rèn)分組,這又稱(chēng)為新情況下的鏈路狀態(tài)數(shù)據(jù)庫(kù)同步。
當(dāng)OSPF路由器在多點(diǎn)接入網(wǎng)絡(luò)中建立鄰居關(guān)系時(shí),如果不采用其他機(jī)制,將會(huì)產(chǎn)生大量的多播分組。例如這5臺(tái)路由器連接在同一個(gè)多點(diǎn)接入網(wǎng)絡(luò)中,他們周期性的發(fā)送問(wèn)候分組,以建立和維護(hù)鄰居關(guān)系。這些路由器中的任意兩個(gè)路由器都互為鄰居關(guān)系,如圖所示,鄰居關(guān)系的數(shù)量為N乘以N-1,然后再除以2,其中N是路由器的數(shù)量,這樣每個(gè)路由器要向其他N減一個(gè)路由器發(fā)送問(wèn)候分組和鏈路狀態(tài)更新分組。
?為了減少所發(fā)送分組的數(shù)量,OSPF采用選舉指定路由器DR和備用的指定路由器BDR的方法。
并且所有的非DR,BDR只與DR,BDR建立鄰居關(guān)系。
因此之前的鄰居關(guān)系數(shù)量降低為2 ×(N-2)+ 1。非DR,BDR之間不能直接交換信息,而必須通過(guò)DR,BDR進(jìn)行交換。若DR出現(xiàn)問(wèn)題,則由BDR頂替DR。實(shí)現(xiàn)DR和BDR的選舉并不復(fù)雜,無(wú)非就是各路由器之間交換一些選舉參數(shù),例如路由器優(yōu)先級(jí)、路由器ID,接口IP地址等,然后根據(jù)選舉規(guī)則選出DR和BDR,這與交換機(jī)生成樹(shù)協(xié)議,選舉跟交換機(jī)類(lèi)似,我們就不再贅述了。
為了使OSPF協(xié)議能夠用于規(guī)模很大的網(wǎng)絡(luò),OSPF把一個(gè)自治系統(tǒng)在劃分為若干個(gè)更小的范圍,稱(chēng)為區(qū)域
如圖所示,這是一個(gè)規(guī)模很大的網(wǎng)絡(luò),我們將其劃分成一個(gè)自制系統(tǒng),在該自治系統(tǒng)內(nèi),所有路由器都使用OSPF協(xié)議,OSPF將該自治系統(tǒng)再劃分成4個(gè)更小的區(qū)域,每個(gè)區(qū)域都有一個(gè)32比特的區(qū)域標(biāo)識(shí)符,可以用點(diǎn)分十進(jìn)制表示,主干區(qū)域的標(biāo)識(shí)符必須為0,也可表示成點(diǎn)分10進(jìn)制形式的0.0.0.0,主干區(qū)域用于聯(lián)通其他區(qū)域,其他區(qū)域的標(biāo)識(shí)符不能為0,且互不相同。
每個(gè)區(qū)域的規(guī)模不應(yīng)太大,一般所包含的路由器不應(yīng)超過(guò)200個(gè),劃分區(qū)域的好處就是把利用洪范法交換鏈路狀態(tài)信息的范圍局限于每一個(gè)區(qū)域,而不是整個(gè)自治系統(tǒng),這樣就減少了整個(gè)網(wǎng)絡(luò)上的通信量。
-
如果路由器的所有接口都在同一個(gè)區(qū)域內(nèi),則該路由器稱(chēng)為
區(qū)域內(nèi)路由器
。 -
為了本區(qū)域可以和自治系統(tǒng)內(nèi)的其他區(qū)域聯(lián)通,每個(gè)區(qū)域都會(huì)有一個(gè)
區(qū)域邊界路由器
,它的一個(gè)接口用于連接自身所在區(qū)域,另一個(gè)接口用于連接主干區(qū)域, -
主干區(qū)域內(nèi)的路由器稱(chēng)為
主干路由器
。我們也可以把區(qū)域邊界路由器看作是主干路由器。 -
在主干區(qū)域內(nèi)還要有一個(gè)路由器,專(zhuān)門(mén)和本自制系統(tǒng)外的其他自治系統(tǒng)交換路由信息,這樣的路由器成為
自治系統(tǒng)邊界路由器
。
-
在本例中區(qū)域邊界路由器R3向主干區(qū)域發(fā)送自己所在區(qū)域一的鏈路狀態(tài)通告,向自己所在區(qū)域發(fā)送區(qū)域0,2,3的鏈路狀態(tài)通告
-
區(qū)域邊界路由器R4向主干區(qū)域發(fā)送自己所在區(qū)域二的鏈路狀態(tài)通道,向自己所在區(qū)域發(fā)送區(qū)域0,1,3的鏈路狀態(tài)通告,
-
區(qū)域邊界路由器R7,向主干區(qū)域發(fā)送自己所在區(qū)域三的鏈路狀態(tài)通告,向自己所在區(qū)域發(fā)送區(qū)域0,1,2的鏈路狀態(tài)通道
采用分層次劃分區(qū)域的方法,雖然使交換信息的種類(lèi)增多了,同時(shí)也使OSPF協(xié)議更加復(fù)雜了,但這樣做卻能使每一個(gè)區(qū)域內(nèi)部交換路由信息的通信量大大減小,因而使OSPF協(xié)議能夠用于規(guī)模很大的自制系統(tǒng)中。
內(nèi)容小結(jié)如下:
邊界網(wǎng)關(guān)協(xié)議BGP的基本工作原理
因特網(wǎng)采用分層次的路由選擇協(xié)議,內(nèi)部網(wǎng)關(guān)協(xié)議這一類(lèi)別的協(xié)議,用于自治系統(tǒng)內(nèi)部的路由選擇,典型的協(xié)議有路由信息協(xié)議RIP 和開(kāi)放最短路徑優(yōu)先OSPF,他們都是設(shè)法使分組在一個(gè)自治系統(tǒng)內(nèi)部,盡可能有效的從源網(wǎng)絡(luò)傳輸?shù)侥康木W(wǎng)絡(luò),無(wú)需考慮自治系統(tǒng)外部其他方面的策略。
外部網(wǎng)關(guān)協(xié)議這一類(lèi)別的協(xié)議用于自治系統(tǒng)之間的路由選擇。典型的協(xié)議是邊界網(wǎng)關(guān)協(xié)議BGP。在不同自治系統(tǒng)內(nèi),度量路由的代價(jià)可能不同,因此對(duì)于自治系統(tǒng)之間的路由選擇,使用代價(jià)作為度量來(lái)尋找最佳路由是不可行的。
我們來(lái)舉例說(shuō)明,各自治系統(tǒng)的連接關(guān)系如圖所示:
其中自治系統(tǒng)AS1將時(shí)延作為度量,AS2將距離也就是跳數(shù)作為度量,AS3將鏈路帶寬作為度量,那么AS4可以通過(guò)哪些路徑到達(dá)AS5呢?圖中已經(jīng)標(biāo)明了兩種路線(當(dāng)然還存在其他的可能性)
那么這些路徑中哪一個(gè)是最佳路由呢?由于沒(méi)有統(tǒng)一的路由度量,因此尋找最佳路由是無(wú)意義的。
自治系統(tǒng)之間的路由選擇還必須考慮相關(guān)策略。例如我國(guó)國(guó)內(nèi)的站點(diǎn)在互相傳送數(shù)據(jù)報(bào)時(shí),不應(yīng)經(jīng)過(guò)國(guó)外兜圈,特別是不要經(jīng)過(guò)某些對(duì)我國(guó)的安全有威脅的國(guó)家,又例如自治系統(tǒng)AS4,要發(fā)送數(shù)據(jù)報(bào)給AS5,本來(lái)最好是依次經(jīng)過(guò)S1S3,但是 AS3不愿意讓這些數(shù)據(jù)報(bào)經(jīng)過(guò)自己自治系統(tǒng)內(nèi)的網(wǎng)絡(luò),因?yàn)檫@是那兩個(gè)自治系統(tǒng)的事情,與我這個(gè)自治系統(tǒng)無(wú)關(guān)。而AS2愿意讓某些相鄰自治系統(tǒng)的數(shù)據(jù)報(bào),通過(guò)自己的網(wǎng)絡(luò),只要支付相應(yīng)的服務(wù)費(fèi)用即可。由此可見(jiàn),自治系統(tǒng)之間的路由選擇協(xié)議,應(yīng)當(dāng)允許使用多種路由選擇策略,這些策略包括政治、經(jīng)濟(jì)、安全等,他們都是由網(wǎng)絡(luò)管理人員對(duì)每一個(gè)路由器進(jìn)行設(shè)置的,但這些策略并不是自治系統(tǒng)之間的路由選擇協(xié)議本身。
基于上述情況,邊界網(wǎng)關(guān)協(xié)議BGP只能是力求尋找一條能夠到達(dá)目的網(wǎng)絡(luò)且比較好的路由,也就是不能兜圈子,而并非要尋找一條最佳路由
我們來(lái)舉例說(shuō)明:
一般來(lái)說(shuō)兩個(gè)BGP發(fā)言人都是通過(guò)一個(gè)共享網(wǎng)絡(luò)連接在一起的,而B(niǎo)GP發(fā)言人往往就是BGP邊界路由器
BGP發(fā)言人交換網(wǎng)絡(luò)可達(dá)性的信息,也就是要到達(dá)某個(gè)網(wǎng)絡(luò)所要經(jīng)過(guò)的一系列自治系統(tǒng)。當(dāng)BGP發(fā)言人互相交換了網(wǎng)絡(luò)可達(dá)性的信息后,各BGP發(fā)言人就根據(jù)所采用的策略,從收到的路由信息中,找出到達(dá)各自治系統(tǒng)的較好的路由,也就是構(gòu)造出樹(shù)形結(jié)構(gòu),不存在環(huán)路的自治系統(tǒng)連通圖。如圖所示,這是自治系統(tǒng)A的某個(gè)BP發(fā)言人,構(gòu)造出的自治系統(tǒng)聯(lián)通圖:
邊界網(wǎng)關(guān)協(xié)議BGP適用于多級(jí)結(jié)構(gòu)的因特網(wǎng)。這里我們給出一個(gè)BGP發(fā)言人交換路徑向量的例子:
- 自治系統(tǒng)AS2的BP發(fā)言人,通知主干網(wǎng)的BGP發(fā)言人,要到達(dá)網(wǎng)絡(luò)N1、N2、N3和N4,可經(jīng)過(guò)AS2。
- 主干網(wǎng)在收到這個(gè)通知后就發(fā)出通知,要到達(dá)網(wǎng)絡(luò)N1、N2、N3和N4,可沿路徑(AS1, AS2) ,這里的路徑AS1、AS2稱(chēng)為路徑向量。
- 自治系統(tǒng)AS3,收到這條路徑向量信息后,如果AS3自身也包含在其中,則不能采用這條路徑,否則會(huì)兜圈子
接下來(lái)我們介紹BGP版本4中規(guī)定的4種報(bào)文:
內(nèi)容小結(jié)如下:
IPv4數(shù)據(jù)報(bào)的首部格式
這里我們介紹IPv4數(shù)據(jù)報(bào)的首部格式,為了簡(jiǎn)單起見(jiàn),之后我們將IPv4數(shù)據(jù)報(bào)簡(jiǎn)稱(chēng)為IP數(shù)據(jù)報(bào),而不指出、版本號(hào)。IP數(shù)據(jù)報(bào)的首部格式及其內(nèi)容是實(shí)現(xiàn)IP協(xié)議主要功能的基礎(chǔ),因此我們有必要搞清楚這部分內(nèi)容,如圖所示
這是IP數(shù)據(jù)報(bào)的首部格式,它由20字節(jié)的固定部分和最大40字節(jié)的可變部分組成。所謂固定部分是指每個(gè)IP數(shù)據(jù)報(bào)首部都必須包含的部分,而某些IP數(shù)據(jù)報(bào)的首部除了包含20字節(jié)的固定部分外,還包含一些可選的字段來(lái)增加IP數(shù)據(jù)報(bào)的功能。IP數(shù)據(jù)報(bào)的首部常以32個(gè)比特為單位進(jìn)行描述,圖中的每一行都由32比特也就是4個(gè)字節(jié)構(gòu)成,每個(gè)小格子稱(chēng)為字段或者域。每個(gè)字段或某些字段的組合,用來(lái)表達(dá)IP協(xié)議的相關(guān)功能。
版本字段
,該字段占4個(gè)比特,用來(lái)表示IP協(xié)議的版本,通信雙方使用的IP協(xié)議的版本必須一致,目前廣泛使用的IP協(xié)議的版本號(hào)為4,即IPv4,首部長(zhǎng)度字段
,該字段占4個(gè)比特,用來(lái)表示IP數(shù)據(jù)報(bào)首部的長(zhǎng)度,該字段的取值以四字節(jié)為單位。- 最小十進(jìn)制取值為5,表示IP數(shù)據(jù)報(bào)首部只有20字節(jié)的固定部分;
- 最大十進(jìn)制取值為15,表示IP數(shù)據(jù)報(bào)首部包含20字節(jié)的固定部分和最大40節(jié)的可變部分,
可選字段
,該字段的長(zhǎng)度從1個(gè)字節(jié)到40個(gè)字節(jié)不等,用來(lái)支持排錯(cuò)、測(cè)量以及安全措施??蛇x字段增加了IP數(shù)據(jù)報(bào)的功能,但這同時(shí)也使得IP數(shù)據(jù)報(bào)的首部長(zhǎng)度成為可變的,這就增加了每一個(gè)路由器,處理IP數(shù)據(jù)報(bào)的開(kāi)銷(xiāo),實(shí)際上可選字段很少被使用,填充字段
,該字段用來(lái)確保首部長(zhǎng)度為四字節(jié)的整數(shù)倍,使用全0進(jìn)行填充。我們之前剛剛介紹過(guò)首部,長(zhǎng)度字段是以四字節(jié)為單位的,換句話說(shuō),IP數(shù)據(jù)報(bào)的首部長(zhǎng)度一定是四字節(jié)的整數(shù)倍。由于首部中的可選字段的長(zhǎng)度,從1個(gè)字節(jié)到40個(gè)字節(jié)不等,那么當(dāng)20字節(jié)的固定部分加上1~40個(gè)字節(jié)長(zhǎng)度不等的可變部分,會(huì)造成首部長(zhǎng)度不是四字節(jié)的整數(shù)倍時(shí),就用取值為全零的填充字段,填充相應(yīng)的字節(jié),以確保IP數(shù)據(jù)報(bào)的首部長(zhǎng)度是四字節(jié)的整數(shù)倍。區(qū)分服務(wù)字段
,該字段占8個(gè)比特,用來(lái)獲得更好的服務(wù)。該字段在舊標(biāo)準(zhǔn)中叫做服務(wù)類(lèi)型,但實(shí)際上一直沒(méi)有被使用過(guò)。1998年因特網(wǎng)工程任務(wù)組IEFT把這個(gè)字段改名為區(qū)分服務(wù),利用該字段的不同數(shù)值,可提供不同等級(jí)的服務(wù)質(zhì)量。只有在使用區(qū)分服務(wù)時(shí),該字段才起作用,一般情況下都不使用該字段總長(zhǎng)度字段
,該字段占16比特,用來(lái)表示IP數(shù)據(jù)報(bào)的總長(zhǎng)度,也就是首部和數(shù)據(jù)載荷的長(zhǎng)度總和,最大取值為十進(jìn)制的65535,以字節(jié)為單位,需要注意的是在實(shí)際應(yīng)用中很少傳輸這么長(zhǎng)的IP數(shù)據(jù)報(bào)。- 接下來(lái)我們來(lái)舉例說(shuō)明,首部長(zhǎng)度字段和總長(zhǎng)度字段的區(qū)別與聯(lián)系:
- 接下來(lái)我們來(lái)舉例說(shuō)明,首部長(zhǎng)度字段和總長(zhǎng)度字段的區(qū)別與聯(lián)系:
標(biāo)識(shí)
,標(biāo)志
,片偏移
這三個(gè)字段,他們共同用于進(jìn)行IP數(shù)據(jù)報(bào)分片,網(wǎng)際層封裝出的IP數(shù)據(jù)報(bào),它將在數(shù)據(jù)鏈路層封裝成幀。每一種數(shù)據(jù)鏈路層協(xié)議都規(guī)定了幀的數(shù)據(jù)載荷的最大程度,稱(chēng)為最大傳輸單元MTU。例如以太網(wǎng)的數(shù)據(jù)鏈路層規(guī)定,MTU的值為1500個(gè)字節(jié),如果某個(gè)IP數(shù)據(jù)報(bào)的總長(zhǎng)度超過(guò)MTU時(shí),將無(wú)法封裝成幀,需要將源IP數(shù)據(jù)報(bào)分片為更小的IP數(shù)據(jù)報(bào),再將各分片IP數(shù)據(jù)報(bào)封裝成幀。
標(biāo)識(shí)字段
,占16個(gè)比特,屬于同一個(gè)數(shù)據(jù)報(bào)的各分片數(shù)據(jù)報(bào),應(yīng)該具有相同的標(biāo)識(shí),IP軟件維持一個(gè)計(jì)數(shù)器,每產(chǎn)生一個(gè)IP數(shù)據(jù)報(bào),計(jì)數(shù)器的值就要加1,并將此值賦給標(biāo)識(shí)字段,標(biāo)志字段
,占3個(gè)比特,各比特含義如下:- DF比特表示是否允許分片置1表示不允許分片,清0表示允許分片
- MF比特表示本分片后面是否還有分片,置1表示本分片后面還有分片,清0表示本分片就是最后一個(gè)分片
- 還有一個(gè)保留位,必須設(shè)置為0
片偏移字段
,占13個(gè)比特,指出分片數(shù)據(jù)報(bào)的數(shù)據(jù)載荷部分偏移,其在源數(shù)據(jù)報(bào)的位置有多遠(yuǎn),片偏移以8個(gè)字節(jié)為單位
接下來(lái)我們舉例說(shuō)明IP數(shù)據(jù)報(bào)如何進(jìn)行分片
假設(shè)有這樣一個(gè)IP數(shù)據(jù)報(bào),它由20字節(jié)的固定首部和3800字節(jié)的數(shù)據(jù)載荷兩部分構(gòu)成,也就是說(shuō)該IP數(shù)據(jù)報(bào)的總長(zhǎng)為3820個(gè)字節(jié)。假設(shè)使用以太網(wǎng)傳送該IP數(shù)據(jù)報(bào),以太網(wǎng)的最大傳送單元MTU為1500個(gè)字節(jié),也就是以太網(wǎng)的數(shù)據(jù)載荷部分,最大為1500個(gè)字節(jié),無(wú)法封裝3820字節(jié)長(zhǎng)的IP數(shù)據(jù)報(bào),因此需要把該IP數(shù)據(jù)報(bào)分片成幾個(gè)更小的IP數(shù)據(jù)報(bào),每個(gè)長(zhǎng)度不能大于1500個(gè)字節(jié),然后再將每個(gè)分片IP數(shù)據(jù)報(bào)封裝成一個(gè)以太網(wǎng)的幀進(jìn)行傳輸。
為了更好的描述后續(xù)的分片工作,我們將源IP數(shù)據(jù)報(bào)數(shù)據(jù)載荷部分的每一個(gè)字節(jié)都編上號(hào),第一個(gè)字節(jié)編號(hào)為0,最后一個(gè)字節(jié)編號(hào)為3799,我們可將源IP數(shù)據(jù)報(bào)的數(shù)據(jù)載荷分成三個(gè)更小的分片,第一個(gè)分片從0號(hào)字節(jié)到1399號(hào)字節(jié),共1400個(gè)字節(jié)。第二個(gè)分片,從1400號(hào)字節(jié)到2799號(hào)字節(jié),共1400個(gè)字節(jié)。第三個(gè)分片,從2800號(hào)字節(jié)到3799號(hào)字節(jié),共1000個(gè)字節(jié)。分片結(jié)束后,給每個(gè)分片重新添加一個(gè)首部,使之成為IP數(shù)據(jù)報(bào)。
請(qǐng)思考這樣一個(gè)問(wèn)題,給各分片添加的首部是否完全相同?
我們來(lái)一起填一下下面這張表格。源IP數(shù)據(jù)報(bào)首部中的總長(zhǎng)度字段的十進(jìn)制取值為3800+20,標(biāo)識(shí)字段的10進(jìn)制取值為12345,MF比特的取值為0,表示后面沒(méi)有分片數(shù)據(jù)報(bào),這就是最后一個(gè)分片數(shù)據(jù)報(bào),DF比特的取值為0,表示該IP數(shù)據(jù)報(bào)允許被分片,由于這是未分片的源IP數(shù)據(jù)報(bào),因此片偏移為0。
我們來(lái)填寫(xiě)分片一,IP數(shù)據(jù)報(bào)首部中相關(guān)字段的值,總長(zhǎng)度字段的十進(jìn)制取值為1400+20,其中1400字節(jié)是分片的長(zhǎng)度,20字節(jié)是固定首部的長(zhǎng)度,標(biāo)識(shí)字段的十進(jìn)制取值與源IP數(shù)據(jù)報(bào)的相同,由于該分片不是最后一個(gè)分片,因此 MF比特的取值為一,表示該分片后還有分片,該分片IP數(shù)據(jù)報(bào)允許被再次分片,因此DF比特的取值為0。該分片IP數(shù)據(jù)報(bào)數(shù)據(jù)載荷部分的第一個(gè)字節(jié),就是源IP數(shù)據(jù)報(bào)數(shù)據(jù)載荷部分的第一個(gè)字節(jié),因此片偏移字段的取值為0÷8。除以八的原因是片偏移字段,以八字節(jié)為單位。
后面的以此類(lèi)推
現(xiàn)在假定分片二的IP數(shù)據(jù)報(bào),經(jīng)過(guò)某個(gè)網(wǎng)絡(luò)時(shí)還需要再進(jìn)行分片,其中一個(gè)分片長(zhǎng)度為800字節(jié),另一個(gè)分片長(zhǎng)度為600字節(jié),分片結(jié)束后給每個(gè)分片重新添加一個(gè)首部,使之成為IP數(shù)據(jù)報(bào)。
再來(lái)看生存時(shí)間字段
:
下來(lái)我們來(lái)舉例說(shuō)明,生存時(shí)間字段的作用。
假設(shè)采用如下圖所示的網(wǎng)絡(luò)拓?fù)?#xff0c;路由器R1R2R3,各自的路由表如圖所示。為了簡(jiǎn)單起見(jiàn),我們只給出了各路由器路由表中的由人工配置的靜態(tài)路由條目,例如路由器R2中的這條靜態(tài)路由條目,他指出了IP數(shù)據(jù)報(bào)要到達(dá)網(wǎng)絡(luò)N2,下一跳,需要轉(zhuǎn)發(fā)給路由器R3。
假設(shè)我們?cè)谌斯づ渲眠@條靜態(tài)路由條目時(shí),錯(cuò)將下一跳,配置成了R1,這會(huì)導(dǎo)致將去往網(wǎng)絡(luò)N2的IP數(shù)據(jù)報(bào),錯(cuò)誤的轉(zhuǎn)發(fā)給路由器R1。我們來(lái)看看會(huì)出現(xiàn)什么問(wèn)題。
假設(shè)某個(gè)IP數(shù)據(jù)報(bào)從網(wǎng)絡(luò)N1發(fā)網(wǎng)絡(luò)N2,該IP數(shù)據(jù)報(bào)到達(dá)R1號(hào),R1進(jìn)行查表轉(zhuǎn)發(fā),發(fā)現(xiàn)了匹配的路由條目,其下一跳指示轉(zhuǎn)發(fā)給R2,于是R1將該IP數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)給了R2,R2收到該IP數(shù)據(jù)報(bào)后進(jìn)行查表轉(zhuǎn)發(fā),發(fā)現(xiàn)了匹配的路由條目,其下一跳指示轉(zhuǎn)發(fā)給R1,于是R將該IP數(shù)據(jù)報(bào)又轉(zhuǎn)發(fā)回來(lái)R1。
很顯然形成了路由環(huán)路。如果沒(méi)有其他措施,IP數(shù)據(jù)報(bào)將在路由環(huán)路莊永久兜圈?,F(xiàn)在相信大家能夠更好的理解IP數(shù)據(jù)報(bào)首部中生存時(shí)間字段的作用了,那就是確保IP數(shù)據(jù)報(bào)不會(huì)在網(wǎng)絡(luò)中永久兜圈。IP數(shù)據(jù)報(bào)每經(jīng)過(guò)一個(gè)路由器其生存時(shí)間的值被減1,當(dāng)減少到0時(shí),IP數(shù)據(jù)報(bào)將被路由器丟棄。
再來(lái)看協(xié)議字段
:
首部檢驗(yàn)和字段
內(nèi)容小結(jié):
網(wǎng)際控制報(bào)文協(xié)議ICMP
網(wǎng)際控制報(bào)文協(xié)議ICMP (Internet Control Message Protocol)
- 為了更有效的轉(zhuǎn)發(fā)IP數(shù)據(jù)報(bào)和提高交付成功的機(jī)會(huì),在網(wǎng)際層使用了網(wǎng)際控制報(bào)文協(xié)議ICMP。
- 主機(jī)或路由器使用ICMP協(xié)議來(lái)發(fā)送
差錯(cuò)報(bào)告報(bào)文
和詢問(wèn)報(bào)文
。 - ICMP報(bào)文被封裝在IP數(shù)據(jù)報(bào)中發(fā)送。
ICMP差錯(cuò)報(bào)告報(bào)文共有以下5種,它們分別是:
- 終點(diǎn)不可達(dá)
- 源點(diǎn)抑制
- 時(shí)間超過(guò)
- 參數(shù)問(wèn)題
- 改變路由(重定向)
我們首先來(lái)看終點(diǎn)不可達(dá),當(dāng)路由器或主機(jī)不能交付數(shù)據(jù)報(bào)時(shí),就像源點(diǎn)發(fā)送終點(diǎn)不可達(dá)報(bào)文。具體可再根據(jù)ICMP的代碼字段細(xì)分為目的網(wǎng)絡(luò)不可達(dá),目的主機(jī)不可達(dá),目的協(xié)議不可達(dá),目的端口不可達(dá),目的網(wǎng)絡(luò)未知,目的主機(jī)未知等13種錯(cuò)誤。我們來(lái)舉例說(shuō)明,假設(shè)主機(jī)H1給H2發(fā)送IP數(shù)據(jù)報(bào),H1會(huì)將IP數(shù)據(jù)報(bào)發(fā)送給路由器R1,由R1幫其轉(zhuǎn)發(fā),若R1的路由表中沒(méi)有網(wǎng)絡(luò)N3的路由記錄,默認(rèn)路由,以及主機(jī)H2的特定主機(jī)路由,則R1舊不知道如何轉(zhuǎn)發(fā)該數(shù)據(jù)報(bào),只能將其丟棄,并向發(fā)送該數(shù)據(jù)報(bào)的源主機(jī)H1發(fā)送ICMP差錯(cuò)報(bào)告報(bào)文,其類(lèi)型為終點(diǎn)不可達(dá)。
再來(lái)看源點(diǎn)抑制,當(dāng)路由器或主機(jī)由于擁塞而丟棄數(shù)據(jù)報(bào)時(shí),就像源點(diǎn)發(fā)送源點(diǎn)抑制報(bào)文,使源點(diǎn)知道應(yīng)當(dāng)把數(shù)據(jù)報(bào)的發(fā)送速率放慢。
例如H1給H2發(fā)送IP數(shù)據(jù)報(bào),當(dāng)該數(shù)據(jù)報(bào)傳輸?shù)铰酚善鱎2時(shí),由于R2擁塞也就是R2比較繁忙,R2根據(jù)自己的丟包策略,丟棄了該數(shù)據(jù)報(bào),并向發(fā)送該數(shù)據(jù)報(bào)的源主機(jī)H1發(fā)送 ICMP差錯(cuò)報(bào)告報(bào)文,其類(lèi)型為源點(diǎn)抑制,
又例如H1給H2發(fā)送IP數(shù)據(jù)報(bào),當(dāng)該數(shù)據(jù)報(bào)傳輸?shù)紿2時(shí),由于H2擁塞就丟棄了該數(shù)據(jù)報(bào),并向發(fā)送該數(shù)據(jù)報(bào)的源主機(jī)H1發(fā)送ICMP差錯(cuò)報(bào)告報(bào)文,其類(lèi)型為源點(diǎn)抑制
來(lái)看時(shí)間超過(guò)。當(dāng)路由器收到一個(gè)目的IP地址不是自己的IP數(shù)據(jù)報(bào)時(shí),會(huì)將其生存時(shí)間TTL字段的值減一,若結(jié)果不為0,則將數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)出去;若結(jié)果為0,除丟棄該數(shù)據(jù)報(bào)外,還要向源點(diǎn)發(fā)送時(shí)間超過(guò)報(bào)文。例如某個(gè)生存時(shí)間等于2的IP數(shù)據(jù)報(bào)傳輸?shù)搅寺酚善鱎1,R1將其生存時(shí)間減一后,結(jié)果是一,這表明該數(shù)據(jù)報(bào)的生存時(shí)間還沒(méi)有結(jié)束,R1將其轉(zhuǎn)發(fā)出去,當(dāng)該數(shù)據(jù)報(bào)傳輸?shù)铰酚善鱎2后,R2將其生存時(shí)間減一號(hào)結(jié)果是0,這表明該數(shù)據(jù)報(bào)的生存時(shí)間結(jié)束了,R2丟棄該數(shù)據(jù)報(bào),并向發(fā)送該數(shù)據(jù)報(bào)的源主機(jī)H1發(fā)送ICMP差錯(cuò)報(bào)告報(bào)文,其類(lèi)型為時(shí)間超過(guò)
另外當(dāng)終點(diǎn)在預(yù)先規(guī)定的時(shí)間內(nèi),不能收到一個(gè)數(shù)據(jù)報(bào)的全部數(shù)據(jù)報(bào)片時(shí),就把已收到的數(shù)據(jù)包片都丟棄,也會(huì)向源點(diǎn)發(fā)送時(shí)間超過(guò)報(bào)文
來(lái)看參數(shù)問(wèn)題。當(dāng)路由器或目的主機(jī)收到IP數(shù)據(jù)報(bào)后,根據(jù)其首部中的檢驗(yàn)和字段,發(fā)現(xiàn)首部在傳輸過(guò)程中出現(xiàn)了誤碼,就丟棄該數(shù)據(jù)報(bào),并向源點(diǎn)發(fā)送參數(shù)問(wèn)題報(bào)文。例如這是H1發(fā)送給H2的IP數(shù)據(jù)報(bào),假設(shè)該數(shù)據(jù)報(bào)在傳輸過(guò)程中受到了干擾,其首部出現(xiàn)了誤碼,當(dāng)該數(shù)據(jù)報(bào)傳輸?shù)铰酚善鱎1后,R1檢測(cè)出該數(shù)據(jù)報(bào)的首部出錯(cuò),于是丟棄該數(shù)據(jù)報(bào),并向發(fā)送該數(shù)據(jù)報(bào)的源主機(jī)H1發(fā)送 IC MP差錯(cuò)報(bào)告報(bào)文,其類(lèi)型為參數(shù)問(wèn)題。
再來(lái)看改變路由,路由器把改變路由報(bào)文發(fā)送給主機(jī),讓主機(jī)知道下次應(yīng)將數(shù)據(jù)報(bào)發(fā)送給另外的路由器,這樣可以通過(guò)更好的路由。我們來(lái)舉例說(shuō)明。假設(shè)我們給主機(jī)H1指定的默認(rèn)網(wǎng)關(guān)是路由器R1,則H1要發(fā)往網(wǎng)絡(luò)N2的IP數(shù)據(jù)報(bào),都會(huì)傳輸給R1,由其幫忙轉(zhuǎn)發(fā),當(dāng)R1發(fā)現(xiàn)H1發(fā)往N2的數(shù)據(jù)報(bào)的最佳路由,不應(yīng)當(dāng)經(jīng)過(guò)R1,而是應(yīng)當(dāng)經(jīng)過(guò)R4時(shí),就用改變路由報(bào)文,把這個(gè)情況告訴主機(jī),于是H1就在自己的路由表中添加一個(gè)項(xiàng)目,到達(dá)N2應(yīng)經(jīng)過(guò)路由器R4,而不是默認(rèn)網(wǎng)關(guān)R1。之后H1要發(fā)往N2的IP數(shù)據(jù)報(bào),都會(huì)傳輸給R4由其幫忙轉(zhuǎn)發(fā)。
需要注意的是以下情況不應(yīng)發(fā)送ICMP差錯(cuò)報(bào)告報(bào)文:
- 對(duì)ICMP差錯(cuò)報(bào)告報(bào)文,不再發(fā)送ICMP差錯(cuò)報(bào)告報(bào)文。
- 對(duì)第一個(gè)分片的數(shù)據(jù)報(bào)片的所有后續(xù)數(shù)據(jù)報(bào)片都不發(fā)送ICMP差錯(cuò)報(bào)告報(bào)文,
- 對(duì)具有多播地址的數(shù)據(jù)報(bào),都不發(fā)送ICMP差錯(cuò)報(bào)告報(bào)文
- 對(duì)具有特殊地址,例如127.0.0.0或0.0.0.0的數(shù)據(jù)報(bào),不發(fā)送ICMP差錯(cuò)報(bào)告報(bào)文。
接下來(lái)我們介紹常見(jiàn)的兩種ICMP詢問(wèn)報(bào)文:
接下來(lái)我們介紹利用ICMP協(xié)議的兩個(gè)典型應(yīng)用:
- 一個(gè)是分組網(wǎng)間探測(cè)PING(Packet Internet Groper)
- 另一個(gè)是跟蹤路由
首先來(lái)看分組網(wǎng)間探測(cè),該應(yīng)用用來(lái)測(cè)試主機(jī)或路由器之間的連通性,其應(yīng)用層直接使用網(wǎng)際層的ICMP協(xié)議,而不通過(guò)運(yùn)輸層的TCP或UDP協(xié)議。所使用的ICMP報(bào)文類(lèi)行為回送請(qǐng)求和回答,如下所示:
再來(lái)看跟蹤路由,該應(yīng)用用來(lái)測(cè)試IP數(shù)據(jù)報(bào),從源主機(jī)到達(dá)目的主機(jī)要經(jīng)過(guò)哪些路由器,在該應(yīng)用的WINDOWS版本中,具體命令為tracert。其應(yīng)用層直接使用網(wǎng)際層的ICMP協(xié)議,所使用的ICMP報(bào)文類(lèi)型有回送請(qǐng)求和回答報(bào)文以及差錯(cuò)報(bào)告報(bào)文。在該應(yīng)用的UNIX版本中,具體命令為traceroute、其在運(yùn)輸層使用UDP協(xié)議,在網(wǎng)際層使用的ICMP報(bào)文類(lèi)型,只有差錯(cuò)報(bào)告報(bào)文。
請(qǐng)大家思考一下 tracert命令的實(shí)現(xiàn)源理是什么?
我們來(lái)舉例說(shuō)明:
-
假設(shè)主機(jī)H1想知道到達(dá)主機(jī)H2要經(jīng)過(guò)哪些路由器,H1就給H2發(fā)送ICMP回送請(qǐng)求報(bào)文,該報(bào)文被封裝在IP數(shù)據(jù)報(bào)中,IP數(shù)據(jù)報(bào)首部中生存時(shí)間字段TTL的值被設(shè)置為1,該IP數(shù)據(jù)報(bào)到達(dá)R1后,其生存時(shí)間減1,結(jié)果為0。R1丟棄該數(shù)據(jù)報(bào),并向發(fā)送該數(shù)據(jù)報(bào)的源主機(jī)H1,發(fā)送ICMP差錯(cuò)報(bào)告報(bào)文,其類(lèi)型為時(shí)間超過(guò),這樣 H1就知道了到達(dá)H2的路徑中的第一個(gè)路由器
-
H1繼續(xù)發(fā)送下一個(gè)封裝有ICMP回送請(qǐng)求報(bào)文的IP數(shù)據(jù)報(bào),其首部中生存時(shí)間字段TTL的值被設(shè)置為二,經(jīng)過(guò)R1的轉(zhuǎn)發(fā)后,該數(shù)據(jù)包的生存時(shí)間減少為一,該IP數(shù)據(jù)報(bào)到達(dá)R2后,其生存時(shí)間減1,結(jié)果為0,R2丟棄該數(shù)據(jù)報(bào),并向發(fā)送該數(shù)據(jù)報(bào)的源主機(jī)H1,發(fā)送ICMP差錯(cuò)報(bào)告報(bào)文,其類(lèi)型為時(shí)間超過(guò)這樣 H1就知道了到達(dá)H2的路徑中的第二個(gè)路由器
-
H1繼續(xù)發(fā)送下一個(gè)封裝有ICMP回送請(qǐng)求報(bào)文的IP數(shù)據(jù)報(bào),其首部中生存時(shí)間字段TTL的值被設(shè)置為三,經(jīng)過(guò)R1和R2的轉(zhuǎn)發(fā)后,該數(shù)據(jù)報(bào)到達(dá)主機(jī)H2,其生存時(shí)間減少為一,H2解析該數(shù)據(jù)報(bào),發(fā)現(xiàn)其內(nèi)部封裝的是ICMP回送請(qǐng)求報(bào)文,于是就給H1發(fā)送封裝有ICMP回送請(qǐng)求回答報(bào)文的IP數(shù)據(jù)報(bào),這樣 H1就知道已經(jīng)跟蹤到路徑中的最后一站,也就是目的主機(jī)H2
內(nèi)容小結(jié)如下:
虛擬專(zhuān)用網(wǎng)VPN與網(wǎng)絡(luò)地址轉(zhuǎn)換NAT
這里我們介紹虛擬專(zhuān)用網(wǎng)VPN(Virtual Private Network)
和網(wǎng)絡(luò)地址轉(zhuǎn)換NAT
的基本工作原理。
首先介紹虛擬專(zhuān)用網(wǎng)VPN的基本工作原理,來(lái)看這個(gè)例子,假設(shè)這是某機(jī)構(gòu)部門(mén)A的局域網(wǎng),這是該機(jī)構(gòu)部門(mén)B的局域網(wǎng),部門(mén)A的局域網(wǎng)位于北京,部門(mén)B的局域網(wǎng)位于上海,那么如何才能讓這兩個(gè)專(zhuān)用網(wǎng)絡(luò)可以通信?
一種方法是租用電信公司的通信線路,這種方法簡(jiǎn)單方便,但是租金很高。
另一種方法是利用公用的因特網(wǎng)作為本機(jī)構(gòu)各專(zhuān)用網(wǎng)之間的通信載體,這樣形成的專(zhuān)用網(wǎng)要稱(chēng)為虛擬專(zhuān)用網(wǎng)。
那么虛擬專(zhuān)用網(wǎng)中的各主機(jī)應(yīng)該分配怎樣的IP地址?由于IPv4地址的緊缺,一個(gè)機(jī)構(gòu)能夠申請(qǐng)到的IPv4地址數(shù)量往往遠(yuǎn)小于本機(jī)構(gòu)所擁有的主機(jī)數(shù)量。因此虛擬專(zhuān)用網(wǎng)中的各主機(jī)所分配的地址應(yīng)該是無(wú)需申請(qǐng),就可由本機(jī)構(gòu)自由分配的專(zhuān)用地址,而不是需要申請(qǐng)的在因特網(wǎng)上使用的公有地址
我們可以在因特網(wǎng)數(shù)字分配機(jī)構(gòu)IA NA的官方網(wǎng)站,查看IPVC地址空間中特殊地址的分配方案,這三個(gè)地址塊中的地址,就是無(wú)需申請(qǐng)的可自由分配的專(zhuān)用地址或稱(chēng)私有地址。
我們給部門(mén)A的專(zhuān)用網(wǎng)分配的私有地址的網(wǎng)絡(luò)號(hào)為10.1.0.0,給部門(mén)B的專(zhuān)用網(wǎng)分配的私有地址的網(wǎng)絡(luò)號(hào)為10.2.0.0。兩個(gè)專(zhuān)用網(wǎng)裝各主機(jī)所分配的私有地址如圖所示,需要注意的是私有地址只能用于一個(gè)機(jī)構(gòu)的內(nèi)部通信,而不能用于和因特網(wǎng)上的主機(jī)通信。換句話說(shuō),私有地址只能用作本地地址,而不能用作全球地址。在因特網(wǎng)中的所有路由器,對(duì)目的地址是私有地址的IP數(shù)據(jù)報(bào),一律不進(jìn)行轉(zhuǎn)發(fā)。很顯然部門(mén)A和B各自至少需要一個(gè)路由器,具有合法的全球IP地址,這樣他們各自的專(zhuān)用網(wǎng)才能利用公有的因特網(wǎng)進(jìn)行通信。
假設(shè)部門(mén)A中的這臺(tái)主機(jī)要給部門(mén)B中的另一臺(tái)主機(jī)發(fā)送數(shù)據(jù),它會(huì)將待發(fā)送數(shù)據(jù)封中成內(nèi)部IP數(shù)據(jù)報(bào),發(fā)送給路由器R1,其首部中源地址字段的值為部門(mén)A中該主機(jī)的IP地址,目的地址字段的值為部門(mén)B中另一臺(tái)主機(jī)的IP地址。R1收到該數(shù)據(jù)報(bào)后,發(fā)現(xiàn)其目的網(wǎng)絡(luò)必須通過(guò)因特網(wǎng)才能到達(dá),就將該內(nèi)部IP數(shù)據(jù)報(bào)進(jìn)行加密,這樣就確保了內(nèi)部IP數(shù)據(jù)報(bào)的安全,然后重新添加上數(shù)據(jù)報(bào)的首部,封裝成為在因特網(wǎng)上發(fā)送的外部數(shù)據(jù)報(bào),且首部中源地址字段的值為路由器R1的全球地址,目的地址字段的值為路由器R2的全球地址。
路由器R2收到該外部IP數(shù)據(jù)報(bào)后,去掉其首部,將其數(shù)據(jù)部分進(jìn)行解密,恢復(fù)出源來(lái)的內(nèi)部IP數(shù)據(jù)報(bào),這樣就可以從其首部提取出源地址和目的地址,根據(jù)目的地址將該內(nèi)部IP數(shù)據(jù)報(bào)發(fā)送給相應(yīng)的主機(jī)。很顯然兩個(gè)專(zhuān)用網(wǎng)內(nèi)的主機(jī)間發(fā)送的數(shù)據(jù)報(bào)是通過(guò)了公用的因特網(wǎng),但在效果上好像是在本機(jī)構(gòu)的專(zhuān)用網(wǎng)上傳送一樣
數(shù)據(jù)報(bào)在因特網(wǎng)中可能要經(jīng)過(guò)多個(gè)網(wǎng)絡(luò)和路由器,但從邏輯上看,R1和R2之間好像是一條直通的點(diǎn)對(duì)點(diǎn)鏈路,因此也被稱(chēng)為IP隧道技術(shù)。
- 本地屬于同一機(jī)構(gòu)內(nèi)不同部門(mén)的內(nèi)部網(wǎng)絡(luò)所構(gòu)成的虛擬專(zhuān)用網(wǎng),這就稱(chēng)為內(nèi)聯(lián)網(wǎng)VPN。
- 有時(shí)一個(gè)機(jī)構(gòu)的虛擬專(zhuān)用網(wǎng)需要某些外部機(jī)構(gòu)參加進(jìn)來(lái),這樣的虛擬專(zhuān)用網(wǎng)又稱(chēng)為外聯(lián)網(wǎng)VPN。
- 在外地工作的員工需要訪問(wèn)公司內(nèi)部的專(zhuān)用網(wǎng)絡(luò)時(shí),只要在任何地點(diǎn)接入到因特網(wǎng),運(yùn)行駐留在員工PC中的VPN軟件,在員工的PC和公司的主機(jī)之間建立VPN隧道,即可訪問(wèn)專(zhuān)用網(wǎng)絡(luò)中的資源,這種虛擬專(zhuān)用網(wǎng)又稱(chēng)為遠(yuǎn)程接入VPN。相信很多同學(xué)寒暑假在家中要遠(yuǎn)程訪問(wèn)校園網(wǎng)內(nèi)的某些資源時(shí),就要使用過(guò)遠(yuǎn)程接入VPN這種技術(shù)。
接下來(lái)我們介紹網(wǎng)絡(luò)地址轉(zhuǎn)換NATNetwork Address Translation)
的基本工作源理。
雖然因特網(wǎng)采用了無(wú)分類(lèi)編制方式,來(lái)減緩IP地址空間耗盡的速度,但是由于因特網(wǎng)用戶數(shù)目的激增,特別是大量小型辦公室網(wǎng)絡(luò)和家庭網(wǎng)絡(luò)接入因特網(wǎng)的需求不斷增加,IPv4地址空間即將面臨耗盡的危險(xiǎn),仍然沒(méi)有被解除。
1994年提出了一種網(wǎng)絡(luò)地址轉(zhuǎn)換的方法,再次緩解了IPv4地址空間即將耗盡的問(wèn)題。NAT能使大量使用內(nèi)部專(zhuān)用地址的專(zhuān)用網(wǎng)絡(luò)用戶,共享少量外部全球地址來(lái)訪問(wèn)因特網(wǎng)上的主機(jī)和資源。
我們來(lái)舉例說(shuō)明,圖中的專(zhuān)用網(wǎng)絡(luò)使用私有網(wǎng)絡(luò)號(hào)192.168.0.0,該網(wǎng)絡(luò)中各主機(jī)的私有地址如圖所示,那么使用私有地址的主機(jī)如何才能與因特網(wǎng)上使用全球IP地址的主機(jī)進(jìn)行通信呢?
這需要在專(zhuān)用網(wǎng)絡(luò)連接到因特網(wǎng)的路由器上,安裝NAT軟件,裝有NAT軟件的路由器,叫做NAT路由器
,它至少有一個(gè)有效的外部全球IP地址,這樣所有使用私有地址的主機(jī)在和外界通信時(shí)都要在NAT路由器上將其私有地址轉(zhuǎn)換成全球IP地址。
我們來(lái)舉例說(shuō)明,假設(shè)使用私有地址的該主機(jī)要給因特網(wǎng)上使用全球IP地址的另一臺(tái)主機(jī)發(fā)送IP數(shù)據(jù)報(bào),該主機(jī)將數(shù)據(jù)報(bào)發(fā)送給NAT路由器,數(shù)據(jù)報(bào)首部中源地址字段的值為該主機(jī)的私有地址,目的地址字段的值為因特網(wǎng)上另一臺(tái)主機(jī)的全球地址。NAT路由器從自己的全球IP地址池中為該主機(jī)分配一個(gè)臨時(shí)的全球IP地址 172.38.1.5,并將IP數(shù)據(jù)報(bào)的源地址修改為該地址,然后將私有地址與全球地址的對(duì)應(yīng)關(guān)系記錄在NAT轉(zhuǎn)換表中,之后就可以轉(zhuǎn)發(fā)該IP數(shù)據(jù)報(bào)了。請(qǐng)注意此時(shí)該IP數(shù)據(jù)報(bào)中的源地址和目的地址都是全球IP地址,如圖所示:
因特網(wǎng)上的這臺(tái)主機(jī)給源主機(jī)發(fā)回?cái)?shù)據(jù)報(bào),數(shù)據(jù)報(bào)的源地址和目的地址都是全球IP地址,如圖所示。NAT路由器收到該IP數(shù)據(jù)報(bào)后,在NAT轉(zhuǎn)換表中進(jìn)行查找,發(fā)現(xiàn)該數(shù)據(jù)報(bào)的目的地址所對(duì)應(yīng)的私有地址為192.168.0.2,于是就將該數(shù)據(jù)報(bào)的目的地址修改為192.168.0.2,并將其發(fā)送給相應(yīng)的主機(jī)。請(qǐng)注意此時(shí)該IP數(shù)據(jù)包中的源地址為因特網(wǎng)上那臺(tái)主機(jī)的全球IP地址,而目的地址為專(zhuān)用網(wǎng)絡(luò)中這臺(tái)主機(jī)的私有地址如圖所示。
當(dāng)專(zhuān)用網(wǎng)中的這兩臺(tái)使用私有地址的主機(jī),都要給因特網(wǎng)上使用全球地址的另一臺(tái)主機(jī)發(fā)送數(shù)據(jù)報(bào)時(shí),在NAT路由器的NAT轉(zhuǎn)換表中就會(huì)產(chǎn)生兩條記錄,分別記錄兩個(gè)私有地址與兩個(gè)全球地址的對(duì)應(yīng)關(guān)系。
這種基本轉(zhuǎn)換方法存在這樣一個(gè)問(wèn)題。如果NAT路由器具有N個(gè)全球IP地址,那么至多只能有N個(gè)內(nèi)網(wǎng)主機(jī),能夠同時(shí)和因特網(wǎng)上的主機(jī)通信。
由于絕大多數(shù)的網(wǎng)絡(luò)應(yīng)用都是使用運(yùn)輸層協(xié)議TCP或UDP來(lái)傳送數(shù)據(jù),因此可以利用運(yùn)輸層的端口號(hào)和IP地址一起進(jìn)行轉(zhuǎn)換,這樣用一個(gè)全球IP地址就可以使多個(gè)擁有本地地址的主機(jī),同時(shí)和因特網(wǎng)上的主機(jī)進(jìn)行通信,這種將端口號(hào)和IP地址一起進(jìn)行轉(zhuǎn)換的技術(shù),叫做網(wǎng)絡(luò)地址與端口號(hào)轉(zhuǎn)換NAPT
如圖所示,這是本例中的NAPT路由器,這是它的全球IP地址,這是它的NAPT轉(zhuǎn)換表中的部分內(nèi)容:
實(shí)際上現(xiàn)在很多家用路由器都是這種NAPT路由器
請(qǐng)大家思考這樣一個(gè)問(wèn)題:內(nèi)網(wǎng)主機(jī)與外網(wǎng)主機(jī)間的通信是否能由外網(wǎng)主機(jī)首先發(fā)起?
答案是否定的,如果由外網(wǎng)主機(jī)首先發(fā)起,那么當(dāng)NAPT路由器收到來(lái)自外網(wǎng)的IP數(shù)據(jù)報(bào)后,在NAPT轉(zhuǎn)換表中找不到相應(yīng)的記錄,也就無(wú)法把數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)給內(nèi)網(wǎng)中的主機(jī),因此需要私有地址的主機(jī)不能直接充當(dāng)因特網(wǎng)服務(wù)器。對(duì)于一些點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)應(yīng)用,需要外網(wǎng)主機(jī)主動(dòng)與內(nèi)網(wǎng)主機(jī)進(jìn)行通信,在通過(guò)NAT時(shí)也會(huì)遇到問(wèn)題,需要網(wǎng)絡(luò)應(yīng)用自己使用一些特殊的NAT穿越技術(shù)來(lái)解決問(wèn)題。
另外由于NAT對(duì)外網(wǎng)屏蔽了內(nèi)網(wǎng)主機(jī)的網(wǎng)絡(luò)地址,因此能為內(nèi)網(wǎng)主機(jī)提供一定的安全防護(hù)。我們前面提到過(guò)的ICMP協(xié)議的典型應(yīng)用Tracert,可以看到其中有兩個(gè)路由器使用了相同的IP地址,這很可能是內(nèi)網(wǎng)出外網(wǎng)的路由器使用了NAT,并且內(nèi)網(wǎng)中還有一個(gè)使用私有IP地址的路由器:
內(nèi)容小結(jié):