MAC地址有什么用?

网络工程 路由 ip MAC地址
2021-07-14 19:45:41

我知道 MAC 地址在网络中用于多种用途,例如由 DHCP 服务器或无线接入点分配的静态固定 IP 地址。但为什么它在互联网上是必要的?

假设我向不在本地网络上的某个人发送数据包,例如www.example.com使用ICMP echo信号。ICMP echo不包含任何应用层或传输层。DNS 会发现 的 IP 地址www.example.com93.184.216.34

好吧,但是它如何找出802.11数据链路层所需的 MAC 地址呢?我本地网络上的任何机器都不知道。为什么还要加上MAC地址?IP 地址已经可以唯一地标识它,不是吗?如果 IP 地址隐藏在数据链路层之下,路由器如何查找 IP 地址?

编辑:

我了解到802.11标头和802.3标头都包含一个目标 MAC 地址字段。我知道我的机器包含一个 ARP 表,其中包含我的路由器的 MAC 地址。但是在我的路由器和目标路由器之间的那个字段中将写入什么 MAC 地址?

4个回答

好吧,但它如何找出 802.11 数据链路层所需的 [www.example.com's] MAC 地址?

您的计算机没有,也不需要这样做。由于 MAC 地址仅在同一个 L2 网络中使用,当您将流量发送到不同的 L3 网络时,它需要知道的是 www.example.com 位于不同的 L3 网络上以及如何到达该 L3 网络.

通常这是大多数设备的默认网关,正如您所指出的,您的计算机已经在您的 ARP 表中包含了路由器的信息。路由器将在将流量传递到下一个 L3 设备之前调整 L2 信息。

为什么还要加上MAC地址?IP 地址已经可以唯一地标识它,不是吗?

不,IP 地址不一定是唯一的。它们在本地网络上必须是唯一的,但可以重复使用。这是NAT存在的原因之一。

此外,以太网只是一种 L2 协议。IP 的设计目的是无需考虑底层协议,因此您可以用其他东西(如令牌环或帧中继)替换以太网,或者您可以根据需要创建自己的 L2 协议。IP 不会关心或被更改打扰。

如果 IP 地址隐藏在数据链路层之下,路由器如何查找 IP 地址?我真的不明白...

L3 标头不会被 L2 标头“隐藏”。L2 标头不会更改成为 L2 有效负载的内容,它只是预先添加或添加在 L3 标头之前。许多设备会在 L3 处理之前剥离 L2 标头,但即使情况并非总是如此,它也不会掩盖消息其余部分的含义。

这样想一下,假设我给您发送了一条消息,内容是“今天过得怎么样?” 这通过一位翻译人员将其更改为“您好,您今天过得怎么样?” 即使添加了新的“标题”,您仍能理解我的原始消息吗?在最终交付给您之前,可能会删除该附加标题。

但是在我的路由器和目标路由器之间的那个字段中将写入什么 MAC 地址?

当您的路由器将流量发送到下一个路由器时(假设它们使用以太网),它将使用其接口的 MAC 地址作为源 MAC 地址,使用下一个路由器接口的 MAC 地址作为目标地址。

这个网站上可能有几十个问题,专注于这些问题的不同方面。请随时使用搜索功能找到它们。以下是一些帮助您入门的方法:

自从您触及 802.11 以来:

MAC 地址是第 2 层地址。它们用于在硬件级别对设备进行寻址。例如,以太网是第 2 层协议,它使用 MAC 地址向设备发送数据。

最终,您需要处理 Internet 上的物理设备。这就是第 2 层地址(MAC 地址)发挥作用的地方。

就像 IP 地址用于 IP 级别(第 3 层)一样,MAC 地址用于 MAC 级别(第 2 层),即以太网、Wi-Fi 等。

当您向主机发送数据包时,您的计算机会执行以下操作:

  • 它会检查主机是否位于直接连接的网络之一(通常是您的本地 LAN)。

  • 如果是,它使用 ARP 将 IP 映射到 MAC 地址(通过 ARP 缓存,或通过在网络上广播 ARP 请求)。这样,它就会找到要放入帧的目标 MAC 地址。

  • 如果不是,它将使用路由表来查找发送数据包的位置(通常是您的默认网关,即您的路由器)。同样,它将使用 ARP 来查找所述网关的 MAC 地址(在大多数情况下,这将在缓存中)。然后它将使用它作为目标 MAC 地址。

源 MAC 地址将是您计算机的 MAC 地址。

如果数据包被传送到本地网络上的主机,那么故事就结束了。如果它被传送到路由器,那么该过程将再次开始,在需要任何“跃点”的每个“跃点”上使用新的源和目标 MAC 地址(显然点对点链路不需要)。

第 2 层交换机需要 MAC 地址才能将帧正确转发到正确的端口,而无需了解有关第 3 层 (IP) 地址或类似内容的任何信息。这就是使几十年前设计的交换机能够正确转发 IPv6 帧或您可能提出的任何其他第 3 层协议的原因,只要它使用适当的 MAC 地址正确构建。

我认为@Ron Trunk 的回答对您很有用,而且,对于您的符号,每次数据包到达路由器并通过某些接口路由时,在那一刻,源 mac 地址字段会由所有者 mac 更改该端口的地址,允许通过 l2 进行快速连接。事实上,在数据包到达目的地的那一刻,它带有目的地网络网关的源mac地址。

如果您使用数据包跟踪器、gns3...进行模拟并捕获流量并比较 mac 地址,您可以以一种简单而安全的方式查看正在谈论的内容。

Mac 地址用于 l2 连接,如 ip 地址用于 l3 连接