如果我们可以用 IP 地址唯一标识每台机器,为什么还需要 MAC 地址

网络工程 ip MAC地址 局域网 ARP IP地址
2022-03-02 13:41:20

我了解到,在 ARP 协议中,要将数据包从一台机器发送到另一台机器,我们需要知道目标机器的 MAC 地址,但是由于目标已经分配了一个唯一的 IP 地址,那么发送 MAC 地址不是多余的吗?

笔记-

  • 我了解在 TCP/IP 中有多个层,其中包括数据链路层,其主要功能是检查机器 MAC 地址是否与数据包的目标 MAC 地址匹配。
    但是由于数据包已经包含目标 IP 地址,所以为什么我们不能将数据包进一步发送到网络层以匹配数据包的目标 IP 地址和机器 IP 地址,而不用 MAC 地址在数据链路层进行此检查。
    请不要将此问题标记为重复,因为我已阅读有关此主题的先前问答,但没有任何解释为什么不在网络层而不是数据链路层进行此检查的原因。
    请解释。谢谢你。
3个回答

正如@ronmaupin 所暗示的那样,这是有历史原因的。

在小型网络中,您不需要第 3 层协议。所有设备都是可直接寻址的,因此第 2 层地址工作正常。随着网络变得越来越大并相互连接,需要知道如何从一个网络连接到另一个网络。这就是路由的功能,它在第 3 层完成。

IP 不是唯一的(甚至是最流行的)L3 协议,以太网也不是唯一的第 2 层协议。这就是为什么有层次。您可以将一个功能与另一个功能隔离开来。它使开发网络软件变得更容易,因为您不必为每种类型的网络都提供一个特殊版本。

第 3 层功能不知道也不关心您使用的是以太网、令牌环、PPP 还是其他十几种过时的网络协议。同样,第 2 层协议并不关心您使用的是 IP、IPX 还是其他东西。

您为分层付出的代价是您必须在 32 位 IP 地址和 48 位 MAC 地址(对于以太网)之间“映射”。这就是 ARP 协议的目的——在第 2 层和第 3 层之间进行映射。

不要混淆网络层。每一层都有特定的用途。另外,不要假设每一层只有一个协议。第 2 层有许多协议,其中一些使用 MAC 地址,而另一些则不使用。在使用 MAC 地址的那些中,有些使用 48 位 MAC 地址,有些使用 64 位 MAC 地址。还有多个第 3 层协议。IPv4 是最常用但并非唯一的第 3 层协议,它使用 32 位地址,但它正在被使用 128 位地址的 IPv6 取代。您不希望每次想要运行不同的第 3 层协议时都更换或升级所有第 2 层设备。

MAC地址是二层地址,用于在局域网中传递二层帧。交换机是第 2 层设备,它们使用 MAC 地址来创建一个表,其中列出了哪个主机连接到哪个交换机接口。交换机将查看源 MAC 地址以构建其 MAC 地址表,并查看目标 MAC 地址,在其 MAC 地址表中查找,并将帧传送到正确的端口。如果 MAC 地址表中没有目标地址,交换机需要将帧泛洪到我们的所有其他接口,这非常低效并且浪费了所有其他接口的带宽。交换机不会查看框架内部来检查 IP 地址。这允许第 2 层和交换机承载任何第 3 层协议(IPv4、IPX、IPv6 等)。

IP 地址是第 3 层地址,它们只能被第 3 层设备(例如路由器)查看。接收到第 2 层帧的路由器将从第 3 层数据包中剥离该帧,并在其路由表中查找 IP 地址以查看数据包应切换到哪个接口。路由器将为连接到目标接口的新 LAN 构建一个新的第 2 层帧。

第 2 层(MAC 地址等)用于连接到相同第 2 层域的设备,第 3 层(IP 地址等)允许您将数据发送到其他第 2 层域。

IP 地址就像你的理发。它通常不会经常改变,但当它改变时,你可能会完全认不出来。MAC 地址就像你的指纹。你可能看起来不一样,但你的指纹永远不会改变。

MAC 地址允许我们做几件事。

  1. 它们使我们能够识别物品的制造商。
  2. 它们为项目提供了不变的(本质上)标识。
  3. 它允许在 LAN 中进行较少的硬件密集型数据包传输。