一篇文章幫你理解網絡層功能

網絡層位於數據鏈路層之上,運輸層之下;也就是說網絡層是基於數據鏈路層的服務爲運輸層提供服務的。

虛電路服務和數據報服務

虛電路服務和數據報是網絡層所提供的兩種服務,那麼究竟什麼是虛電路服務?什麼是數據報服務?

數據報服務

爲網絡層提供無連接服務(無連接服務:不事先爲分組的傳輸確定傳輸路徑,每個分組獨立確定傳輸路徑,不同分組傳輸路徑可能不同);每個分組都攜帶源地址和目的地址。

虛電路服務

爲網絡層提供連接服務【連接服務:首先爲分組的傳輸確定傳輸路徑(建立連接),然後沿該路徑(連接)傳輸系列分組,系列分組傳輸路徑相同,傳輸結束後拆除連接】;什麼是虛電路呢?虛電路就是一條源主機到目的主機類似於電路的路徑(邏輯連接),路徑上所有結點都要維持這條虛電路的建立,都維持一張虛電路表, 每一項記錄了一個打開的虛電路的信息;而且還將數據報方式和電路交換方式結合,可以發揮兩者的優點。那麼虛電路的通信過程是什麼呢?

  1. 建立連接(虛電路建立):每個分組攜帶虛電路號,而非自的地址。源主機發送“呼叫請求”分組並收到“呼叫應答”分組後纔算建立連接。
  2. 數據傳輸:全雙工通信、
  3. 釋放連接(虛電路釋放):源主機發送“釋放請求”分組,以拆除電路。
對比方面 虛電路服務 數據報服務
思路 可靠通信由網絡來保證 可靠通信由用戶主機保證
連接的建立 必須有 不需要
終點地址 僅在連接建立階段使用,每個分組使用短的虛電路號 每個分組都有終點的完整地址
分組的轉發 屬於同一條虛電路的分組均按照同一路由進行轉發 每個分組獨立選擇路由進行轉發
當結點出故障時 所有通過出故障的結點的虛電路均不能工作 出故障的結點可能會丟失分組,一些路由可能會發生變化
分組的順序 總是按照發送順序到達終點 到達終點的時間,不一定按照發送順序
端到端的差錯處理和流量控制 可以由網絡負責,也可以由用戶主機負責 由用戶主機負責

網際協議IP

網際協議IP是TCP/IP體系中兩個最重要的協議之一,也是最重要的因特網標準協議之一;通常還有地址解析協議ARP、網際控制報文協議ICMP和網際組管理協議IGMP三個協議與IP協議配套協議。這裏可能有人會問了“不是還有逆地址解析協議RARP的嗎”,這裏沒有說的原因是因爲RARP協議已經淘汰不適用了,而且它的功能也在別的協議(DHCP協議)中能夠實現。
這裏給大家補充一些中間設備的知識,不然學完計算機網絡連中間設備都分不清楚說出去確實有點尷尬;

  • 物理層使用的中間設備叫做轉發器
  • 數據鏈路層使用的中間設備叫做網橋橋接器
  • 網絡層使用的中間設備叫做路由器
  • 在網路層以上使用的中間設備叫網關

IP地址的分類

在這裏插入圖片描述

IP地址與硬件地址

學習IP地址時,弄清楚IP地址和硬件地址的區別是很重要的。物理地址是數據鏈路層和物理層使用的地址,而IP地址是網路層和以上各層使用的地址,是一種邏輯地址;發送數據時,數據從上層傳給下層,使用IP地址的IP數據報一旦交給了數據鏈路層就被封裝成MAC幀,MAC幀所使用的目的地址和源地址都是硬件地址。因爲IP數據報傳給數據鏈路層,IP數據報作爲MAC幀的數據被封裝起來,所以數據鏈路層看不見數據報的IP地址

地址解析協議ARP

到這裏細心的同學可能會發現,我們還有個問題沒有解決“主機或者路由器要怎樣知道MAC幀上填入什麼樣的硬件地址?”,簡單的來說就是。我們雖然知道了IP地址,那應該怎麼得到其對應的硬件地址呢?這個問題就交給地址解析協議ARP來解決。
那麼地址解析協議ARP又是如何解決這個問題的呢?地址解析協議ARP解決的辦法是在主機ARP高速緩存中存放一個IP地址到硬件地址的映射表,並且這個映射表還經常更新(新增或超時刪除)。每一個主機都設有一個ARP高速緩存,裏面有本局域網上各主機的IP地址到硬件地址的映射表。問題又來了,映射表裏面的映射是怎樣添加的呢?

  1. ARP進程在本局域網中廣播發出一個ARP請求分組,主要內容是“我的IP地址是IP01,硬件地址是A,我想知道IP地址是IP02的主機的硬件地址”;
  2. 在本局域網上的所有主機上運行的ARP進程都會受到次ARP請求分組;
  3. 主機B的IP地址與請求分組中要查詢的IP地址一致,就收下這個ARP請求分組,並向主機A發送ARP響應分組,主要內容是“我的IP地址是IP02,我的硬件地址是B”;由於其他的所有主機的IP地址與請求分組中的查詢的IP地址不同,所以別的主機不需要進行相應;
  4. 主機A收到響應分組後,就在自己的映射表中添加主機B的IP地址到硬件地址的映射。

