淺談網路-閘道器與路由

weixin_34320159發表於2018-09-02

現在網路中充斥這各式各樣的資訊,那麼我們們的計算機是如何上網的呢?不知道你是否考慮過這個問題?今天就討論下,我們是如何在外網上網的。

現在我們家庭中一般上網的模式就是,買一個路由器,然後登陸路由器以後,配置好上網資訊,去連線路由,如果沒有開啟DHCP的話,會讓配置IP等資訊等,其中有一點需要注意的就是,需要配置一個名為“閘道器(Gateway)”的東西,配置過後往往就可以訪問目標機器了,訪問外網就需要跨過閘道器。

  • 1.跨閘道器訪問外網涉及到哪些相比於區域網的改變?

要說改變的話,可能首當其衝的就該說IP和MAC的改變吧,需注意的是,當前本級的IP地址是當前區域網內的IP,也就是說,並不能在外網中當作識別的“門牌”,那麼它是怎樣變化的呢?請看下我剛從google上找到的一個相關報頭的示意圖我覺得很不錯就直接引用了。

2318436-23ee97836ee0489e.png
圖一.IP與MAC頭示意

1.這裡來講解下這張圖,在 MAC 頭裡面,先是目標 MAC 地址,然後是源 MAC 地址。
2.協議型別是當前協議的型別,我們們一般訪問網頁啥的會說明我們們用的是IP協議。
3.IP頭中所說的版本號,在我們們當下主流使用的是IPv4。
4.首部長度指明IPv4協議包頭長度的位元組數包含多少個32位。
5.TOS 定義IP封包在傳送過程中要求的服務型別。
6.總長度指的是IP協議頭格式中指定IP包的總長,通常以byte做單位來表示該封包的總長度,需要注意的是此數值包括標頭和資料的總和,佔16位說明其最長為65535位元組,但不是說一個IP資料包就會那麼長,實際上它會被鏈路層進行進一步的拆分傳送。
7.標識是每一個IP封包都有的一個16位的唯一識別碼。
8.標誌,這是當封包在傳輸過程中進行最佳組合時使用的3個bit的識別記號。
9.片位移是指網路包被拆分的順序,由於拆分後,接受的順序不一定是被拆分的順序,所以需要這個。
10.TTL是指生存時間,這個欄位設定了資料包可以經過的最多路由器數,表示資料包在網路上生存多久。
11.這裡的協議就是下一層的協議,也就是,是 TCP 還是 UDP。
12.最重要的就是這個源IP地址和目標IP地址,要通過這個來判斷這個是否要經過閘道器出去到外網。判斷依據就是是否在同一個網段,利用CIDR和子網掩碼可得。

資料發往閘道器的步驟與內網裝置互動相同,先在報文中加入源IP地址和目標IP地址,利用ARP找到閘道器的MAC地址,加入報文,進行傳送。

而閘道器往往是一個路由器,是一個三層轉發的裝置,拿下MAC頭和IP頭,檢視報文要被轉發到哪裡,並進行處理。我曾經看到過對於路由器的一個很好的比喻分享給大家:“路由器是一臺裝置,它有五個網口或者網路卡,相當於有五隻手,分別連著五個區域網。每隻手的 IP 地址都和區域網的 IP 地址相同的網段,每隻手都是它握住的那個區域網的閘道器。 ”,也就是說任何一個想發往其他區域網的包,都會到達其中一隻手,被拿進來,拿下 MAC 頭和 IP 頭,看看,根據自己的路由演算法,選擇另一隻手,加上 IP 頭和 MAC 頭,然後扔出去。

那麼問題來了,發往其他地方的包,該選擇哪個手扔出去呢?並且其中哪些內容要變呢?實際上可以分為兩類,靜態路由和動態路由兩種處理方式

靜態路由:其實就是寫死了很多的規則,想去這個網段的從這個口出,想去另一個網段的,就從另一個口出。
動態路由:通過一定的演算法,生成動態路由表,隨著網路狀態的改變而改變。

前面鋪墊了那麼多基礎知識,那麼到底IP和MAC中哪些變哪些不變呢?(以下按照靜態路由的方式說明,因為簡單)

首先說下MAC地址,由於MAC地址是一個區域網內才有效的地址,所以出閘道器的話肯定會變。IP地址的話一般我們需要按照情況分為兩類討論,兩者主要的區別在於 IP 地址是否改變,不改變該IP地址的,被稱作轉發閘道器,改變IP地址的被成為NAT閘道器

(安利個畫圖軟體,ProcessOn,還挺好用的,手動滑稽)
1.轉發閘道器


2318436-aaedbb3b0b3b3930.png
裝置A訪問裝置B

上圖發生的一個變數改變,「靜態路由表,對應網段網口已經配置好,會按配置表跳」:
(1)源MAC:裝置A的MAC;目標MAC:路由A的MAC;源IP:192.168.2.112;目標IP:192.168.4.112
(2)源MAC:路由A的MAC;目標MAC:路由B的MAC;源IP:192.168.2.112;目標IP:192.168.4.112
(3)源MAC:路由B的MAC;目標MAC:裝置B的MAC;源IP:192.168.2.112;目標IP:192.168.4.112

從上面可以知道,源IP和目標IP是不變的,MAC是要變的,報文中不儲存閘道器資訊,也就是說所謂的下一跳是,某個 IP 要將這個 IP 地址轉換為 MAC 放入 MAC 頭中。「需要注意的是,這裡更類似我們所說的拓撲網路,IP地址在三個區域網可見,並且相互不會衝突」

2.NAT閘道器
這裡跟上種形式最大的區別就是,彼此網路中IP可能會產生衝突。就例如北京有個“蓮花街23號”,石家莊也有個“蓮花街23號”。那麼這時候,我們們就需要讓他有一個“國際身份”,凡事要去北京的就先到北京,凡事要到石家莊的就先到石家莊,再去各地的“蓮花街”。如下圖,兩個都是192.168.2.1


2318436-274b111c92a703b5.png
裝置A訪問裝置B

上圖發生的一個變數改變
(1)源MAC:裝置A的MAC;目標MAC:路由A的MAC;源IP:192.168.2.112;目標IP:192.168.3.2
(2)源MAC:路由A的MAC;目標MAC:路由B的MAC;源IP:192.168.3.1;目標IP:192.168.3.2
(3)源MAC:路由B的MAC;目標MAC:裝置B的MAC;源IP:192.168.3.1;目標IP:192.168.2.112

從裝置 B 接收的包可以看出,源 IP 為裝置 A 的國際身份,因而回包的時候也應該是A的國際身份,由路由 A 做 NAT,轉換為國內身份。我們們家中所使用的路由器多采用該種模式。

總結一下:
1.如果區域網需要訪問外網的話,就需要過閘道器,過閘道器的判斷標準就是訪問的地址是否在統一網段內,根據CIDR和子網掩碼算下。
2.路由器是一個三層裝置,裡面有如何尋找下一跳的規則,分為靜態路由和動態路由
3.閘道器有兩種,轉發閘道器和NAT閘道器。轉發閘道器MAC地址不變,改變IP;NAT的是關鍵是一個“國際身份”
4.MAC頭和IP頭的那些概念

相關文章