首頁  >  文章  >  web前端  >  網路協定之路由協定的詳細介紹(範例講解)

網路協定之路由協定的詳細介紹(範例講解)

不言
不言轉載
2018-11-21 11:43:092774瀏覽

這篇文章帶給大家的內容是關於網路協議之路由協議的詳細介紹(範例講解),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

前面例子中,我們都是在一個區域網路內折騰。今天就讓我們擴大範圍,在多個區域網路甚至到廣闊的網路世界中遨遊,看看這中間會發生什麼。

這個過程中,跨網關存取是我們要了解的第一個內容。

跨網關存取

當我們要了解跨網關存取時,就牽扯到 MAC 位址和 IP 位址的變化,因此,我們先來看下 MAC 頭和 IP 頭的細節。

MAC 頭和IP 頭的細節

網路協定之路由協定的詳細介紹(範例講解)

#如圖,在MAC 頭裡,先是目標MAC 位址,然後是來源MAC 位址,最後是協定類型。

在 IP 頭裡,最重要的就是來源 IP 位址和目標 IP 位址。除此之外,還有版本號,也就是我們常說的IPv4 和IPv6、服務類型TOS(表示封包優先權)、TTL(封包生存週期)以及識別協定(TCP 和UDP)

當我們造訪部落格園區時,經過的第一個網關應該就是我們設定的預設閘道。當本機存取預設閘道時,還是走區域網路內部存取的步驟:

  1. 將來源位址和目標IP 位址放入IP 頭;

  2. 透過ARP 協定取得網關的MAC 位址;

  3. 將來源MAC 位址和網關的MAC 位址放入MAC 頭中,傳送給網關。

而我們的網關,一般就是指家裡的路由器,是一個三層轉送的設備。它會把 MAC 頭和 IP 頭都取下來,然後根據裡面的內容,看看接下來把封包轉送到哪裡。

很多情況下,人們把網關叫做路由器。其實不准備,用這個比喻應該更為恰當些:

路由器是一台設備,它有五個網口或網路卡,相當於有五隻手,分別連著五個區域網路。每隻手的 IP 位址都和區域網路的 IP 位址有著相同的網段,每隻手都是它握住的那個區域網路的網關。

任何一個想發送到其他區域網路的包,都會到達其中一隻手,被拿進來,拿下MAC 頭和IP 頭,然後根據自己的路由演算法,選擇另一隻手,加上IP 頭和MAC 頭,然後扔出去。

注意,在上面這個過程中,有出現路由演算法。接下來,我們就來認識它。

路由演算法

路由演算法,又稱選路演算法,是提高路由協定功能,盡量減少路由時所帶來的開銷的演算法。

路由演算法可以根據多個特性來區分,找到到達目的地的最佳路由。

路由演算法的區分點有很多,有

  • 靜態與動態

  • 單路徑與多路徑

  • 平坦與分層

  • 主機智慧與路由器智慧

  • 網域內與網域間

  • 連結狀態與距離向量

    這裡主要介紹靜態與動態##    這裡主要介紹

靜態與動態

#路由演算法。

靜態路由

    靜態路由演算法,實質上是由網關配置好的映射表。

    我們家裡的路由器,可能會有這樣的路由配置

訪問博客園,從2 號口出去,下一跳是IP2;

訪問百度,從3 號口出去,下一跳是IP3。

    類似上述這樣的規則就是靜態路由,依照一定的語法保存在路由器裡。

    每當要選擇從哪個口拋出去的時候,就一條一條的匹配規則,找到符合的規則,就按規則辦事,從指定口拋出去,找下一跳 IP。

過網關的「變」與「不變」

    之前我們了解到,MAC 位址是一個區域網路內才有效的位址。因此,MAC 位址只要過網關,就一定會改變。而 IP 位址在過網關後 ,就不一定會改變了。     經過網關 A 後,如果IP 位址沒有改變,那 A 就是轉送網關,否則,就是

NAT網關

轉送網關網路協定之路由協定的詳細介紹(範例講解)

    如上圖,伺服器A 要存取伺服器B,要經過流程:

#1)伺服器A 到網關A
  1. 檢查B 的網段,發現不在同一個網段,因此發給網關
  2. 由於網關的IP 位址是已經設定好了,因此發送ARP 取得網關的MAC 位址
  3. ###傳送包###

而最後傳送套件的內容主要有:

  • 來源MAC:伺服器A 的MAC

  • 模板MAC:192.168.1.1 網關的MAC

  • 源IP:192.168.1.101

  • 目標IP:192.168.4.101

    封包到達192.168.1.1 這個網口後,網口發現MAC 位址是它的,就將包包收進來,然後開始「思考」往哪裡轉送。

    這時候,路由器A 中設定了規則A1:

