MAC 地址與IP地址
轉自:
在教計算機網路課程中,經常會碰到這樣的問題,為什麼需要兩個地址:一個是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還需要網址呢?這超過了我們的題目範圍,下次再說。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18903360/viewspace-2153832/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 計算機網路之二:IP地址與MAC地址計算機網路Mac
- IP地址和MAC地址的關係Mac
- ASPNET獲取IP地址 MAC地址Mac
- java獲取ip地址和mac地址JavaMac
- Java 中獲取MAC地址 和IP地址JavaMac
- mac地址和ip地址有什麼區別Mac
- ARP協議 地址解析協議:IP地址轉換為MAC地址協議Mac
- mac 配置IP地址,提示“無效的伺服器地址”Mac伺服器
- 最簡單的C# 獲取 MAC 地址 IP 地址C#Mac
- 【TCP/IP】IP地址分類和特殊IP地址TCP
- IP地址
- Java獲取本機名稱、本機MAC地址、IP地址JavaMac
- 特殊IP地址
- 《網路IP地址管理》IP地址重要性薦
- ubuntu修改mac地址及配置靜態ipUbuntuMac
- 電腦ip地址在哪 電腦ip地址查詢方法
- IP地址詳解
- yandexbot ip 地址段
- RAC修改IP地址
- IP地址結構
- 切換IP地址
- Mac電腦更新IP地址的解決方法!Mac
- android 獲取裝置IP和Mac地址AndroidMac
- docker 指定IP地址、與主機同網段IPDocker
- 檢視ip地址的cmd命令 cmd查詢ip地址命令
- 為什麼IP地址可以查詢物理所在地,而不是mac地址?Mac
- 01、MAC地址Mac
- Linux IP地址修改與配置問題Linux
- IP地址分類與子網劃分
- 電腦ip地址在哪看 電腦本地ip地址和網際網路ip地址有什麼區別
- Python 基礎練習 —— 獲取本機 Mac 地址、ip 地址和主機名PythonMac
- 什麼是IP地址
- 什麼是IP地址?
- saltstack獲取IP地址
- 更改IP地址難嗎?
- Oracle RAC 修改 IP 地址Oracle
- IP地址 、域名、 URL、 埠
- 獲取IP地址方法