MAC 地址的具体用途是什么?

MAC 地址的具体用途是什么?

我知道 IP 地址是分层的,这样整个互联网上的路由器就知道要将数据包转发到哪个方向。而 MAC 地址则没有层次结构,因此无法转发数据包。因此,MAC 地址不用于数据包传输。

我认为它在那里不是毫无理由的。所以我的问题是,MAC 地址在数据包传输过程中究竟在哪里发挥作用?

答案1

TL;DR> MAC 地址是以太网(以及其他一些类似标准,如 WiFi)的低级组件。它们允许设备与本地物理网络(LAN)上的机器进行通信,并且不能通过互联网路由 - 因为物理硬件理论上可能插在世界任何地方。

相比之下,IP 地址覆盖整个互联网,路由器使用它们来确定将数据发送到哪里,即使数据需要多跳才能到达目的地 - 但它们对于与本地网络上的物理硬件交互没有帮助。

如果我们找到比以太网更好的标准,它可能不会使用 MAC 地址,但来自互联网的 IP 流量仍然可以流过它,即使互联网上的其他人从未听说过它。

如果我们找到比 IP 更好的标准(例如,如果所有 IPv4 地址都用完了,则可以找到 IPv6),那么大多数以太网硬件都可以承载新类型的流量而无需修改 - 并且简单的软件/固件更新就可以解决其余大部分问题。

MAC 地址是本地以太网(或 wifi)网络正常运行所必需的。它们允许网络设备吸引单个直接连接设备的注意,即使物理连接是共享的。当单个组织内有数千台设备连接在一起时,这一点很重要。它们在更广泛的互联网上不起作用。

要真正理解这个问题的答案,你需要理解OSI(有时称为 7 层)模型

为了使两个运行在不同机器上且没有直接物理连接的应用程序之间进行通信,很多需要进行的工作。

在过去,每个应用程序都确切地知道需要运行哪些机器代码指令才能产生适当的信号,该信号将到达远端应用程序并被远端应用程序解码。所有通信实际上都是点对点的,软件必须根据部署的具体情况进行编写。显然,这是不可持续的。

相反,网络问题被分成了多个层,每个层都知道如何与远程机器上的匹配层通信,以及如何与本地机器上位于其下方(有时是上方)的层通信。它对任何其他层一无所知 - 因此您的 Web 浏览器无需关心它是在使用令牌环、以太网还是 wifi 网络的机器上运行 - 并且绝对不需要知道远程机器使用什么硬件。

为了实现这一点,7 层模型使用了一种类似于嵌套信封的系统;应用程序创建其数据并将其包装在一个信封中,以便操作系统进行传送。操作系统将其包装在另一个信封中并将其传递给网络驱动程序。网络驱动程序将其包装在另一个信封中并将其放在物理电缆上。依此类推。

最底层,第一层是物理层。这是电线、晶体管和无线电波的层,在这一层,通信主要是一串 1 和 0。数据流经任何物理连接的地方。您可以使用 CAT-5 电缆将计算机的网络端口插入交换机。

第 2 层是数据链路层。它为 1 和 0 提供了一些结构、一些错误检测和纠正功能,以及一些关于哪个物理连接的设备(这里的物理连接实际上可以通过 wifi)应该关注该消息的指示。这是 MAC 地址发挥作用的层,我们稍后会回到它。但 MAC 地址并不是这一层的唯一可能性。例如,令牌环网络需要不同的数据链路实现。

第 3 层是网络层。这是 IP 工作的层(尽管它也不是唯一的网络层协议),它允许计算机发送可以到达“网络”上任何位置的任何机器的消息。相关机器之间不需要直接连接。

第 4-7 层是更高级别的协议。它们离硬件越来越远,离应用程序越来越近。例如,TCP 位于 IP 之上,并提供了在消息丢失时自动重新发送的机制。

因此,MAC 地址在第 2 层工作,并允许两台物理上相互连接的机器发送消息,这些消息将被共享同一物理连接的其他机器忽略。

假设我有一个应用程序想要向 IP 地址为 8.8.8.8 的机器发送一些数据

第 3 层将数据包装在一个信封中,其中包含 IP 地址 8.8.8.8 等信息,然后将其交给第 2 层。

第 2 层查看此 IP 地址,并决定直接连接到的哪台机器能够处理此消息。它将有一个查找表,其中包含直接连接的 IP 地址的选择以及该机器中网卡的相应 MAC 地址。此查找表使用称为 ARP 的协议构建,该协议允许网卡向其他直接连接的设备提问。以太网保留一个特殊的 MAC 地址 FF:FF:FF:FF:FF:FF,它允许设备与全部物理连接的设备。

如果 IP 地址在表中(或可以通过 ARP 解析),它会将第 3 层信封包装在第 2 层信封中,并在新标头中包含 MAC 地址,然后将整个包传递到第 1 层的硬件。具有匹配 MAC 地址的网卡将接收该消息,网络驱动程序将打开第 2 层信封并将内容传递给操作系统中希望在特定 IP 地址接收消息的任何部分。