注意:因爲主機B後面還要向主機A發送響應分組,爲了減少網絡上的通信量,主機B也會保存主機A的IP地址到硬件地址的映射;而且。ARP會把保存在高速緩存中的每一個映射都設置生存時間
ARP的四種典型情況:

  • 主機A發給本網絡上的主機B:用ARP找到主機B的硬件地址;
  • 主機A發給另一網絡上的主機B:用ARP找到本網絡上一個路由器的硬件地址;
  • 路由器發給本網絡的主機A:用ARP找到主機A的硬件地址;
  • 路由器發給另一網絡的主機B:用ARP找到本網絡上的一個路由器的硬件地址。

IP數據報的格式

這個在網上可以搜到很多很詳細的解釋,這裏就不再過多的解釋,只是簡單的分享一下,如果想詳細學習可以查閱那些專門介紹IP數據報格式的博客,這屬於固定的內容一般不會出錯。
在這裏插入圖片描述
在這裏插入圖片描述

IP層的轉發分組

其核心還是分組轉發算法,那麼我們就來看一下分組轉發算法,具體如下:

  1. 從數據報的首部提取目的主機的IP地址D,得出目的網絡地址爲N;
  2. 若N是與此路由器直接相連的某個網絡地址,則進行直接交付,不需要經過其他的路由器,直接把數據交付目的主機;否則就是間接交付,執行3;
  3. 若路由表中有目的地址爲D的特定主機路由,則把數據報傳送給路由表中指明的下一跳路由器;否則,執行4;
  4. 若路由表中有達到網路N的路由,則把數據傳送給路由表中所指明的下一跳路由器;否則,執行5;
  5. 若路由表中有一個默認路由,則把數據報傳給路由表中所指明的默認路由器;否則,執行6;
  6. 報告轉發分組出錯。

劃分子網和構造超網

前面我們所說的IP地址均爲兩級IP地址,即表示爲IP地址 ::== {<網絡號>,<主機號>}

但是,這樣的IP地址就能滿足我們的使用嗎?當然不是,兩級IP地址還存在着很多問題。IP地址空間利用率有時會很低,每一個A級網絡可連接的主機數超過1000萬臺,但是真正的使用中這些網絡上計算機的數量可能根本達不到這麼大的數值;爲每一個物理網絡分配一個網絡號會使路由表變得太大而導致網絡性能變壞;兩級IP地址還不夠靈活,如果一個公司有緊急情況需要開通一個新網絡,但是在申請到新的IP地址之前,這個忘了是不可能連接到因特網上的。爲了解決這些問題,就將二級網絡再進行劃分;

劃分子網

爲了解決上面所說的問題,1985年的時候就在IP地址中增加了一個“子網號字段”,使得兩級IP變成了三級IP,這種做法就叫做劃分子網,或子網尋址子網路由選擇。那麼究竟是怎麼進行劃分的呢?基本思路如下:

  1. 一個擁有很多物理網絡的單位,可將所屬的物理網絡劃分爲若干個子網;值得注意的是,子網劃分只是這個單位內部的事情,在單位之外來看仍然是一個網絡,看不見有多少個子網。
  2. 劃分的方法:將網絡的主機號借用若干位作爲子網號,主機號位數減少,兩級IP地址變爲三級IP地址,表示爲IP地址 ::== {<網絡號>,<子網號>,<主機號>}
  3. 當其他網絡發送給本單位IP數據報的時候,仍然根據IP地址找到相應的路由器。但是此路由器收到IP數據報後,在按照網絡號和子網號找到目的子網,交付IP數據報。

停停停,等一下,上面說的路由器收到IP數據報之後是怎麼把他發給子網的呢?從IP數據報的首部又不能看出來目的主機所在的網絡有沒有進行子網劃分,究竟是怎麼實現的呢?
這就要說說子網掩碼了!

子網掩碼

