《計算機網絡》之網絡層

網絡層

一、引言

       首先,作爲OSI七層模型的第三層,網絡層向下覆蓋了多種數據鏈路層標準,向上兼容多種運輸層協議。而體系結構中的這一層卻顯得特別窄:基本上只有“IP”一項。網絡層將多個局域網通過路由器互連,構成互聯網,而向上提供簡單靈活的、無連接的、盡最大努力交付的數據報服務(因特網的設計思路)。也就是說,網絡層提供的是不可靠的交付。另外需要注意的是網絡層提供的是數據報服務,而不是電信網絡(撥打電話)的虛電路服務。

       網絡層廣泛使用TCP/IP體系中的網際協議IP(Internet Protocol)。IP協議的作用是使互連起來的性能各異的網絡在網絡層上看起來好像是一個統一的網絡,當IP網上的主機進行通信時,它們看不見各網絡的具體異構細節。在介紹IP地址這個概念之前,我們先來思考兩個問題。一是IP地址和硬件地址有什麼區別。硬件地址(MAC地址)是僅在數據鏈路層和物理層使用的物理地址,而IP地址是網絡層和以上各層使用的一種邏輯地址。第二個問題,爲什麼要有IP地址而不直接使用硬件地址呢?這是因爲,全世界存在着各式各樣的網絡,它們使用不同的硬件地址。要使這些異構網絡能夠互相通信就必須進行非常複雜的硬件地址轉換工作,因此由用戶或用戶主機來完成這項工作幾乎是不可能的事。但統一且抽象的IP地址把這個問題解決了。它屏蔽了下層很複雜的細節,便於分析和研究問題

       與IP協議配套使用的還有四個協議(同屬網絡層):

(1)地址解析協議ARP(Address ResolutionProtocol) 將IP地址轉換爲物理地址(ARP請求分組、ARP響應分組)

(2)逆地址解析協議RARP(Reverse AddressResolution Protocol) 將物理地址轉換爲IP地址

(3)網際控制報文協議ICMP(Internet ControlMessage Protocol)

(4)網際組管理協議IGMP(Internet GroupManagement Protocol) 用於多播。

       在本文剩下的內容中,我們將首先介紹IP地址的內容,再介紹如何利用IP地址進行路由,最後介紹RIP和OSPF這兩個常用的路由選擇協議,順便提了一下ICMP和BGP。而IP多播和NAT(Network Address Translation)則徹底略去。

二、IP地址

好了,下面來介紹IP地址的特徵。IP地址基本上經歷了四個發展階段:分類的IP地址——(由兩級到三級)—→劃分定長子網掩碼的子網——(子網掩碼不固定長度)—→變長子網掩碼VLSM(Variable Length Subnet Mask)的子網——(無類,回到兩級)—→無分類編址CIDR(ClasslessInter-Domain Routing)。總的來看,IP地址從有類到類別弱化,最後變成無類;從兩級到三級,最後又回到兩級編址。每個發展階段的IP地址都有它自己的特點。

(1)分類的IP地址 此時IP地址由網絡號和主機號組成,依據網絡號的不同分爲以下5類。

類別

範圍

專用地址

不指派的地址

A

0~127 (0)

10.0.0.0~10.255.255.255

0(本網絡) 127(環回測試)

B

128~191 (10)

172.16.0.0~172.31.255.255

128.0

C

192~223 (110)

192.168.0.0~192.168.255.255

192.0.0

D

(多播)

224~239 (1110)

 

 

E

(保留今後)

240~255 (1111)

 

 

可以看出每類網絡能夠分配的網絡號比較複雜,是“範圍”除去專用地址再除去不指派地址後剩下的。而每個網絡可指派的主機號則好記得多,只是全0和全1的這兩個主機號不能指派而已。其中,主機號全0代表“本網絡”,全1代表本網絡上的所有主機,即廣播(Broadcast)。

