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

网络工程 ip MAC地址 arp IP地址
2021-07-15 17:28:34

我了解到在 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 层帧。

二层(MAC地址等)用于连接到同一个二层域的设备,三层(IP地址等)允许你向其他二层域发送数据。

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

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

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