要存取192.168.4.0/24,就從192.168.56.1 這個網口出去,下一跳是192.168.56.2

2)網關A 到網關B

    於是,路由器A 匹配了A1,要從192.168.56.1 這個口發出去,發給192.168.56.2。於是,又開始了這個過程:

  1. 檢查B 的網段,發現在同一個網段, ARP 取得MAC 位址

  2. ##發送套件

封包的內容是:

  • #來源MAC:192.168.56.1 的MAC

  • #模板MAC:192.168.56.2 的MAC

  • 來源IP:192.168.1.101

  • 目標IP:192.168.4.101

  • #目標IP:192.168.4.101

#目標IP:192.168.4.101

#目標IP:192.168.4.101

##    封包到達192 .168.56.2 網口,網口發現MAC 位址是它的,就將封包收進來,然後去檢查路由規則。

    路由器B 設定以下規則B1:

想存取192.168.4.0/24,就從192.168.4.1

    而路由器B 發現,它的右網口就是目標位址網段的,因此就沒有下一跳了。
  • 3)網關 B 到 伺服器 B

  • 路由器 B 符合上 B1。從 192.168.4.1 出口,發給 192.168.4.101。封包內容:

  • 來源MAC:192.168.4.1 的MAC

  • 範本MAC:192.168.4.101 的MAC

來源IP:192.168.1.101

目標IP:192.168.4.101

#    伺服器B 收到封包,發現MAC 位址是它的,就把包包收進來。
    透過上面的過程可以看出,每到一個新的區域網, MAC 位址都是要變的,而 IP 位址則都不變。在 IP 頭裡面,不會儲存任何網關的 IP 位址。

    而我們說的下一跳,

就是某個 IP 要將這個 IP 位址轉換為 MAC 放入 MAC 頭網路協定之路由協定的詳細介紹(範例講解)NAT 網關

    NAT 網關,也就是 Network Address Translation。

    由於各個區域網路都有各自的網段,很容易出現 IP 衝突的情況。如上圖,美國伺服器A 的IP 位址和法國伺服器B 的IP 位址都是192.168.1.101/24,從IP 上看,好像是自己訪問自己,但實際上從美國的192.168.1.101 訪問法國的192.168.1.101 。

    如何解決這個問題呢?既然區域網路之間沒有商量好 IP 分配,各管各的,那到國際上,也就是中間的區域網路裡面,就需要使用另外的位址,就像出國後,我們要改用護照一樣。

    首先,目標伺服器B 在國際上要有一個國際的身份

,我們給它一個190.168.56.2.在網關B 上,我們記下來,國際身份192.168.56.2 對應國內身份192.168.1.101.凡是要訪問192.168.56.2 的,網關都要轉成192.168.1.101。
  1.     於是,來源伺服器 A 要存取目標伺服器 B,目標位址就變成國際 IP 位址 192.168.56.2。流程如下:

  2. 1)來源伺服器A 發封包到網關A
  3. 檢查伺服器B IP,不在同一網段

ARP 取得網關MAC 位址

  • 傳送包

  • 封包的內容是這樣的:

  • 來源MAC:伺服器A 的MAC

  • 目標MAC:192.168.1.1 這個網路埠的MAC

來源IP:192.168.1.101

目標IP:192.168.56.2

    路由器A 中192.168.1.1 這個網路埠收到封包後,檢查MAC 位址一致,將包收進來。

    在路由器 A 中設定了規則:
想存取 192.168.56.2/24,就從 192.168.56.1 網口發出去,發給 192.168.56.2,沒有下一跳。

        由於路由器的右網口(192.168.56.1) IP 位址和目標 IP 位址在同一網段,因此沒有下一跳。
  • 2)網關 A 到網關 B
  • 當網路套件傳送到中間的區域網路時,伺服器 A 也需要有個國際身分。因此,來源IP 位址192.168.1.101 要改成192.168.56.1,所以封包的內容是:

  • 來源MAC:192.168.56.1 的MAC

    ###來源MAC:192.168.56.1 的MAC######## ####目標MAC:192.168.56.2 的MAC############來源IP:192.168.56.1###
  • 目標 IP:192.168.56.2

    套件到達 192.168.56.2 這個網口後,發現 MAC 一致,就將包包收進來。

    而路由器 B 是 NAT 網關,它上面配置了,國際身分 192.168.56.2 對應國內的 192.168.1.101,於是目標位址改為 192.168.1.101。

    同樣的,路由器 B 中配置了規則:

想訪問 192.168.1.101,就從 192.168.1.1 網口出去,沒有下一跳。

    於是,封包就從 192.168.1.1 這個網口發給 192.168.1.101。

3)網關B 到伺服器B
封包從192.168.1.1 網口發出後,同樣經過這些步驟:

  1. #檢查伺服器B 的IP,在同一網段

  2. ARP 取得伺服器B 的MAC 位址

  3. 傳送包

##這時的封包就變成了:

  • 來源MAC:192.168.1.1 的MAC

  • 目標MAC:192.168 .1.101 的MAC

  • 來源IP:192.168.56.1

  • 目標IP:192.168.1.101

#    伺服器收到套件後,檢查MAC 位址一致,就將封包收進來。

    從伺服器B 接收的封包可以看出,來源IP 為伺服器A 的國際身份,因而發送回傳包的時候,也發給這個國際身份,由路由器A 做NAT,轉換為國內身份。

動態路由

動態路由演算法
距離向量路由演算法

#1)基本想法

基於Bellman-Ford 演算法。每個路由器都保存一個路由表,包含多行,每行對應網路中的一個路由器,每一行包含兩部分信息,一個是要到目標路由器,從哪條線出去,另一個是到目標路由器的距離

2)有問題

a.

好消息傳得區塊,壞消息傳的慢

新加入的路由器能夠很快的新路由器訊息廣播出去。但是如果一個路由器掛了,掛的訊息沒有廣播。每個經過這個宕機節點的路由器,無法得知該節點一宕機,而是試圖通過其他的路徑訪問,直到試過了所有的路徑,才發現這個路由器已經宕機了。

範例:

b.

每次傳送訊息,要傳送整個全域路由表

    上面的兩個問題,限制了

距離向量路由的網路規模,僅適用於小型網路(小於15 跳)。

連結狀態路由演算法

1)基本想法

#基於Dijkstra 演算法。當一個路由器加入網路是,首先是發現鄰居,給鄰居說 hello,鄰居都回覆。然後計算和鄰居的距離,發送一個 echo,要求馬上返回,除以 2 就是距離。接著將自己和鄰居之間的鏈路狀態包廣播出去,發送到整個網路的每個路由器。

    這種演算法中,每個路由器都能在自己本地建立一個完整的圖,然後針對這個圖使用 Dijkstra 演算法,找到兩點之間的最短路徑。

    不像距離向量路由協定那樣,更新時會傳送整個路由表。鏈路狀態路由協定只廣播更新的或改變的網路拓撲,這使得更新資訊更小,節省了寬頻和 CPU 使用率。而且一旦一個路由器掛了,它的鄰居就會廣播這個訊息,可以讓壞消息迅速收斂。

動態路由協定
基於連結狀態路由演算法的OSPF
#OSPF(Open Shortest Path First, 開放式最短路徑優先)協議,廣泛應用在資料中心的協議。由於主要用在資料中心內部,用於路由決策,因此稱為內部網關協定(Interior Gateway Protocol,簡稱IGP)

    內部網關協定的重點就是

#找到最短路徑。當存在多個最短路徑時,可以在這多個路徑中進行負載平衡,這常常被稱為等價路由

    等價路由不僅可以用來分攤流量,還可以提高容錯率,當一條路徑不通時,還可以經由另一條路到達目的地。

基於距離向量路由演算法的BGP
針對網路之間的路由協議,稱為外網路由協定(Border Gateway Protocol,簡稱BGP)

    每個資料中心都有自己的路由配置。例如,哪些外部 IP 可以讓內部知曉,哪些內部 IP 可以讓外部知曉,哪些可以通過,哪些不能通過。

    因此,在各個資料中心進行互動時,需要一種協議,透過這種協議,可以知道相鄰資料中心的路由配置,從而找到資料中心之間最好的路由。

    BGP 協定就是這樣的協定。它不著眼於發現和計算路由,而在於控制路由的傳播和選擇最好的路由。

總結

  • 封包要離開本區域網,就要經過網關,網關就是路由器的一個網口;

  • 路由器是一個三層設備,理由有如何尋找下一跳的規則;

  • 經過路由器之後的MAC 頭肯定會改變。如果IP 不變,就是轉送網關,否則就是NAT網關

  • #路由分靜態路由和動態路由,動態路由可以設定複雜的策略路由,控制轉送策略;

  • 動態路由主流演算法有兩種,距離向量演算法和連結狀態演算法。基於兩種演算法產生兩種協議,BGP 協定和 OSPF 協定。

#

以上是網路協定之路由協定的詳細介紹(範例講解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除