(2)劃分子網 此時IP地址由網絡號、子網號和主機號組成。子網比較簡單,這裏不再贅述。不過有一個結論需要注意:劃分子網增加了靈活性,但卻減少了能夠連接在網絡上的主機總數。也就是說,利用率提高(減少空閒浪費),不過每個子網的子網號不能爲全0或全1,這相比從前減少了能夠分配的主機號數。

(3)VLSM 在一個劃分子網的網絡中可同時使用幾個不同的子網掩碼,即可以構造“子網中的子網”。具體方法也不再贅述。

(4)CIDR 徹底消除有類地址和劃分子網的概念,迴歸兩級編址。此時IP地址由網絡前綴和主機號組成。這裏引入”斜線記法“(slash notation),如:128.14.35.7/20=1000000000001110 00100011 00000111. CIDR地址的聚合就是路由聚合(routeaggregation),也就是超網(supernetting)。超網的作用是減少路由器之間的路由選擇信息的交換,從而提高了整個因特網的性能

我們知道,前面的幾個階段是不可以使用全0和全1的子網號的,因爲可能會出現諸如此類的矛盾:即對於一個子網號和主機號都爲全0的IP地址(100.0.0.0 子網掩碼255.192.0.0),我們不能確定它表示的是對一個“大網”(100.0.0.0 掩碼255.0.0.0)的廣播,還是對一個子網(100.0.0.0 掩碼255.192.0.0)的廣播。在CIDR中,又可以使用全0和全1的子網號了,這是爲什麼呢?我詢問了老師,他的解答是:判斷是大網廣播還是小網廣播的關鍵是在於有沒有子網掩碼的輔助,早期子網劃分中爲了避免出現問題因而不建議使用全0或全1 的子網號,因爲這個時候還是路由器上配置相應的子網掩碼,可能有路由器不支持子網掩碼;到了CIDR的時候其實對一個地址塊描述的時候就必須要有掩碼了,也就說大家都支持了,這個時候其實就不會出現由於沒有掩碼而出現的理解差異的問題了。按照老師的意思,CIDR的地址必須配備掩碼,但IP數據報(見下節)中是沒有專門的位置來存放掩碼的,難道是將掩碼統一存放在“可選字段”區嗎?還希望知情人士給予解答

三、IP數據報

下面簡單介紹IP數據報的格式。圖示如下。

值得注意的地方有四個。

(1)首部長度 共佔4位,但其值的單位是4字節,顯然最大爲(24-1)×4=60字節。也就是說,IP數據報首部長度爲20~60字節

(2)總長度 共佔16位,值的單位是1字節,指的是首部和數據之和的長度,也就是說,一個IP數據報最長爲216-1=65535字節。實際的總長度還受數據鏈路層的“最大傳送單元MTU(Maximum Transfer Unit)”限制,MTU一般小於1500字節。

(3)片偏移 共佔13位,值的單位是8字節,指的是一個運輸層分組經過分片後,產生的多個IP數據報中每個分片的數據部分的頭部相對於原運輸層整個分組的起點的位置。其實就是在這個分片前面分片的所有數據長度之和除以8(注意單位)。

(4)首部檢驗和 只檢驗首部,不檢驗數據部分。這裏要與其他層的其他協議packet的檢驗內容區分開(MAC幀檢驗全部,RIP沒有,OSPF檢驗全部,UDP和TCP也是檢驗全部)。採用的算法是二進制反碼求和後取和的反碼。關於“二進制反碼(one’s complement)求和”要注意計算方法,其實就是有進位的相加,若最高位有進位就補加在最低位上。

四、路由

       細節也不贅述。簡單強調一下路由匹配順序,也就是分組轉發算法①會首先判斷目標網絡地址是不是與自己直接相連的,來直接交付;②再看目標IP地址是不是路由表中的特定主機路由(即此IP地址的“高富帥VIP”路由記錄),是的話就按此交付;③再看目標網絡地址在不在路由表中(普通青年路由記錄),是的話就按此交付;④最後看路由表中有沒有一個默認路由(窮屌絲路由記錄),有的話就按此交付,否則就報告轉發分組出錯

