在教計算機網絡課程中,經常會碰到這樣的問題,為什麼需要兩個地址:一個是MAC(物理地址),另一個是IP地址。各種解釋都有,基本上一個觀點就是一個是物理地址,一個是邏輯地址。然而,這樣的解釋太抽象,什麼是物理,什麼是邏輯。這些抽象的表述會讓人無法理解到其本質。下面我就談談這個問題。
要想說明這個問題,首先得說說計算機網絡的目标是什麼。計算機網絡的根本目标就是将數據從一點傳送到另外一點。聽起來很簡單,但是裡面包含的意思很多。例如,兩個點之間是在同一個網絡還是跨網絡連接的,如何才能将數據正确的傳送到對方,如果出現錯誤怎麼辦等等。
為了說明問題的本質,我們首先将問題簡化:假設兩點在一個網絡内。在這種情況下,隻需要MAC地址就可以了。例如通過交換機将多台電腦組成一個網絡,為了找到對方,必須通過一個地址來标識。就像寄快遞一樣,如果沒有地址,快遞員是無法将快遞送到對方的所在地的。這就是我們所說的MAC地址。當A點要将數據傳遞給B點時,會在數據的首部添加B的MAC地址,即目标地址。當然在首部中也有源地址,即發送方的MAC地址,還有其它一些信息,例如用于校驗的等等。組裝好的這個數據稱為幀。然後A點就将幀通過網卡發送出去。
此時交換機收到這個幀後,查找自己的轉發表。轉發表主要有兩列,一列是MAC地址,另外一列是該MAC地址對應的端口。查找的結果隻有兩種情況:找到或沒找到。如果找到就将數據從該MAC對應的端口轉發出去。如果沒找到,很簡單,交換機會把幀向所有端口廣播(除了該幀進入的端口),因此肯定會有一個合适的端口收到的。這個廣播的方法很粗暴,也很奏效。
這就是MAC地址的作用。MAC地址是刻錄在網卡這個物理設備上的,一般是無法改變的。
然而,如果兩點不在一個網絡内。這時就需要IP地址了。因為IP地址含有兩個部分,一個是網絡地址,一個是主機地址。因此,通過對方的IP地址,是可以判斷出對方是否和本機在一個網絡内。如果在一個網絡内,如上所述,隻需要知道對方的MAC地址即可通信。
如果不在一個網絡内,本機的網絡層就認為數據應該發送給網關。道理是顯然的,如果不在一個網絡内,首先得把數據發送出網絡才可以。如何發出網絡,當然是發給網關,因為網關就相當于網絡的門衛。要想把數據發給網關,同樣需要知道網關的MAC地址,如何知道網關的MAC地址呢?這就涉及到ARP協議。
電腦緩存裡有一張ARP表,該表主要有兩列:一列是IP地址,另外一列是MAC地址。這張表不是天生就有的,是随着網卡收到網絡中的各種通信數據,不斷學習增加的。
話說回來,如果ARP表中有網關IP地址對應的MAC地址,則問題就轉化為網内數據發送,上面已經講的很清楚了。如果ARP表中沒有網關IP地址對應的MAC地址,則啟動ARP協議,即向網内廣播,詢問該IP地址的MAC地址。廣播詢問的結果是網關收到廣播後,發現是問自己的MAC地址,所以就回複詢問方自己的MAC地址。然後數據發給網關的問題,也轉化為網内數據發送,上面已經講的很清楚了。
大家發現沒有,在跨網通信時是需要IP地址的。因為需要通過IP地址來判斷是網内通信還是網外通信。有人可能會說,讓MAC地址也具有能夠區分網絡的特征不就可以不需要IP了麼。事實上這樣做是不實際的。每個網卡出廠時就有一個獨一無二的MAC地址,出場時是不可能知道你用它時是在哪一個網絡裡,也就是天生它就不具有能夠區分網絡的特性。而且也不需要它具有這種特性。因為MAC隻負責設備到設備的通信就夠了。這層通信是真正的通信,所以稱為物理通信。
而跨網絡傳輸數據時,需要考慮傳輸的路徑,即為了到達目的地,下一跳應該去哪兒,從而一跳一跳的傳輸到目的地。而網内傳輸,不需要考慮傳輸路徑,隻要發出去一定可以到達。最壞情況下就是通過廣播傳輸也能到達。而跨網絡傳輸時,這一招不靈了。因此,跨網傳輸時需要考慮網絡之間的傳輸,需要使用能夠表示網絡特征的地址,即IP地址。所以IP地址是負責網絡到網絡傳輸的。
至于發給網關後,下一步發給誰,本機就管不着了。本機隻能保證在網絡内傳輸,即下一跳的概念。下下一跳,隻能由網關來負責了。其實網關就是路由器的一個接口。網關通過IP地址來确定路由,通過find路由表來 确定下一跳應該去往哪個網絡,然後就将數據從連接那個網絡的路由器的接口發送出去。發送出去同樣要判斷目标IP是和當前路由接口的網絡是否同一網絡。問題又回到上面講的過程了。所以周而複始。
可見IP地址和MAC地址的概念并不矛盾。他們之間是不同層次的,就像有了領導還必須有群衆才可以,誰也離不開誰。數據從一點傳到另外一點,要經過幾個網絡,網絡路線是怎樣的,需要使用IP地址來解決。而網内傳輸需要使用MAC地址來傳輸。可見沒有網内真正的通信傳輸,何以實現網絡之間的通信。而如果沒有網絡路由的路徑的話,數據是不可能到達目的地的,因為方向都沒有。
如果再往深裡挖掘,地址的概念還可以包括網址。就像百度的網址,我們為什麼有了IP還需要網址呢?這超過了我們的題目範圍,下次再說。
你可以試試IP數據雲,可以精準查詢IP歸屬地(最高到街道)、IP應用場景;而且,還能查出哪些是代理IP。
想要查詢IP歸屬地,精确到街道級别的,可以輸入網址免費查IP地址→免費IP地址查詢 - 全球IP地址定位 - IP數據雲,免費測試!
精準識别IP是不是代理IP,是不是真人IP~~
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!