【计网】为什么 IP 地址和 MAC 地址需要同时存在?

(以下内容总结自互联网。)

从 OSI 七层结构来说

IP 地址属于 IP 协议,是网络层的地址 ;MAC 地址属于以太网协议,是数据链路层的地址。

Q:为什么不能只用 MAC 地址,取消 IP 地址?
A:使用 IP 地址来定位比用 MAC 地址来定位更加方便,IP 地址有层次,MAC 没有。

Q:为什么不能只用 IP 地址,取消 MAC 地址?
A:源 MAC 在转发的时候会改变,到达目的地后就不知道是谁发来的了。
IP 头部里记录了源 IP 和目的 IP,这两个在路由器转发的时候都是不会变的。
以太网头部里记录了源 MAC 和目的 MAC,这两个在路由器转发的时候是会发生改变的。

Q:为什么不在 IP 头里再加几个字段“上一条 IP”、“下一跳 IP”呢?分别保存不行吗?这样不就能取消 MAC 地址了吗?
A:一开始没有这么做,后来再修改成本太大1。此外,网络层除了 IP 还有其他协议,其他的协议可能会依赖 MAC 地址1

从历史原因来说

MAC 地址诞生得比 IP 地址要早。234

最开始,网络中的计算机数量比较少,只需要 MAC 地址就可以和同一网络上的计算机通信

网络逐渐发展,主机的数量增加,同时也产生了很多个不同的网络,为了解决不同网络之间互连的问题,又加了一层,才有了 IP 协议4

可以说,MAC 地址诞生之初用于识别不同设备,IP 地址诞生之初用于跨网络识别设备1

此外,不同的以太网可能使用不同的标准,MAC 地址可能也有所差异。更有可能数据链路层用的根本不是以太网,而是其他的协议(IP 协议甚至可以运行在蓝牙上5。)。IP 地址的存在就屏蔽了这种差异,把协议 A 地址、协议 B 地址、...互转变成了协议 A 地址↔IP 地址、协议 B 地址↔IP 地址、...,简化了流程。

Q:如果我不需要连接到互联网,只是同一局域网之间的设备互相通信,直接根据 MAC 地址来通信吗?(也就是不使用 TCP/IP 协议)
A:理论可行,但是你要重新实现一套网络层协议,直接用 MAC 地址作为定位依据。6

但是现在局域网依旧使用 IP 协议,毕竟有现成的为什么不直接用?

总结

MAC 地址和 IP 地址的目的各不相同,MAC 解决的是识别同网络下设备的问题,IP 解决的是识别很多个网络下设备的问题。


  1. ipv4 - Reason for both a MAC and an IP address - Network Engineering Stack Exchange ↩︎ ↩︎ ↩︎

  2. when is ethernet born - Google ↩︎

  3. when is ip born - Google ↩︎

  4. 有了 IP 地址,为什么还要用 MAC 地址? - 涛叔的回答 - 知乎 ↩︎ ↩︎

  5. 各种无线传输协议汇总(一)- Bluetooth - CSDN ↩︎

  6. ipv4 - Why use IP if we already have a MAC address? - Network Engineering Stack Exchange ↩︎

你可能感兴趣的:(计算机网络,tcp/ip,网络,网络协议)