或者,如果 IP 地址不在本地网络上,则新的信封将具有为该网络接口配置的默认网关(即路由器)的 MAC 地址,并且硬件会将数据包传输到路由器。

路由器注意到第 2 层信封中的 MAC 地址,并打开第 2 级数据包。它查看第 3 级信封上的 IP 地址,并计算出消息接下来需要发送到哪里,这可能是您的 ISP 的路由器。如果路由器使用 NAT(或类似技术),它甚至可能在此时修改第 3 级信封,以保持您的内部 IP 地址的私密性。然后,它会将第 3 级信封包装到新的第 2 级信封中,该信封的地址为 ISP 路由器的 MAC 地址,并将消息发送到那里。

拆除外层信封并将内容物包装到寄往链条中下一步地址的新信封中的过程将持续进行,直到邮件到达目的地机器。

然后,信封会继续被撕开,信息会一层层地往回走,直到最终到达预定的收件人手中,而收件人将是某个地方的应用程序,希望它知道如何处理这条信息——但不知道这条信息是如何到达那里的,也不知道将响应发回原始机器所需的所有步骤。

但一切都有效,几乎就像魔术一样!

请注意,网络交换机可以使用 MAC 地址来优化网络流量的流动。以太网集线器只是将所有传入流量转发到其所有端口,而交换机只能将流量转发到数据包目标 MAC 地址所连接的单个端口。这增加了网络的有效带宽;通过定位特定端口,交换机避免在网络的不必要部分上转发流量。交换机将使用 ARP 或数据包嗅探来识别哪些设备连接到哪个端口。交换机完全忽略第 2 层数据包的内容。

答案2

MAC 地址用于什么?

MAC 地址是使本地以太网网络正常工作的底层基础。本地意味着网络设备要么通过电缆或 WiFi 直接连接,要么通过网络集线器或网络交换机连接。

每个网卡都有一个唯一的 MAC 地址。以太网上发送的数据包始终来自 MAC 地址并发送到 MAC 地址。如果网络适配器正在接收数据包,它会将数据包的目标 MAC 地址与适配器自己的 MAC 地址进行比较。如果地址匹配,则处理数据包,否则丢弃数据包(下一段中将介绍例外情况)。

有一些特殊的 MAC 地址,例如 ff:ff:ff:ff:ff:ff,它是广播地址,用于寻址网络中的每个网络适配器。如果网络适配器正在接收发送到广播地址的数据包,则它会对其进行处理。

网络交换机如何影响数据包流?

集线器不具备智能,仅连接所有连接的网络电缆,因此网络上发送的数据包会被其他连接的网络适配器接收。网络交换机内部有一些逻辑,可以转发或丢弃数据包。

当网络交换机在一个端口上接收到数据包时,它需要知道将数据包转发到哪个端口。广播 MAC 地址很简单,这意味着只需转发到所有其他端口。单独的 MAC 地址需要更多工作。如果目标是单独的 MAC 地址,那么它只会将数据包转发到连接了此 MAC 地址的适配器的端口。交换机如何知道该端口?因为它会检查所有接收到的数据包,并为每个端口构建一个表,其中包含该端口接收到的数据包中的源 MAC 地址。这些条目在一段时间内有效,如果没有从该 MAC 地址接收到更多数据包,则会被丢弃。如果 MAC 地址未知(暂时)怎么办?那么交换机需要将数据包发送到所有其他端口,就像它对广播 MAC 地址所做的那样。

使用 MAC 地址,您只能访问直接连接/有线网络。如果您想连接不同的网络,则需要更多结构,然后 IP 就会发挥作用。名称已经说明了 IP,即互联网协议,一种连接网络的协议。

IP 地址和 MAC 地址如何协同工作?

IP 是一种在以太网上层使用的协议。另一个协议例如是 IPX。IP 允许连接不同的本地网络,从而形成企业网络或全球互联网。如果发送了 IP 数据包,那么我们在数据包中仍然有发送方和接收方的 MAC 地址,此外还有发送方和接收方的 IP 地址。

现在,当您的计算机想要向某个 IP 地址 xxxx 发送数据包时,首先要检查目标地址是否与计算机本身位于同一 IP 网络中。如果 xxxx 位于同一网络中,则目标 IP 必须位于本地以太网中,并且可以直接访问。我们只需要知道要将数据包发送到的 MAC 地址。如果目标 IP 不在我们自己的网络中,则需要将数据包发送到配置的路由器。同样,我们需要知道要将数据包发送到的 MAC 地址。

我们看到,在本地网络中,一定存在某种机制来检索 IP 地址的 MAC 地址。这种机制就是地址解析协议 (ARP)。

一旦发送方检索到下一跳(本地目的地或本地配置的路由器)的 MAC 地址,他就会将该目标 MAC 地址写入数据包并发送该数据包。

ARP 如何工作?