子網掩碼也是32位,是由一串1和一串0組成的,子網掩碼的1對應三級IP地址裏面的網絡號和子網號,子網掩碼中的0對應三級IP地址裏面的主機號;那麼網絡地址就是子網掩碼和IP地址進行逐位的“與”運算。這裏還要明白一個事情,就是:在不劃分子網的時候,也要使用子網掩碼。現在互聯網標準規定了所有的網絡都必須有子網掩碼,同時路由器的路由表中也必須有子網掩碼這一欄。所以,若一個網絡沒有劃分子網,那麼改網絡的子網掩碼就使用默認子網掩碼

  • A類地址的默認子網掩碼是255.0.0.0;
  • B類地址的默認子網掩碼是255.255.0.0;
  • C類地址的默認子網掩碼是255.255.255.0;

由此,我們可以知道子網掩碼是一個網絡或一個子網的重要屬性劃分子網雖然增加了靈活性,但卻減少了能夠連接在網絡上的主機總數

使用子網時的分組轉發

上面我們說過,使用子網後路由器的路由表中必須有子網掩碼這一欄,即路由表中要包含這三項內容:目的網絡地址、子網掩碼和下一跳地址,此時路由器轉發分分組的算法爲:

  1. 從數據報的首部提取目的主機的IP地址D;
  2. 先判斷是否爲直接交付。對路由器直接相連的網絡逐個進行檢查:用各網絡的子網掩碼和D逐位相“與”,看結果是否和響應的網絡地址匹配。若匹配,則把分組進行直接交付,轉發任務結束;否則就是間接交付,執行3
  3. 若路由表中有目的地址爲D的特定主機路由,則把數據報傳送給路由表中指明的下一跳路由器;否則,執行4;
  4. 對路由表中的每一行(目的網絡地址,子網掩碼,下一跳地址),用其中的子網掩碼和D逐位相“與”,其結果爲N。若N與該行的目的網絡地址匹配,則把數據報傳送給該行指明的下一跳路由器;否則,執行5;
  5. 若路由表中有一個默認路由,則把數據報傳給路由表中所指明的默認路由器;否則,執行6;
  6. 報告轉發分組出錯。

大家可以和上面IP層的轉發分組中的算法進行對比,查看其差異。

無分類編址CIDR(構成超網)

CIDR主要是用來解決B類地址即將被全部分配完畢和因特網主幹網上的路由表項目數急劇增加的問題;我們先來了解一下CIDR最主要的兩個特點:

  1. CIDR消除了傳統A類、B類和C類地址以及劃分子網的概念;把32位IP地址劃分爲兩部分,前面的部分是“網絡前綴”,用來指明網絡,後面的部分則用來指明主機,表示爲IP地址 ::== {<網絡前綴>,<主機號>}。CIDR還是用了“斜線記法”,或成爲CIDR記法,即在IP地址後面加上下顎線“/”,然後寫上網絡前綴所佔的位數(即地址掩碼中1的個數)。
  2. CIDR把網絡前綴相同的連續IP地址組成了一個“CIDR地址塊”,我們只要知道CIDR地址塊中的任何一個地址,就可以知道這個地址的起始地址、最大地址和地址塊中的地址數。例如,已知IP地址128.14.35.7/20(10000000 00001110 00100011 00000111)是某CIDR地址塊中的一個地址,則這個地址所在地址塊的最小地址爲128.14.32.0(10000000 00001110 00100000 00000000),最大地址爲128.14.47.255(10000000 00001110 00101111 11111111)。

在使用CIDR時,採用的是網絡前綴這種記法,IP地址是有網絡前綴和主機號組成,路由表中的項目也發生了改變,因此我們就一定會有新的方式去進行匹配。應該從匹配結果中選擇具有最長網絡前綴的路由,這叫做最長前綴匹配。這是因爲網絡前綴越長,其地址塊越小,因爲路由越具體。

網際控制報文協議ICMP

爲了更高效的轉發IP數據報和提高交付成功的機會,網際層使用了網際控制報文協議ICMP,ICMP允許主機或路由器報告差錯情況和提供有關異常情況的報告的。ICMP報文是作爲IP層數據報的數據,加上數據報的首部,組成IP數據報發送出去的。
在這裏插入圖片描述
ICMP的報文種類分爲兩種:ICMP差錯報告報文ICMP詢問報文
ICMP差錯報文共有五種:

  1. **終點不可達:**當路由器或主機不能交付數據報時就向源點發送終點不可達報文。無法交付
  2. **源點抑制:**當路由器或主機由於擁塞而丟棄數據報時,就向源點發送源點抑制報文,使源點知道應當把數據報的發送速率放慢。因爲擁塞而丟數據
  3. **時間超過:**當路由器收到生存時間TTL=0的數據報時,除丟棄該數據報外,還要向源點發送時間超過報文。當終點在預先規定的時間內不能收到一個數據報的全部數據報片時,就把已收到的數據報片都丟棄,並向源點發送時間超過報文。生存時間TTL=0
  4. **參數問題:**當路由器或目的主機收到的數據報的首部中有的字段的值不正確時,就丟棄該數據報,並向源點發送參數問題報文。首部字段有問題
  5. **改變路由(重定向) :**路由器把改變路由報文發送給主機,讓主機知道下次應將數據報發送給另外的路由器(可通過更好的路由)。有更好的路由

