MAC地址的确切用途是什么?

Vis*_*vek 129 networking routing mac-address ip

我知道 IP 地址是分层的,因此互联网上的路由器知道转发数据包的方向。对于 MAC 地址,没有层次结构,因此数据包转发是不可能的。因此,MAC 地址不用于数据包传输。

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

Wer*_*nze 116

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 地址。

  • +1 表示以不知道答案的人可以理解的方式实际回答问题。 (16认同)
  • @Rick 你是对的,连接的目标 IP 不会改变。但在引用的段落中,我谈论的是数据包的直接目的地——可能是路由器,而路由器可能会在连接过程中发生变化。关于您的第二条评论,我将文本更改为“ARP 数据包的源 MAC 地址”。我希望这更清楚。 (2认同)

小智 62

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

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

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

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

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

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

要在没有直接物理连接的不同机器上运行的 2 个应用程序之间进行通信,需要进行大量工作。

在过去,每个应用程序都会确切地知道需要运行哪些机器代码指令才能生成合适的信号,该信号将到达远端的应用程序并可由其解码。所有通信都是有效的点对点通信,并且必须编写软件以适合其部署的确切情况。显然,这是不可持续的。

取而代之的是,网络的问题被分成若干层,每一层都知道如何与远程机器上的匹配层对话,以及如何与其本地机器上的下面(有时是上面)层进行通信。它对现有的任何其他层一无所知——因此您的 Web 浏览器不需要关心它是否在使用令牌环、以太网或 wifi 网络的机器上运行——并且绝对不需要知道什么硬件远程机器使用。

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

底层,即第 1 层,是物理层。这是电线、晶体管和无线电波层,在这一层,通信大多只是一连串的东西。数据遍布物理连接的任何地方。您可以使用 CAT-5 电缆将计算机的网络端口插入交换机。

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

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

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

因此 MAC 地址在第 2 层工作,并允许物理上相互连接的 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 层数据包的内容。


Mei*_*jes 47

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

以下是组织唯一标识符列表:Standards.ieee.org

这是上述的替代方案:MAC-Vendor-Lookup

几个常见的知名制造商的例子:

  • 00-05-5D(D-Link 系统公司)
  • 00-09-5B(网件公司)
  • 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-Request,其中包含自己的 IP-Address、MAC-Address、接收器的 IP-Address 和上面提到的广播地址(ff:ff:ff:ff:ff :ff)。之后,PC B 检查数据包是否发送给他。如果是,则 PC B 将其自己的 MAC-Address、IP-Address、接收方的 MAC-Address 和接收方的 IP-Address 发回。其他设备丢弃该数据包。

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

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

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

  • -1:问题问的是如何使用 MAC 地址,而不是 MAC 地址是什么。回答问题的唯一部分是最后的项目符号列表,它没有详细说明。 (7认同)
  • 比“每个设备(...)都有 MAC 地址。”更准确,***每个 NIC* 都有 *A* MAC 地址**。(不考虑设置自定义 MAC 地址的能力。)并非所有打印机都内置网卡,许多服务器有多个网卡,因此也有多个 MAC 地址。 (4认同)
  • 图片来自维基百科:http://en.wikipedia.org/wiki/File:MAC-48_Address.svg,根据知识共享许可的图片在使用时必须注明作者。 (4认同)
  • 另一点是,MAC 地址是 NIC 决定丢弃哪些内容以及将哪些内容发送给处理器进行处理的方式。在线路上遇到的以太网帧将其目标 MAC 地址与 NIC MAC 地址进行异或运算,如果结果全为 0,则它是用于该 NIC 的帧。 (3认同)
  • 假设 PC-1 向 PC-2 发送一个数据包。现在交换机只读取 PC-1 的 MAC 地址并将其保存到表格中。如果您想了解有关其工作原理的更多信息,请阅读:[LAN 交换机的工作原理](http://www.howstuffworks.com/lan-switch11.htm) :) (2认同)

pjc*_*c50 24

它们用于包传送:在以太网络上,有多个设备,并且该MAC地址指定装置应接收该数据包。以太网交换机将使用它来选择在哪个端口上发送接收到的数据包。

  • 有趣的是,以太网最初是一种总线介质,所有机器在物理上共享相同的介质(对于无线网络仍然如此)。所以从逻辑上讲,它是这样工作的。 (5认同)

log*_*off 7

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

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

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

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

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


Uwe*_*nus 6

MAC 地址用于物理传输。以太网适配器对 IP 一无所知。因此以太网适配器使用 MAC 地址来寻址数据包的接收者。

如果以太网适配器对 IP 一无所知,那么我们必须升级所有固件以切换到新协议(如 IPv4 到 IPV6)。

MAC 地址中还包含一些有关制造商的信息。

  • 路由器不使用 MAC 地址来路由任何东西。他们使用 IP 地址。集线器从其端口复制未经修改的流量,但这将称为桥接,因为流量不会通过不同的网络,而是通过同一网络。 (3认同)

Law*_*ceC 6

以太网假定它要与之通信的另一台计算机(另一台 MAC)可直接从其网络适配器访问。IP没有。IP 假设它可以访问整个世界上的任何其他 IP,并且如果它无法在当前子网中访问它,路由器将把它传送到那里,尽管有 NAT。第 2 层或以太网中不存在网关的概念。

如果您有许多机器连接到一个交换机,并且永远不需要通过路由器与其他网络/Internet 交换流量,那么您真的不需要启动和运行 IP。当然,应用程序必须在第 2 层之上实现或提供自己的协议,因为几乎所有操作系统和应用程序都假设您总是希望使用 TCP/IP。

永远记住在IP的意思是“互联”的含义实际上它关注的是获得流量的“互联网”之间的网络不止网络,但显然它可以是(现在也是)用于这一点。


Jes*_*sen 5

当 IPv4 的 ARP(地址解析协议)或 IPv6 的 NDP(邻居发现协议)将 IP 地址转换为 MAC 地址以确定帧应发送到哪个唯一主机时使用它。