網絡層
首先明確一點,並不是所有的網絡之間傳輸數據都需要mac地址和ip地址,比如說點對點線路之間的通信就沒有MAC地址,網絡層使用ipx協議時就沒有ip地址,但是在當前的主流網絡中,我們都使用ip地址和mac地址
既然mac地址唯一,為什么還要有IP地址?
之前我們提到,mac地址是唯一的,那理論上,在任何兩個設備之間,我應該都可以通過mac地址發送數據,為什么還需要ip地址?
mac地址就好像個人的身份證號,人的身份證號和人戶口所在的城市,出生的日期有關,但是和人所在的位置沒有關系,人是會移動的,知道一個人的身份證號,並不能找到它這個人,mac地址類似,它是和設備的生產者,批次,日期之類的關聯起來,知道一個設備的mac,並不能在網絡中將數據發送給它,除非它和發送方的在同一個網絡內。
所以要實現機器之間的通信,我們還需要有ip地址的概念,ip地址表達的是當前機器在網絡中的位置,類似於城市名+道路號+門牌號的概念。通過ip層的尋址,我們能知道按何種路徑在全世界任意兩台Internet上的的機器間傳輸數據。
mac地址通常是不變的,ip地址是可變的,尤其是移動設備,ip地址會經常變更。
mac地址的設計不攜帶設備在網絡中的位置信息,想要通過mac地址通信,我們得在所有的設備上維護一張很大的表,記錄所有mac地址路由在當前位置的的下一跳,這顯然是不合理的。
既然能通過ip地址發送數據,為什么要有mac地址
既然ip地址有位置信息,而且在一個網絡中也是唯一的,那么我們為什么不完全通過ip地址通信,拋棄mac地址呢?或者說,合並ip層和mac層的功能。
-
歷史原因
最初的鏈路層協議是和ip地址無關的,沒有網絡層方面的設定,只有物理層和鏈路層,最初也只有集線器,沒有交換機路由器,服務器之間傳輸數據全靠mac地址。在沒有ip地址之前,mac地址已經在使用了。現在到處都在用的二層交換機,就是根據mac地址轉發數據。 -
設計的原因
現在這樣設計是好的設計,鏈路層的實現不需要考慮數據之間的轉發,網絡層的實現不需要考慮物層的影響。
也就是說,理論上可行,目前無太大意義,反而有壞處。