而ICMP詢問報文有兩種:

  1. **回答請求和回答報文:**主機或路由器向特定目的主機發出的詢問,收到此報文的主機必須給源主機或路由器發送ICMP回送回答報文。測試目的站是否可達以及瞭解其相關狀態
  2. **時間戳請求和回答報文:**請某個主機或路由器回答當前的日期和時間。用來進行時鐘同步和測量時間

路由選擇協議

路由選擇協議也是網絡層很重要的一部分,掌握幾種常見的路由選擇協議並瞭解他們的具體實現過程是很有必要的;首先我們先來對這些協議進行分類。

分層次的路由選擇協議

在學習路由選擇協議之前,我們要先明白什麼是自制系統;自治系統AS:在單一的技術管理下的一組路由器,而這些路由器使用一種AS內部的路由選擇協議和共同的度量以確定分組在該AS內的路由,同時還使用一種AS之間的路由協議以確定在AS之間的路由。一個AS內的所有網絡都屬於一個行政單位來管轄,一個自治系統的所有路由器在本自治系統內都必須連通。迴歸正題,因特網把路由選擇協議劃分爲兩大類:

  • 內部網關協議IGP: 即正在一個自治系統內部使用的路由選擇協議,這與互聯網中的其他自制系統使用什麼路由選擇協議無關。如RIP和OSPF協議
  • 外部網關協議EGP: 若源主機和目的主機處在不同的自治系統中,當數據從一個自制系統傳到另一個自治系統中;這樣的協議就是外部網關協議EGP。如BGP

接下來,我們就來分別介紹一下這三種協議。

內部網關協議RIP

RIP協議是一種分佈式的基於距離向量的路由選擇協議,最大的優點就是簡單。RIP協議要求網絡中每一個路由器都要維護從它到其他每一個路由器的距離記錄;距離的定義爲:從路由器到直接連接的網路的距離定義爲1,從一路由器到非直接相連的網絡的距離爲所經過的路由器數加1。此外,RIP協議的“距離”也被稱爲“跳數”。
接下來我們來說一下RIP協議的特點:

  1. 僅和相鄰路由器交換信息;
  2. 路由器交換的信息是當前本路由器知道的全部信息,即自己的路由表
  3. 按固定的時間間隔(例如每30秒)交換一次路由信息, 然後路由器根據新信息更新路由表。若超過180s沒收到鄰居路由器的通告,則判定鄰居沒了,並更新自己路由表;
  4. 經過若干次更新後,所有路由器最終都會知道到達本自治系統任何一個網絡的最短距離和下一跳路由器的地址,即“收斂”。

路由表中最主要的信息就是:到某個網絡的距離(即最短距離),以及應經過的下一跳地址。路由表更新的原則是找出到每個目的網絡的最短距離,這種算法被稱爲距離向量算法;那麼接下來就再介紹一下距離向量算法的具體步驟:

  1. 對地址爲X的相鄰路由器發來的RIP報文,修改此報文中的所有項目:把“下一跳"字段中的地址改爲X,並把所有的“距離”字段+1。每一個項目都有三個關鍵數據,即到目的網絡N,距離d,下一跳路由X;
  2. 對修改後的RIP報文中的每一個項目,進行以下步驟:
    i . 若原來的路由表中沒有目的網絡N, 則把該項目添加到路由表中;
    ii. 若原來的路由表中有目的網絡N,則查看下一跳路由器地址:
    • 若下一跳路由器地址是X,則把收到的項目替換源路由表中的項目;
    • 若下一跳路由器地址不是X,如果收到的項目中的距離d小於路由表中的距離則進行更新,否則不作處理。
  3. 若180s還沒收到相鄰路由器X的更新路由表,則把X記爲不可達的路由器,即把距離設置爲16。
  4. 返回

