我知道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地址?
#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连接
评论
您可以用另一种方式问这个问题:如果我已经有了MAC地址,IP地址有什么用?因此,它们实现了相同的目的吗? IP地址有DNS,但MAC地址没有类似的内容。
那是反问。
编辑的答案是目标MAC将是下一跳设备的地址。
从未使用聊天,但我也愿意