在學演算法之餘,也在學習計算機網路方面的東西,就是極客時間上劉超老師的《趣談網路協議》那門課程,其中有一篇講得非常有意思,也有些難以理解,我以我的角度來談談.
想要跨網段訪問的話,有一關是必須要過的:閘道器( gateway )
配置好 ip 位址和閘道器之後,就能夠自由訪問上網了,想訪問哪兒**就訪問哪兒個**,各種浪.但是在進行跨網訪問的時候,會牽扯到 mac 位址和 ip 位址的變化,所以咱們先來知道一下 mac 頭和 ip 頭的細節.
在任何一台機器上,如果想要訪問另乙個 ip 位址時,都會先判斷,要訪問的目標 ip 位址,與當前機器 ip 位址是否在同乙個網段內.
如果是同乙個網段,這就好說了,直接將源位址和目標位址放入到 ip 頭中,然後通過 arp 得到 mac 位址,將源 mac 和目標 mac 放入 mac 頭中,發出去就 ok 了.
但是如果不是同乙個網段呢,這就需要發往預設閘道器 gateway 了.gateway 的位址一定是和源 ip 位址是同乙個網段的,如果不是第乙個,就是第二個.比如, 192.168.1.0/24 這個網段,gateway 一般就是 192.168.1.1/24 或者 192.168.1.2/24.因為閘道器和源 ip 位址在同乙個網段內,所以發給 gateway 的過程和上面同乙個網段的過程是一樣的.閘道器接收到之後,接下來怎麼處理就是它自己的事情了.
做了上面那麼多的鋪墊,終於來到了今天想要說的主要內容:閘道器是怎麼將資料跨網段傳送出去的.因為在這裡面涉及到了 ip 位址和 mac 位址的變化.
mac 位址是在乙個區域網內才有效的位址,所以 mac 位址只要經過閘道器,就一定會改變,因為經過閘道器就意味著換了區域網.主要在於 ip 位址是否改變.如果 ip 位址不改變,那我們就將閘道器稱為**閘道器;如果 ip 位址改變,則將閘道器稱為 nat 閘道器.
先來說一下**閘道器:
如圖,我們能夠看到,伺服器 a 的 ip 位址為 192.168.1.101/24 ,伺服器 b 的 ip 位址為 192.168.4.101/24 ,現在伺服器 a 想要訪問伺服器 b,不在同乙個網段內,怎麼辦呢?肯定要經過閘道器的,對吧(因為 ip 頭和 mac 頭裡面的內容太多了,在這裡主要寫出 mac 和 ip 內容)
此時,伺服器 a 會給路由器 a 傳送這樣的內容:
源 mac :伺服器 a 的 mac
目標 mac : 路由器 a 的 mac
源 ip :
192.168
.1.101
(即伺服器 a 的 ip )
目標 ip :
192.168
.4.101
(即伺服器 b 的 ip )
路由器 a 接收到內容之後,發現是想訪問 192.168.4.0/24 的,根據配置的路由規則,將要傳送的內容通過 192.168.2.1 這個口傳送出去,傳送給路由器 b 的內容是這樣的:
源 mac :路由器 a 的 mac
目標 mac : 路由器 b 的 mac
源 ip :
192.168
.1.101
(即伺服器 a 的 ip )
目標 ip :
192.168
.4.101
(即伺服器 b 的 ip )
路由器 b 接收到了來自路由器 a 的內容,它發現是想訪問 192.168.4.0 這個位址,根據配置的路由規則,需要從 192.168.4.1 這個口出去,這樣就能發給伺服器 b,此時路由器 b 傳送的包是這樣的:
源 mac :路由器 b 的 mac
目標 mac : 伺服器 b 的 mac
源 ip :
192.168
.1.101
(即伺服器 a 的 ip )
目標 ip :
192.168
.4.101
(即伺服器 b 的 ip )
至此,伺服器 a 傳送的內容就到達了伺服器 b .
咱們來總結一下以上內容:在**閘道器下,我不 care 其他的,我只知道我要發給哪兒個 ip ,所以在整個過程中,源 ip 和目標 ip 都沒有發生改變.
接下來咱們來說說 nat 閘道器.照例,上個圖:
有沒有發現乙個問題,伺服器 a 的 ip 位址是 192.168.1.101 ,要訪問的伺服器 b 的位址也是 192.168.1.101 ,如果只是看 ip 位址的話,是不是饒了一圈發現,這不就是自己訪問自己嘛?驚不驚喜.
但是實際上伺服器 a 在北京,伺服器 b 在上海,兩個地方有乙個相同的 ip 位址罷了.問題就來了,伺服器 a 怎麼就可以訪問到伺服器 b 了呢?
就像上海人說上海話,北京人說北京話,乙個區域內大家都聽得懂,但是如果北京人跑到上海去,想要交流怎麼辦呢?說普通話唄,對不對.在網路中也可以這樣做.既然這兩個區域網之間沒有商量過,各自使用各自的,內部使用的話這都沒事兒,但是如果想要在外面也走的開,就需要制定規則.也就是說,路由器 a 和 b 在外網上需要有乙個大家都公認的身份.
在圖中我們能夠看到路由器 a 在公網上的身份是 192.168.2.1/24 ,路由器 b 在公網上的身份是 192.168.2.2/24 .有了公認的身份之後,來看看接下來傳送的內容:
伺服器 a 傳送給路由器 a 的內容:
源 mac :伺服器 a 的 mac
目標 mac : 路由器 a 的 mac
源 ip :
192.168
.1.101
(即伺服器 a 的 ip )
目標 ip :
192.168
.2.2
(即路由器 b 的公網 ip )
路由器 a 接收到內容之後,根據配置的路由規則,通過 192.168.2.1/24 傳送給路由器 b ,此時傳送的內容為:
源 mac :路由器 a 的 mac
目標 mac : 路由器 b 的 mac
源 ip :
192.168
.2.1
(即路由器 a 的公網 ip )
目標 ip :
192.168
.2.2
(即路由器 b 的公網 ip )
內容到達路由器 b 之後,根據它的配置規則,發現是想要傳送給伺服器 b 的,此時:
源 mac :路由器 b 的 mac
目標 mac : 伺服器 b 的 mac
源 ip :
192.168
.2.1
(即路由器 a 的公網 ip )
目標 ip :
192.168
.1.101
(即伺服器 b 的公網 ip )
至此,伺服器 a 傳送的內容就到達了伺服器 b .
咱們來總結一下以上內容:在 nat 閘道器下, mac 位址和 ip 位址都是會改變的. mac 位址還好理解一些,要傳送給誰,那麼目標 mac 位址就是要傳送的機器 mac 位址即可.但是 ip 位址如果是跨網段訪問,則都需要通過公網 ip 來進行才可以.
計算機網路 閘道器
大家都知道,從乙個房間走到另乙個房間,必然要經過一扇門。同樣,從乙個網路向另乙個網路傳送資訊,也必須經過一道 關口 這道關口就是閘道器。顧名思義,閘道器 gateway 就是乙個網路連線到另乙個網路的 關口 按照不同的分類標準,閘道器也有很多種。tcp ip協議裡的閘道器是最常用的,在這裡我們所講的...
計算機網路9 計算機網路效能
1.網路效能的衡量指標 2.速率 3.頻寬 4.延遲 5.丟包率 6.時延頻寬積 7.吞吐率 網路效能的好壞可以由網路的速率 頻寬 延遲 丟包率 網路頻寬積 吞吐率等方面來判斷,下面讓我們一一詳細介紹。速率 資料率 data rate 也稱 資料傳輸速率或位元率 bit rate 指的是 單位時間 ...
計算機網路 計算機網路的效能
目錄 1.網路效能的衡量指標 2.速率 3.頻寬 4.延遲 5.丟包率 6.時延頻寬積 7.吞吐率 網路效能的好壞可以由網路的速率 頻寬 延遲 丟包率 網路頻寬積 吞吐率等方面來判斷,下面讓我們一一詳細介紹。速率 資料率 data rate 也稱 資料傳輸速率或位元率 bit rate 指的是 單位...