我知道MAC地址在网络中用于多种用途,例如DHCP服务器或无线访问点分配的静态固定IP地址。但是为什么在Internet中有必要呢?

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

那么,如何找到93.184.216.34数据链路层所需的MAC地址呢?我的本地网络上没有机器知道它。为什么甚至需要添加MAC地址? IP地址已经可以唯一标识了,不是吗?路由器如何查找IP地址(如果它隐藏在数据链路层下面)?

编辑:包含用于目标MAC地址的字段。我知道我的机器包含一个ARP表,其中包含路由器的MAC地址。但是,将在我的路由器和目标路由器之间的该字段内写入什么MAC地址?

评论

您可以用另一种方式问这个问题:如果我已经有了MAC地址,IP地址有什么用?

因此,它们实现了相同的目的吗? IP地址有DNS,但MAC地址没有类似的内容。

那是反问。

编辑的答案是目标MAC将是下一跳设备的地址。

从未使用聊天,但我也愿意

#1 楼


那么,如何找到802.11数据链路层所需的[www.example.com] MAC地址呢?


您的计算机不需要,也不需要这样做。由于MAC地址仅在同一L2网络中使用,因此,当您向其他L3网络发送流量时,只需知道www.example.com在不同的L3网络上,以及如何访问该L3网络即可。通常,这是大多数设备的默认网关,并且如您所指出,您的计算机已经在ARP表中包含路由器的信息。路由器会先调整L2信息,然后再将流量传递到下一个L3设备。


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


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

此外,以太网只是一种L2协议。 IP设计为无需担心基础协议即可工作,因此您可以用其他东西(例如令牌环或帧中继)代替以太网,或者如果需要,可以创建自己的L2协议。 IP不会在乎更改,也不会被更改所困扰。


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


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

这样想,假设我给您发送了一条消息,说:“您今天好吗?”这是通过翻译将其更改为“您好,您今天好吗?”的结果。即使添加了新的“标题”,您仍然可以理解我的原始消息吗?而且在最终交付给您之前,可能会删除该附加报头。


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


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

该网站上可能存在数十个问题,这些问题集中于这些问题的不同方面。请随时使用搜索功能找到它们。以下是一些入门指南:


如何在路由中使用MAC / IP地址
MAC和IP地址的原因
IP Address vs MAC地址,它如何真正协同工作说明
如果我们已经有了MAC地址,为什么要使用IP?

由于您接触过802.11:


802.11帧标头中的四个第2层地址


评论


“ L2头没有被L2头“隐藏”。L2头不会改变成为L2有效负载的内容”-如果我没记错的话,这也称为封装。它的工作原理像俄罗斯套娃。 IP数据包(或通常的OSI第3层PDU)被封装到一个帧中,在另一侧,该帧被剥离,留下完整的IP数据包,依此类推。

–ROAL
16-2-5在8:07



@ROAL,是的,以太网也封装了,因为也有预告片。但是,某些形式的封装可能会更改有效负载的内容。同样,虽然与俄罗斯套娃的类比确实可行,但在这种情况下,这可能会导致OP混乱,因为娃娃的内部内容“被隐藏”。

– YLearn♦
16-2-5在9:11

#2 楼

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

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

#3 楼

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

将数据包发送到主机后,您的计算机会执行以下操作:


它检查主机是否在直接连接的网络之一(通常是您的本地LAN)上。
如果也就是说,它使用ARP将IP映射到MAC地址(通过ARP缓存或通过在网络上广播ARP请求)。这样,它将找到要放入帧中的目标MAC地址。
如果没有,它将使用路由表查找将数据包发送到哪里(通常是默认网关,即路由器) )。同样,它将使用ARP查找所述网关的MAC地址(在大多数情况下,它将位于缓存中)。然后它将使用它作为目标MAC地址。

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

如果数据包已传递到本地的主机网络,到此结束。如果将其交付给路由器,则该过程将再次开始,并在每个需要任何“跳”的“跳”上添加新的源MAC地址和目标MAC地址(显然,不需要点对点链接)。

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

#4 楼

我认为@Ron Trunk的答案对您而言非常有用,并且对于您的表示法,每当数据包到达路由器并通过某些接口路由时,此时,源mac地址字段由所有者mac更改该端口的地址,允许l2快速连接。实际上,在数据包到达目的地的那一刻,它便附带了目的地网络网关的源mac地址。

您可以轻松而安全地查看正在通话的内容关于您是否使用数据包tracert,gns3等进行模拟,并捕获流量并比较mac地址。

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