我无法理解:如果当地的网络具有独特的 当地的IP地址,为什么同一个本地网络上的设备之间交换数据还要使用MAC地址(ARP)呢?
为什么我们不直接使用本地 IP 地址进行本地网络通信,而是使用 MAC 地址?
据我所知,路由器无论如何都知道 IP 地址何时需要根据其子网掩码传到外部互联网,这是正确的吗?
答案1
您可能知道,MAC 地址和 IP 地址存在于网络的不同层上,ISO/OSI 方案或者TCP/IP 套件. 确保您理解这些层背后的概念。
请注意,我们同时使用 IP 层和链路层的主要原因是历史原因。这主要是因为 IP 地址 1) 是动态的,并且 2) 处理起来更方便。以下是最近一篇有趣的文章这更有助于我们了解这段历史。当然,情况可能有所不同,但互联网已经发展了几十年,而且大多数时候都必须向后兼容,所以我们不可能从一开始就想出最好的设计。
你问为什么我们仍然使用 MAC 地址在同一个本地网络上的设备之间交换数据?因为:
- 这是唯一可以明确地寻址连接到同一链路(例如以太网)的设备的方法
- 所有沟通有无论如何都要通过链路层(MAC)
您需要了解,由于分层通信模型,您只能在协议运行的同一层寻址端点。例如,TCP 连接只能寻址具有特定 IP 地址和端口号的远程服务器。同时,TCP 不会决定底层 IP 路由的工作方式。换句话说,TCP 不关心(也无法控制)IP 协议如何处理其连接数据。IP 协议也是如此:它无法决定将数据物理发送到何处,但它不必这样做,因为有 MAC 层。
IP 协议确实用于唯一地寻址网络上的某个设备,但是当交换机需要决定实际将数据发送到何处(或当设备具有 MAC 地址缓存时发送到设备本身)时,它需要将该 IP 地址转换为分配给该 IP 地址的 MAC 地址。
有了 IPv6 提供的海量地址空间,您可能会认为 MAC 地址不再需要了,因为 IPv6 既提供了动态分配,又可以确保所有分配的地址都是唯一的——但是出于多种原因(如我上面链接的文章中所解释的),这不是我们今天所要处理的。
答案2
这是因为以太网的设计方式。首先,请注意以太网可以(并且在互联网出现之前经常这样做)使用其他协议。
如果您只有 IP(V4)地址,那么在局域网中查找其他系统会变得非常困难,因为很难以简单、有序的方式实现路由。
IpV4 旨在适用于各种网络拓扑。将其从硬件中抽象出来(这就是使用 MAC 地址所允许的),可以更轻松地支持其他拓扑。