這篇文章帶給大家的內容是關於網路協議之路由協議的詳細介紹(範例講解),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
前面例子中,我們都是在一個區域網路內折騰。今天就讓我們擴大範圍,在多個區域網路甚至到廣闊的網路世界中遨遊,看看這中間會發生什麼。
這個過程中,跨網關存取是我們要了解的第一個內容。
當我們要了解跨網關存取時,就牽扯到 MAC 位址和 IP 位址的變化,因此,我們先來看下 MAC 頭和 IP 頭的細節。
#如圖,在MAC 頭裡,先是目標MAC 位址,然後是來源MAC 位址,最後是協定類型。
在 IP 頭裡,最重要的就是來源 IP 位址和目標 IP 位址。除此之外,還有版本號,也就是我們常說的IPv4 和IPv6、服務類型TOS(表示封包優先權)、TTL(封包生存週期)以及識別協定(TCP 和UDP)
當我們造訪部落格園區時,經過的第一個網關應該就是我們設定的預設閘道。當本機存取預設閘道時,還是走區域網路內部存取的步驟:
將來源位址和目標IP 位址放入IP 頭;
透過ARP 協定取得網關的MAC 位址;
將來源MAC 位址和網關的MAC 位址放入MAC 頭中,傳送給網關。
而我們的網關,一般就是指家裡的路由器,是一個三層轉送的設備。它會把 MAC 頭和 IP 頭都取下來,然後根據裡面的內容,看看接下來把封包轉送到哪裡。
很多情況下,人們把網關叫做路由器。其實不准備,用這個比喻應該更為恰當些:
路由器是一台設備,它有五個網口或網路卡,相當於有五隻手,分別連著五個區域網路。每隻手的 IP 位址都和區域網路的 IP 位址有著相同的網段,每隻手都是它握住的那個區域網路的網關。
任何一個想發送到其他區域網路的包,都會到達其中一隻手,被拿進來,拿下MAC 頭和IP 頭,然後根據自己的路由演算法,選擇另一隻手,加上IP 頭和MAC 頭,然後扔出去。
注意,在上面這個過程中,有出現路由演算法。接下來,我們就來認識它。
路由演算法,又稱選路演算法,是提高路由協定功能,盡量減少路由時所帶來的開銷的演算法。
路由演算法可以根據多個特性來區分,找到到達目的地的最佳路由。
路由演算法的區分點有很多,有
靜態與動態
單路徑與多路徑
平坦與分層
主機智慧與路由器智慧
網域內與網域間
連結狀態與距離向量
這裡主要介紹靜態與動態## 這裡主要介紹
靜態與動態靜態路由
靜態路由演算法,實質上是由網關配置好的映射表。
我們家裡的路由器,可能會有這樣的路由配置
訪問百度,從3 號口出去,下一跳是IP3。
類似上述這樣的規則就是靜態路由,依照一定的語法保存在路由器裡。
過網關的「變」與「不變」
之前我們了解到,MAC 位址是一個區域網路內才有效的位址。因此,MAC 位址只要過網關,就一定會改變。而 IP 位址在過網關後 ,就不一定會改變了。 經過網關 A 後,如果IP 位址沒有改變,那 A 就是轉送網關,否則,就是
NAT網關轉送網關
如上圖,伺服器A 要存取伺服器B,要經過流程:
#1)伺服器A 到網關A而最後傳送套件的內容主要有:
來源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。於是,又開始了這個過程:
檢查B 的網段,發現在同一個網段, ARP 取得MAC 位址
#目標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 收到封包,發現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。
在路由器 A 中設定了規則:
想存取 192.168.56.2/24,就從 192.168.56.1 網口發出去,發給 192.168.56.2,沒有下一跳。
目標 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 網口發出後,同樣經過這些步驟:
#檢查伺服器B 的IP,在同一網段
ARP 取得伺服器B 的MAC 位址
傳送包
#1)基本想法
基於Bellman-Ford 演算法。每個路由器都保存一個路由表,包含多行,每行對應網路中的一個路由器,每一行包含兩部分信息,一個是要到目標路由器,從哪條線出去,另一個是到目標路由器的距離2)有問題
a.好消息傳得區塊,壞消息傳的慢。
新加入的路由器能夠很快的新路由器訊息廣播出去。但是如果一個路由器掛了,掛的訊息沒有廣播。每個經過這個宕機節點的路由器,無法得知該節點一宕機,而是試圖通過其他的路徑訪問,直到試過了所有的路徑,才發現這個路由器已經宕機了。 範例:b.每次傳送訊息,要傳送整個全域路由表
上面的兩個問題,限制了距離向量路由的網路規模,僅適用於小型網路(小於15 跳)。
連結狀態路由演算法1)基本想法
#基於Dijkstra 演算法。當一個路由器加入網路是,首先是發現鄰居,給鄰居說 hello,鄰居都回覆。然後計算和鄰居的距離,發送一個 echo,要求馬上返回,除以 2 就是距離。接著將自己和鄰居之間的鏈路狀態包廣播出去,發送到整個網路的每個路由器。 這種演算法中,每個路由器都能在自己本地建立一個完整的圖,然後針對這個圖使用 Dijkstra 演算法,找到兩點之間的最短路徑。 不像距離向量路由協定那樣,更新時會傳送整個路由表。鏈路狀態路由協定只廣播更新的或改變的網路拓撲,這使得更新資訊更小,節省了寬頻和 CPU 使用率。而且一旦一個路由器掛了,它的鄰居就會廣播這個訊息,可以讓壞消息迅速收斂。 動態路由協定#找到最短路徑。當存在多個最短路徑時,可以在這多個路徑中進行負載平衡,這常常被稱為等價路由。
等價路由不僅可以用來分攤流量,還可以提高容錯率,當一條路徑不通時,還可以經由另一條路到達目的地。每個資料中心都有自己的路由配置。例如,哪些外部 IP 可以讓內部知曉,哪些內部 IP 可以讓外部知曉,哪些可以通過,哪些不能通過。
因此,在各個資料中心進行互動時,需要一種協議,透過這種協議,可以知道相鄰資料中心的路由配置,從而找到資料中心之間最好的路由。
BGP 協定就是這樣的協定。它不著眼於發現和計算路由,而在於控制路由的傳播和選擇最好的路由。
封包要離開本區域網,就要經過網關,網關就是路由器的一個網口;
路由器是一個三層設備,理由有如何尋找下一跳的規則;
經過路由器之後的MAC 頭肯定會改變。如果IP 不變,就是轉送網關,否則就是NAT網關;
#路由分靜態路由和動態路由,動態路由可以設定複雜的策略路由,控制轉送策略;
動態路由主流演算法有兩種,距離向量演算法和連結狀態演算法。基於兩種演算法產生兩種協議,BGP 協定和 OSPF 協定。
以上是網路協定之路由協定的詳細介紹(範例講解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!