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