1. 程式人生 > >tcp/ip 卷一 讀書筆記(3)為什麽既要有IP地址又要有MAC地址

tcp/ip 卷一 讀書筆記(3)為什麽既要有IP地址又要有MAC地址

維護 移動 理論 集線器 協議 合並 所有 變更 影響

網絡層

首先明確一點,並不是所有的網絡之間傳輸數據都需要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地址轉發數據。

  • 設計的原因
    現在這樣設計是好的設計,鏈路層的實現不需要考慮數據之間的轉發,網絡層的實現不需要考慮物層的影響。

也就是說,理論上可行,目前無太大意義,反而有壞處。

tcp/ip 卷一 讀書筆記(3)為什麽既要有IP地址又要有MAC地址