五、路由選擇協議

       網際控制報文協議ICMP就略過了,它允許主機或路由器報告差錯情況和提供有關異常情況的報告,分爲ICMP差錯報告報文和ICMP詢問報文。

       具體的路由表是如何得到和維護的呢?這就需要路由算法。按照是自治系統AS(Autonomous System)內部的還是AS之間的,路由選擇協議分爲內部網關協議IGP(Interior Gateway Protocol)和外部網關協議EGP(ExternalGateway Protocol)。IGP中最常用的有路由信息協議RIP(Routing InformationProtocol)和開放最短路徑優先OSPF(Open Shortest PathFirst)。它們的特點如下表

 

 

RIP

OSPF

 

相同點

性質

①都是IGP

 

②都是要尋找一條最短路徑(Short Path First)

 

性能

③RIP2和OSPF都有鑑別功能(僅在可信賴的路由器間交換路由信息)

 

④RIP2和OSPF都支持VLSM和CIDR

 

不同點

性質

①使用分佈式的基於距離向量的路由選擇協議

①使用分佈式的基於鏈路狀態的路由選擇協議

 

②只維持路由表

②維持一個本AS一致的鏈路狀態數據庫(AS拓撲圖),和由此得出的路由表

 

③使用UDP傳送

③直接用IP數據報傳送

 

交換

④僅和相鄰的路由器交換信息

④向本AS/area中所有的路由器用洪泛法(flooding)發送信息

 

⑤按固定時間間隔交換信息

⑤只有當鏈路狀態發生變化時才發送信息

 

⑥發送自己的全部路由表

⑥只發送與相鄰路由器的鏈路的狀態

性能

⑦好消息傳播得快,而壞消息傳播得慢(收斂慢)

⑦收斂快

 

⑧限制網絡規模(長度15)

⑧規模很大(將AS分成區域area)

 

⑨實現簡單,開銷較小

⑨原理簡單,實現複雜

 

 

⑩對不同類型的業務可根據metric計算出不同的路由,靈活性高

 

 

⑪擁有負載平衡(load balancing)功能

 

       可以發現,RIP是使用UDP協議傳送的,具體是將RIP報文加上UDP頭部作爲UDP用戶數據報,然後再加上IP首部作爲IP數據報的。這裏網絡層的協議使用到了運輸層的協議,這個異常舉動我一直沒想明白。首先是不明白爲什麼要使用UDP數據報;其次是這樣會不會影響到計算機網絡體系結構的分層原則,反倒讓上層爲下層服務了;最後是路由器是不是也因此具有運輸層的部分功能了,而不是一個純粹的第三層設備了?還希望跟大家討論這個問題

       RIP2和OSPF的報文格式如下圖所示。要注意OSPF的“分組長度”字段是指總長度,單位爲字節。“檢驗和”字段檢測整個分組。



      最後介紹一點關於EGP的知識吧。邊界網關協議BGP(Border Gateway Protocol)是外部網關協議EGP的一種。BGP只能是力求尋找一條能夠到達目的網絡且比較好的路由,而並非要尋找一條最佳路由。一個AS的BGP發言人(往往是BGP邊界路由器)之間使用TCP連接交換路由信息。

六、尾聲

好了,到這裏整個網絡層就簡單介紹完畢了,有些地方略過可能是因爲相對不太重要,也可能是因爲知識很基礎,如果不懂的話最好閱讀一下教材(本系列文章的第一篇《概述》中給大家推薦了三本書)吧!細心的同學可能發現,文章中留下了兩個問題。當然問題摳的比較細,對考試應該沒什麼影響,但出於學問的角度我還是寫了出來。如果你知道的話,歡迎解答!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章