MAC地址與IP地址

在教計(jì)算機(jī)網(wǎng)絡(luò)課程中,經(jīng)常會(huì)碰到這樣的問題,為什么需要兩個(gè)地址:一個(gè)是MAC(物理地址),另一個(gè)是IP地址。各種解釋都有,基本上一個(gè)觀點(diǎn)就是一個(gè)是物理地址,一個(gè)是邏輯地址。然而,這樣的解釋太抽象,什么是物理,什么是邏輯。這些抽象的表述會(huì)讓人無法理解到其本質(zhì)。下面我就談?wù)勥@個(gè)問題。

要想說明這個(gè)問題,首先得說說計(jì)算機(jī)網(wǎng)絡(luò)的目標(biāo)是什么。計(jì)算機(jī)網(wǎng)絡(luò)的根本目標(biāo)就是將數(shù)據(jù)從一點(diǎn)傳送到另外一點(diǎn)。聽起來很簡(jiǎn)單,但是里面包含的意思很多。例如,兩個(gè)點(diǎn)之間是在同一個(gè)網(wǎng)絡(luò)還是跨網(wǎng)絡(luò)連接的,如何才能將數(shù)據(jù)正確的傳送到對(duì)方,如果出現(xiàn)錯(cuò)誤怎么辦等等。
為了說明問題的本質(zhì),我們首先將問題簡(jiǎn)化:假設(shè)兩點(diǎn)在一個(gè)網(wǎng)絡(luò)內(nèi)。在這種情況下,只需要MAC地址就可以了。例如通過交換機(jī)將多臺(tái)電腦組成一個(gè)網(wǎng)絡(luò),為了找到對(duì)方,必須通過一個(gè)地址來標(biāo)識(shí)。就像寄快遞一樣,如果沒有地址,快遞員是無法將快遞送到對(duì)方的所在地的。這就是我們所說的MAC地址。當(dāng)A點(diǎn)要將數(shù)據(jù)傳遞給B點(diǎn)時(shí),會(huì)在數(shù)據(jù)的首部添加B的MAC地址,即目標(biāo)地址。當(dāng)然在首部中也有源地址,即發(fā)送方的MAC地址,還有其它一些信息,例如用于校驗(yàn)的等等。組裝好的這個(gè)數(shù)據(jù)稱為幀。然后A點(diǎn)就將幀通過網(wǎng)卡發(fā)送出去。
此時(shí)交換機(jī)收到這個(gè)幀后,查找自己的轉(zhuǎn)發(fā)表。轉(zhuǎn)發(fā)表主要有兩列,一列是MAC地址,另外一列是該MAC地址對(duì)應(yīng)的端口。查找的結(jié)果只有兩種情況:找到或沒找到。如果找到就將數(shù)據(jù)從該MAC對(duì)應(yīng)的端口轉(zhuǎn)發(fā)出去。如果沒找到,很簡(jiǎn)單,交換機(jī)會(huì)把幀向所有端口廣播(除了該幀進(jìn)入的端口),因此肯定會(huì)有一個(gè)合適的端口收到的。這個(gè)廣播的方法很粗暴,也很奏效。
這就是MAC地址的作用。MAC地址是刻錄在網(wǎng)卡這個(gè)物理設(shè)備上的,一般是無法改變的。
IP66在線查IP地址定位:https://www.ip66.net/?utm-source=LJ&utm-keyword=?1146

然而,如果兩點(diǎn)不在一個(gè)網(wǎng)絡(luò)內(nèi)。這時(shí)就需要IP地址了。因?yàn)镮P地址含有兩個(gè)部分,一個(gè)是網(wǎng)絡(luò)地址,一個(gè)是主機(jī)地址。因此,通過對(duì)方的IP地址,是可以判斷出對(duì)方是否和本機(jī)在一個(gè)網(wǎng)絡(luò)內(nèi)。如果在一個(gè)網(wǎng)絡(luò)內(nèi),如上所述,只需要知道對(duì)方的MAC地址即可通信。
如果不在一個(gè)網(wǎng)絡(luò)內(nèi),本機(jī)的網(wǎng)絡(luò)層就認(rèn)為數(shù)據(jù)應(yīng)該發(fā)送給網(wǎng)關(guān)。道理是顯然的,如果不在一個(gè)網(wǎng)絡(luò)內(nèi),首先得把數(shù)據(jù)發(fā)送出網(wǎng)絡(luò)才可以。如何發(fā)出網(wǎng)絡(luò),當(dāng)然是發(fā)給網(wǎng)關(guān),因?yàn)榫W(wǎng)關(guān)就相當(dāng)于網(wǎng)絡(luò)的門衛(wèi)。要想把數(shù)據(jù)發(fā)給網(wǎng)關(guān),同樣需要知道網(wǎng)關(guān)的MAC地址,如何知道網(wǎng)關(guān)的MAC地址呢?這就涉及到ARP協(xié)議。
電腦緩存里有一張ARP表,該表主要有兩列:一列是IP地址,另外一列是MAC地址。這張表不是天生就有的,是隨著網(wǎng)卡收到網(wǎng)絡(luò)中的各種通信數(shù)據(jù),不斷學(xué)習(xí)增加的。