說了這麼多,也是時候說說RIP協議不好的地方了,它的缺點就是當網絡出現故障時,要經過比較長的時間才能將此信息傳達到所有的路由器;難道它只有這一個缺點?當然不是,其實還有很多比如它使用的最大距離爲15(16就表示不可達),使用範圍很小,所以在規模較小的網絡中,使用RIP協議的還是佔多數。
RIP協議有缺點?不怕,常見的內部網關協議不是還有OSPF的嘛,讓我們再來看看OSPF。

內部網關協議OSPF

OSPF的名字是開放最短路徑優先,它就是爲了克服RIP的缺點而開發出來的;最主要的特徵就是使用過分佈式的鏈路狀態協議。既然是爲了克服RIP協議的缺點而開發出來的,那麼肯定有與RIP協議不同的地方:

  1. 向本自制系統中所有路由器發送消息。這裏使用的方法是洪泛法,即路由器通過輸出端口向所有相鄰的路由器發送信息,而每一個相鄰路由器又再次將此信息發往其所有的相鄰路由器。最終整個區域內所有路由器都得到了這個信息的一個副本;
  2. 發送的信息就是與本路由器相鄰的所有路由器的鏈路狀態,這只是路由器知道的部分信息;
  3. 只有當鏈路狀態發生變化時,路由器才向所有路由器洪泛發送此信息;

最後,所有的路由器都能建立一個鏈路狀態數據庫,即全網的拓撲結構圖。與RIP正好相反,OSPF的更新過程收斂得快。OSPF和RIP還有一點不同的是RIP使用UDP進行傳送,OSPF則直接使用IP數據報傳送。OSPF的共有五種分組類型:

  1. 問候分組,用來發現和維護鄰站的可達性;
  2. 數據庫描述分組,向鄰站給出自己的鏈路狀態數據庫的詳細信息;
  3. 鏈路狀態請求分組,向對方請求發送某些鏈路狀態項目的詳細信息;
  4. 鏈路狀態更新分組,用洪泛法對全網更新鏈路狀態;
  5. 鏈路狀態確定分組,對鏈路更新分組的確定。

外部網關協議BGP

首先來看一下BGP的特點:

  • 與其他AS的鄰站BGP發言人交換信息;
  • 交換的網絡可達性的信息,即要到達某個網絡所要經過的一系列AS;
  • 發生變化時更新有變化的部分。

BGP的報文共有四類:

  1. OPEN (打開)報文:用來與相鄰的另一個BGP發言人建立關係,並認證發送方;
  2. UPDATE (更新)報文:通告新路徑或撤銷原路徑;
  3. KEEPALIVE (保活)報文:在無UPDATE時,週期性證實鄰站的連通性;也作爲OPEN的確認;
  4. NOTIFICATION (通知)報文:報告先前報文的差錯;也被用於關閉連接。

IP組播(多播)

在瞭解IP組播之前我們要先知道,IP數據報都有哪些傳輸方式:

  • 單播:是一種點對點傳輸方式
  • 廣播:廣播是指發送數據包到同一廣播域或子網內的所有設備的一種數據傳輸方式,是一種點對多點傳輸方式
  • 組播:當網絡中的某些用戶需要特定數據時,組播數據發送者僅發送一次數據,藉助組播路由協議爲組播數據包建立組播分發樹,被傳遞的數據到達距離用戶端儘可能近的節點後纔開始複製和分發,是一種點對多點傳輸方式

接着我們就要學習究竟要怎麼實現多播,多播的實現需要兩種協議:網際組播協議IGMP和組播路由協議

網際組播協議IGMP

IGMP協議讓路由器知道本局域網上是否有主機(的進程)加入或退出了某個組播組;使用IP數據報傳遞報文,IGMP的工作分爲兩個階段:

  • 某主機要加入組播組時,該主機向組播組的組播地址發送一個IGMP報文,聲明自己要稱爲該組的成員。本地組播路由器收到|GMP報文後,要利用組播路由選擇協議把這組成員關係發給因特網上的其他組播路由器;
  • 本地組播路由器週期性探詢本地局域網上的主機,以便知道這些主機是否還是組播組的成員。只要有一個主機對某個組響應,那麼組播路由器就認爲這個組是活躍的;如果經過幾次探詢後沒有一一個主機響應,組播路由器就認爲本網絡上的沒有此組播組的主機,因此就不再把這組的成員關係發給其他的組播路由器。

組播路由協議

組播路由協議的目的是找出以源主機爲根節點的組播轉發樹,特點是對不同的多播組對應不同的多播轉發樹,同一個多播組,對不同的源點也有不同的多播轉發樹;組播路由協議常用三種算法:

  • 基於鏈路狀態的路由選擇(OSPF)
  • 基於距離-向量的路由選擇(RIP)
  • 協議無關的組播(稀疏/密集)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章