ARP 本身是以太网之上的协议,就像 IP 或 IPX 一样。当设备想要知道给定 IP 地址的 MAC 地址时,它会向广播 MAC 地址发送一个数据包,询问“谁有 IP 地址 yyyy?”所有设备都会收到该数据包,但只有 IP 地址为 yyyy 的设备会以数据包“是我”进行响应。询问设备会收到答案,现在知道 ARP 数据包的源 MAC 地址是正确的 MAC 地址。当然,结果将被缓存,因此设备不需要每次都解析 MAC 地址。

路由

没有基于 MAC 地址的路由。低级以太网和 MAC 地址只能到达网络上的每个设备相同的网络(有线或无线)。如果您有两个网络,中间有一个路由器,则您无法让网络 A 中的设备将数据包发送到网络 B 中设备的 MAC 地址。网络 A 中没有设备具有网络 B 中设备的 MAC 地址,因此发送到此 MAC 地址的数据包将被网络 A 中的所有设备(包括路由器)丢弃。

路由是在 IP 级别完成的。它由具有多个网络适配器(至少两个)的路由器完成。简单地说,路由器只是在执行我在“IP 地址和 MAC 地址如何协同工作?”一节中描述的操作。路由器将接收其自己的 MAC 地址但不同的 IP 地址的数据包。然后,它将检查是否可以直接到达目标 IP 地址(在另一个网络适配器上)。如果可以,它将向目标发送数据包。否则,路由器本身也配置了一个上游路由器,并将数据包发送到该路由器。

当然,您可以配置多个路由器。您的家用路由器将只配置一个上游路由器,但在互联网主干中,大型路由器拥有大型路由表,因此它们知道所有数据包的最佳路径。

MAC 地址的其他用例

  1. 无线接入点通常使用 MAC 地址进行访问控制。它们仅允许已知设备(MAC 地址是唯一的,用于识别设备)通过正确的密码进行访问。

  2. DHCP 服务器使用 MAC 地址来识别设备并为某些设备提供固定的 IP 地址。

答案3

MAC 地址(媒体访问控制地址)通常是网络中设备的标识符。因此,每个 NIC(路由器、PC、网络打印机、服务器等中的网络接口控制器)都有 MAC 地址。有些服务器内置了多个网卡,因此有多个 MAC 地址。MAC 地址长度为 6 个字节(6 个八位字节)。左边是最高有效字节,右边是最低有效字节。如下图所示,前 3 个字节是组织唯一标识符。这表示制造该设备的制造商。

以下是组织唯一标识符标准网站

以下是上述方法的替代方案:MAC 供应商查询

一些常见知名制造商的示例:

  • 00-05-5D(D-Link 系统公司)
  • 00-09-5B(Netgear 公司)
  • 00-E0-4C(瑞昱半导体公司)
  • 00-E0-4F(思科系统公司)
  • 00-E0-64(三星电子)

最后 3 个字节(3 个八位字节)由制造商随机分配。

正如 pjc50 正确指出的那样,以太网中的 MAC 地址可帮助交换机决定将哪个数据包发送到何处。还有一个广播 MAC 地址。ff:ff:ff:ff:ff:ff 用于广播 MAC 地址。请注意,MAC 地址可以更改,因此在将其用作明确的设备标识符时要小心!MAC 地址还用于 ARP(地址解析协议)协议。它的工作原理是,PC A 向 PC B 发送一个 ARP 请求,其中包含自己的 IP 地址、MAC 地址、接收器的 IP 地址和上面提到的广播地址(ff:ff:ff:ff:ff:ff)。之后,PC B 检查数据包是否发送给他。如果是,则 PC B 发回自己的 MAC 地址、IP 地址、接收器的 MAC 地址和接收器的 IP 地址。其他设备丢弃该数据包。

PC A 和 PC B 通常都会将成功的连接保存在所谓的 ARP 缓存中。PC 保存连接的方式因设备而异。如果您不知道 IP 地址,则可以使用反向地址解析协议 (RARP) 获取 IP 地址。使用 RARP,设备会联系中央客户端并向其询问 IP 地址。但这种方法现在很少使用。

以下技术使用 MAC-48 标识符格式:

  • 以太网
  • 802.11 无线网络
  • 蓝牙
  • IEEE 802.5 令牌环
  • 大多数其他 IEEE 802 网络
  • 光纤分布式数据接口
  • ATM(仅限交换虚拟连接,作为 NSAP 地址的一部分)光纤通道和串行连接 SCSI(作为全球名称的一部分)

答案4

在这种情况下,忘记层次结构,这不是一个非常重要的问题。

MAC 地址是 ISO/OSI 或 TCP/IP 模型中第 2 层(链路层)的地址。IP 地址来自相同模型中的第 3 层(网络层)。

在第 2 层网络中,例如常见的以太网,存在一个冲突域,其中连接的所有设备都可以接收来自任何端点的所有帧(第 2 层单元数据)。但网络外部的任何人都无法接收这些帧。MAC 地址就是这些域中的地址。

数据包是第 3 层单元数据,通常是 IP 数据包。它们会穿过一个或多个冲突域。IP 地址是此域中的地址。

交换机是第 2 层设备,使用 MAC 地址表转发帧。路由器是第 3 层设备,使用 IP 地址表转发数据包。

相关内容