問題可以簡化為區域網內可通過mac區分主機為什麼還要使用ip地址和掩碼?

答:

因為網路協議的分層設計決定了ip層調用mac層(術語叫網路層調用數據鏈路層)。事實上區域網內不配置ip也是可以通訊的,你電腦的網卡的部分功能就是通過mac找mac,只不過這部分功能封裝在網卡驅動裏,並不直接對程序員提供可以調用的介面,所以你纔不能用。而通過mac找mac的功能只有ip層才能用。當然代碼都是人寫的,只有你做網卡和路由器相關的設備時,才會接觸到ip層和mac層的代碼。


mac地址就像你的名字,沒法用來「定址」,ip地址就像郵政編碼,和「位置」相關,路由器都是用ip來定位目的地


根據OSI的網路模型可以將計算機網路劃分為七層

應用層 表示層 會話層 傳輸層 網路層 數據鏈路層 物理層

網線屬於物理層

而你說的MAC地址屬於數據鏈路層的範疇,只有二層設備才關心MAC地址(如交換機)

IP+掩碼的方式可以讓計算機知道目標IP是否在區域網內

如果在一個區域網內,那麼將通過交換機直接將報文封發到目標地址

如果不在一個區域網內,那麼將通過交換機將報文封發到網關進一步傳輸


1,MAC解決的是一個鏈路內的問題,IP解決的是跨鏈路的問題

2,如果你樂意,你可以直接將一個TCP或者UDP報文封裝到mac幀裡面,而不用中間的ip報文相關封裝

3,但是這樣,tcp/udp、IP、MAC這三個協議就成了三角關係

tcp/udp與ip要考慮交互

tcp/udp與mac要考慮交互

ip與mac要考慮交互

4,為了簡化,tcp/ip協議在實現的時候,就選擇了tcp-ip-mac一串下來的結構

tcp/udp與ip要考慮交互

ip與mac要考慮交互

5,這個糖葫蘆串,或者一層一層的包皮,在某些特例下看似是複雜了(比如樓主舉例),但是放到全局,還是簡化了的

一句話攻略:這麼設計,是為了tcp、udp等高層協議,只需要考慮和ip協議的對接,而不用考慮和乙太網相關協議的對接


當然可以只用mac地址通信啦,簡單來講mac層的ARP協議包就是單純用mac地址通信的。

但是,由於多年的計算機網路通信的發展,我們目前主要關注於不但要實現廣域網區域網通信,更要考慮傳輸控制,擁塞控制,通信質量保證,我們也知道mac並沒有做這些,所以要想更正確的進行通信需要用到IP層,我們默認規定了完成有質量的通信,並且完成有質量的通信去用IP層,這也是為什麼區域網不用mac層,說白了就是,IP已經開發出來了很多必要的功能,沒必要再在mac層上再開發一遍。


一個是小網內的標識,一個是大網的標識。

就好比在公司你有個工號,出了公司你就得用身份證。


有了身份證號可以區分每個人了,為什麼還需要具體的地址才能找到每個人呢。。。mac地址和IP地址的作用完全不同的。


推薦閱讀:
相關文章