我知道IP地址是分层的,因此整个Internet的路由器都知道转发数据包的方向。对于MAC地址,没有层次结构,因此无法进行数据包转发。因此,MAC地址不用于数据包传输。

我认为它没有任何原因。所以我的问题是,在数据包传输过程中,MAC地址究竟在哪里起作用?

#1 楼


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

相反IP地址覆盖了整个Internet,即使它们需要多跳才能到达目的地,路由器也使用它们来确定向何处发送数据-但是它们对与本地网络上的物理硬件接口无济于事。 >
如果我们找到了比以太网更好的标准,它可能不会使用MAC地址,但是即使互联网上的其他人从未听说过,来自Internet的IP流量仍然可以通过它。

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


需要使用MAC地址建立本地以太网(或wifi)网络功能。即使共享物理连接,它们也可以使网络设备吸引单个直接连接的设备的注意力。当在单个组织中将数千个设备连接在一起时,这可能很重要。它们在更广泛的Internet上不起作用。

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

要使在没有直接物理连接的独立计算机上运行的两个应用程序之间进行通信,需要进行大量工作。

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

而是将网络问题分为多个层,每个层都知道如何与远程计算机上的匹配层进行通信,以及如何与该层通信在其本地计算机的下方(有时是上方)。它对任何其他层一无所知-因此您的网络浏览器不需要关心它是否在使用令牌环,以太网或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层数据包的内容。

评论


嗨!感谢你的回答。据我所读,您的答案是最好的。如果您可以在方案中包含诸如ARP和NAT之类的更多概念,那就太好了。

– Vishnu Vivek
13年7月26日在1:09

添加了对ARP和网络交换机的参考。我不认为NAT与MAC地址有任何关系,作为第3层功能...

–比尔·米歇尔(Bill Michell)
13年7月26日在8:39

@BillMichell:在IPv6中,可以使用MAC或其他本地(“硬件”)ID来构成IP。

–卢西亚诺
13年7月26日在15:37

答案是社区Wiki。如果您认为可以帮助解答OP的问题,则可以对其进行编辑以包括此附加信息。

–比尔·米歇尔(Bill Michell)
13年7月26日在15:48



这需要一个TL; DR。

– AJMansfield
13年7月26日在16:33

#2 楼

MAC地址是做什么用的?

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

网卡都有唯一的MAC地址。以太网上发送的数据包始终来自MAC地址,然后发送到MAC地址。如果网络适配器正在接收数据包,则它将数据包的目标MAC地址与适配器自己的MAC地址进行比较。如果地址匹配,则处理该包,否则将其丢弃。

有特殊的MAC地址,例如ff:ff:ff:ff:ff:ff:ff:ff,这是广播地址。并寻址网络中的每个网络适配器。

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

IP是在以太网之上的层上使用的协议。例如,另一个协议是IPX。 IP允许连接不同的本地网络,从而形成公司网络或全球Internet。

当您的计算机要将数据包发送到某个IP地址xxxx时,首先检查目的地址是否为与计算机本身位于同一IP网络中。如果xxxx在同一网络中,则可以直接访问目标IP,否则需要将数据包发送到已配置的路由器。

到目前为止,情况似乎变得越来越糟,因为现在我们有两个IP地址:一个是原始IP数据包的目标地址,另一个是我们要将数据包发送到的设备的IP(下一跳,最终目的地或路由器)。

由于以太网使用MAC地址,因此发送方需要获取下一跳的MAC地址。有一个特殊的协议ARP(地址解析协议)用于此目的。发送方检索到下一跳的MAC地址后,他会将目标MAC地址写入数据包并发送数据包。

ARP如何工作?

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

路由

我几乎忘了提:没有基于路由的路由在MAC地址上。低级以太网和MAC地址只能到达同一网络(电缆或无线)上的每个设备。如果您有两个网络,并且它们之间有路由器,则网络A中不能有设备将数据包发送到网络B中设备的MAC地址。网络A中没有设备具有网络B中设备的MAC地址,因此a到此MAC地址的数据包将被网络A中的所有设备(也包括路由器)丢弃。

路由在IP级别完成。可以简单地看到路由器正在执行我在上面的“ IP地址和MAC地址如何一起工作?”部分中描述的操作。路由器将接收其自己的MAC地址但其他IP地址的数据包。然后,他将检查他是否可以直接到达目标IP地址。如果是这样,他将数据包发送到目标。否则,路由器本身也会配置一个上游路由器,并将数据包发送到该路由器。

当然,您可以配置多个路由器。您的家庭路由器将仅配置一个上游路由器,但是在Internet主干中,大型路由器具有大型路由表,因此它们知道所有数据包的最佳方法。

MAC地址的其他用例


网络交换机存储在每个端口上看到的MAC地址列表,并且仅将数据包转发到需要查看数据包的端口。
无线接入点通常使用MAC地址进行访问控制。它们仅允许使用正确的口令访问已知设备(MAC地址是唯一的并标识设备)。
DHCP服务器使用MAC地址来标识设备并为某些设备提供固定的IP地址。


评论


+1:以尚未知道答案的人可以理解的方式实际回答问题。

–蓬松
13年7月24日在17:51

我忍不住想要以某种方式创建出色的信息图/图表的渴望,MAC / IP交互的方式非常有趣!

– NRGdallas
13年7月24日在21:56

不错的答案只是一个细节:MAC地址也用于非以太网设备,您描述的是IP堆栈所使用的任何数据链路层的基本保存方式

– kriss
13年7月25日在4:23

值得一提的是Wi-Fi MAC:虽然它们通常是唯一的,可以用来识别设备,但它们很容易被欺骗并以无线方式清晰地发送出去。如果连接上没有使用其他加密/身份验证,或者其他加密/身份验证机制较弱(例如:​​WEP),那么攻击者冒充授权设备并加入网络非常简单。

– Iszi
2013年9月4日20:50

@Rick是的,连接的目标IP不会更改。但是在引用的段落中,我谈论的是数据包的直接目的地-可能是路由器,并且路由器在连接期间可能会更改。关于您的第二条评论,我将文本更改为“ ARP数据包的源MAC地址”。我希望这一点更加清楚。

–温纳·亨泽(Werner Henze)
19年7月15日在9:01

#3 楼

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

这里是组织唯一标识符的列表:Standards.ieee.org

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

一些知名制造商的示例:


00-05-5D(D-Link Systems Inc.)
00-09-5B (Netgear Inc.)
00-E0-4C(Realtek Semiconductor Corp.)
00-E0-4F(Cisco Systems Inc.)
00-E0-64(Samsung Electronics)

最后3个字节(3个字节)由制造商随机分配。正如pjc50正确说明的那样,以太网中的MAC地址可以帮助交换机确定将哪个数据包发送到哪里。还有一个广播MAC地址。 ff:ff:ff:ff:ff:ff:ff用于广播MAC地址。请注意,可以更改MAC地址,因此请小心使用它作为确定的设备标识符! MAC地址也与ARP(地址解析协议)协议一起使用。所以它是如何工作的,PC A用它自己的IP地址,MAC地址,接收方的IP地址和上面提到的广播地址向PC B发送ARP请求(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网络
FDDI
ATM(仅交换虚拟连接,作为NSAP地址的一部分)
光纤通道和串行连接的SCSI(作为世界的一部分)宽名)


评论


比“每个设备(...)具有MAC地址。”更准确地讲,每个NIC都有一个MAC地址。 (不考虑设置自定义MAC地址的能力。)并非所有打印机都内置了网卡,并且许多服务器具有多个网卡,因此具有多个MAC地址。

–用户
13年7月24日在9:53



假设PC-1将数据包发送到PC-2。现在,交换机仅读取PC-1的MAC地址并将其保存到表中。如果您需要有关其工作原理的更多信息,请阅读:LAN交换机的工作原理:)

–迈因杰斯
13年7月24日在10:08



另一个要点是MAC地址是NIC决定丢弃什么以及将什么发送到处理器进行处理的方式。线路上遇到的以太网帧将其目标MAC地址与NIC MAC地址进行XOR运算,如果结果全为0,则该帧为该NIC专用。

–花花公子
13年7月24日在12:20

-1:问题问如何使用MAC地址,而不是MAC地址是什么。您的答案中唯一可以解决该问题的部分是最后的项目符号列表,并且没有太多细节。

–凯文
2013年7月24日15:23



图片来自维基百科:en.wikipedia.org/wiki/File:MAC-48_Address.svg,使用知识共享许可的图片在使用时必须归其作者所有。

–Étienne
13年7月24日在21:27

#4 楼

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

评论


有趣的是,以太网最初是一种总线介质,所有计算机在物理上共享同一介质(对于无线网络来说仍然如此)。因此,从逻辑上讲,它就像那样。

–LawrenceC
13年7月24日在11:29

对于仍然使用集线器的网络仍然适用:)

– Doon
13年7月24日在18:00

从那时起,交换机只是一种设施(通过RJ-45 LAN变得真正广泛传播),我们可以并且确实拥有没有它们的IP网络(使用集线器或802.11)

– kriss
13年7月25日在4:30

#5 楼

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

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

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

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

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

#6 楼

以太网假定要与之通信的另一台计算机(另一台MAC)可从其网络适配器中直接访问。 IP没有。 IP假定它可以访问整个世界上的任何其他IP,并且即使在NAT的情况下,如果它不能在当前子网中访问它,则路由器将在该子网中进行传输。网关的概念在第2层或以太网中不存在。

如果您有多台机器连接到交换机,并且永远不需要通过路由器与其他网络/ Internet进行流量交换,那么您真的不需要IP和运行。当然,应用程序必须在第2层之上实现或提供其自己的协议,因为几乎所有的OS和应用程序都假定您始终想使用TCP / IP。

永远记住IP中的“互联网”是指“互连网络”,这实际上意味着它比在网络中更多地在网络之间获取流量,尽管显然它也可以(并且)用于此。

评论


第一段是完美的答案!照亮!

–Milind R
15年5月2日在20:05

#7 楼

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

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

MAC地址中也包含有关制造商的信息。

评论


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

–LawrenceC
13年7月24日在11:21

#8 楼

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

评论


这非常接近,但并未涵盖所有用法。这就是MAC与TCP / IP的联系方式,但是MAC的用途远不止于此。这是我没有给-1的第一个答案(从页面底部向上开始)。

–马克·亨德森(Mark Henderson)
13年7月25日在0:38

@Mark Henderson感谢您的批评。好吧,我只是想回答这个问题:如何在分组传输中使用MAC地址,然后我假设它在以太网级别。是的,这是一个简单的答案,但我的回答水平适合我自己的水平:)

–贾斯珀·詹森(Jesper Jensen)
13年7月25日在11:54



#9 楼

为了完成其他人的答案,我要补充说,MAC地址对于路由器比对交换机更为关键。更关键的是,交换机对于IP网络的存在并不是真正必要的。在向后看20年之前(在RJ-45之前),本地IP网络可以完美地运行而无需交换机。非路由以太网网络只是将设备连接在同一条线上(例如,使用X base-T以太网技术)。

另一方面,发明了IP网络来支持路由并依赖于MAC和IP寻址方案。

IP网络中的路由数据包意味着当目标计算机无法访问时直接访问它将首先发送到更接近最终IP目标的另一台计算机(网关)。

就网络数据包头而言,这意味着发送到网关的数据包将具有在以太网级别标头中将网关的MAC地址作为目标,而IP级别标头则保持不变。

您还应该注意到,MAC地址如今通常表示MAC-48(物理设备地址)或EUI -48(逻辑设备地址),甚至是大型网络中使用的8字节EUI-64地址。 MAC过去是Xerox发明的,用于以太网技术,后来又用于需要识别设备的其他网络传输技术(802.11,蓝牙,光纤通道,蓝牙)。

我说过,您可以使用第二层而不是以太网,但是大多数使用MAC地址作为网络标识符,并且底层的MAC / IP对应方案仍然有效,您仍然可以使用ARP。据我所知,所有IP堆栈都依赖于MAC地址和IP地址之间的对应表。

非IP堆栈还存在其他一些类型的设备节点标识符。例如,X.25不依赖于MAC地址,而是依赖于基于每个连接建立的虚拟信道,或者ATM设备使用SNPA在ATM网络中进行标识。但是X.25或ATM都不是IP堆栈(甚至ATM都将MAC地址格式用作其SNA的一部分,大致相当于ATM的IP地址)。

评论


路由器不在乎MAC地址。他们确实关心至少两个NIC中每个子网的子网分配,但实际上并不关心MAC地址。它们将流量从一个IP转发(即复制)到另一个IP,而不是从IP转发到MAC或类似的东西。

–LawrenceC
13年7月24日在11:19

@ultrasawblade,您的说法很荒谬。如果路由器连接到以太网,则它必须使用以太网协议进行通信。 IP数据包将封装在以太网帧中。这意味着绝对需要知道所有“直接以太网主机”系统的mac地址。第3层设备不仅神奇地仅在第3层协议上进行通信,它还必须将第3层协议封装在第2层协议中,然后再通过第1层介质进行传输。

– Zoredache
13年7月24日在23:34



我不同意您的第一句话-它们对路由器的要求比对交换机的要求“严格”-在整个以太网网络中它们的重要性同等。

–马克·亨德森(Mark Henderson)
13年7月25日在0:34

您可以用完全不同的东西(尽管我不知道是什么)替换底层2,并且IP仍然可以正常工作。 IP协议(第3层)并不关心单个主机是通过MAC还是其他方案在下面寻址。当然,需要维护IP到MAC的映射-但是很难知道ARP是“属于”第3层还是第2层。关键是第2层协议不必是以太网,而IP不在乎/需要知道第2层协议是什么。

–LawrenceC
13年7月25日在2:43

@马克·亨德森(Mark Henderson):我年纪大了,记得有段时间没有任何开关。它们并不是IP网络无需交换机即可工作的关键设备。交换机仅使用预先存在的数据网络布局。 RJ点对点技术取代旧总线的结果是,如果我们目前普遍使用它们的话。换句话说:并不是为了使交换机工作而发明MAC地址。另一方面,出于路由目的发明了IP网络,因此MAC与IP的关系至关重要。

– kriss
13年7月25日在4:41

#10 楼

回想一下切换前的日子(集线器)。

如果人是计算机,那么MAC地址就是他们的名字。

假装很多人(计算机)是在同一通电话上。每个人都在同一时间讲话。

(一台计算机)您会听到所有的聊天记录,但是您不知道应该听什么,除非有人在以下位置说出您的名字(您的MAC地址)句子的开头(数据包)。

"FRED, THERE IS ICE CREAM!"

当然,您还可以收听发送到广播地址的句子。只要认为自己是个大喊大叫的人,

"EVERYONE, THERE IS ICE CREAM!"

随着越来越多的人(计算机)参加电话会议,您需要过滤的内容也就越多。先进的技术和先进的开关技术使我们可以直接与一个人(计算机/ MAC)进行对话,从而使他们不必费劲地过滤掉所有噪音(并释放更多带宽)。

IP在基本的类比中非常相似,但是它在MAC寻址之上具有更多的功能和层。 OSI模型中的第2层和第3层。

评论


您无需回想预先转换的日子。 MAC地址仍然有效,并且可以立即用于当前离开您的以太网适配器的每个数据包中。

–马克·亨德森(Mark Henderson)
13年7月25日在0:33

非常真实但这有助于类比。 NIC的行为仍然相同。

–兰迪·詹姆斯(Randy James)
13年7月25日在13:20

#11 楼

MAC地址是必需的,因为有多个地址连接到“总线”(以太网)。发送者需要能够识别接收者,并向接收者识别自己。

所有硬件总线都需要寻址,因为多个发送者和接收者共享同一条线,并且消息必须发送到

I2C,PCI,以太网,请给它命名。

我们在互联网络中有多个地址(IP地址和硬件地址) ),因为硬件级地址仅位于特定物理网络的本地。当数据报在网络之间传播时,它倾向于保留其网络级地址,但是在此过程中它会多次更改硬件地址。通过某些网络时,它可能根本没有硬件地址,而在另一些网络中,它可能具有不是以太网MAC的硬件地址。 (当然,网络地址可以由NAT网关重写,但是每次数据包通过路由器时,硬件地址都会被剥离并替换为不同的地址。)

#12 楼

在过去,网络是共享总线。每个联网的设备连接到同一根电线或集线器,这意味着您发送的每个数据包都被网络上的每个设备接收。

联网软件比那时更简单。每个设备都有一个MAC地址,该地址保证是唯一的。不需要其他任何操作-它所做的就是确保同一网络上没有两个设备具有相同的地址。

如果您的设备想与另一台设备通话,它将发送出去带有接收者的MAC地址的数据包,接收者将把它从网络上摘下来。所有其他设备都会忽略它-它没有寻址到其MAC地址。

随着时间的流逝,人们将太多设备连接到网络,他们无法跟上通信量,因此他们开始分离网络,并将两个带有交换机的网络连接起来。这些交换机有巨大的表,告诉他们每个网络上的哪个MAC地址。如果他们在一个网络上看到一个发往另一个网络的MAC地址的数据包,则他们会将消息复制到另一个网络。但是,他们不会复制所有消息,而仅复制需要发送到另一个网络的消息。

这减少了拥塞,并允许更多设备联网,并且可以处理更多总流量。这是一个分组交换网络。

但是,它不能解决所有问题,并且存在一个巨大的缺点-随着交换表的增加,网络速度变慢。如果将5,000台计算机连接到均与交换机互连的50个不同的网络,则每个交换机必须学习所有5,000个MAC地址并根据该路由来路由数据包。

直到来自不同机构(如大学)的人们想要将他们的网络连接在一起,这并没有什么大不了的,而所需的表却非常庞大。如今,跟踪数十万个MAC地址似乎并不重要,但是在1970年代,交换机是计算机本身,内存和速度有限,并且跟踪并快速交换了几个数据包。一百是个问题。

解决方案是使用IP网络并使用路由器。这是建立在基于MAC地址的交换式分组网络之上的。数据包现在包含IP数据包-数据包中的一个数据包,而不是原始数据。

现在较大的网络已与路由器连接。他们等到看到带有其MAC地址的数据包,然后将IP数据包取出并检查IP地址。然后,他们将IP数据包重新包装到另一个具有新MAC地址接收者的数据包中,并将其发送到新的网络上。该MAC地址可能是到新网络上的另一个路由器的,但也可能是具有IP地址的机器。

我的机器具有各种算法和协议,因此它知道如何建立网络。

我的机器直接连接到交换机,它们又连接到路由器。 br />
如果我将IP数据包发送到本地网络上的计算机,则我的计算机会将其放入具有正确MAC地址的数据包中。交换机会将其本地切换到正确的网络,并且由于该机器具有正确的MAC地址,因此该机器将被接收到。他们将取出IP数据包,并再次检查IP地址是否也适合该IP地址,并采取相应的措施。

如果我发送了用于互联网其他地方的机器的IP数据包,则我的机器知道将其发送到路由器,因此将其放入带有路由器MAC地址的数据包中。它将再次在我的网络中本地交换,直到它碰到路由器所在的网络,然后路由器将其接收,拉出IP数据包,检查该IP数据包,并根据其对Internet的了解,将其发送到另一台路由器上另一个网络,将其包装在带有目标路由器或目标计算机的MAC地址的数据包中。

我已经掩盖了很多小细节,并且正在发挥一些真正有趣的算法和协议可以使一切正常运行,但这就是MAC地址为我们所做的基本故事,即使在今天也是如此。

评论


您起步很好,但是在谈论互连网络的中间就迷失了。直到90年代,交换机才开始普及,但在20年前就存在路由。

–马克·亨德森(Mark Henderson)
13年7月25日在0:27

#13 楼

根本区别在于,MAC是由制造商在制造时分配的,而IP地址是在连接时分配的。

MAC是必需的,因为它可以用于在连接到网络之前识别设备;但是,由于它是静态分配的,因此几乎是随机分布的,因此它不适合通过单个网络进行有效的路由(这样做将要求地球上的每个设备都具有一个指向地球上所有其他设备的巨大路由表)。因此,IP地址是必需的,因为它是在连接时分配的,并且IP地址的分配方式允许更有效的长距离路由(使用IP,大多数设备只需要知道其相邻网络)。

只是IP地址,那么尚未分配IP地址的设备将无法分辨出是给他们的消息。您如何确定此DHCP是给您的,而不是其他人大约在同一时间也请求地址分配?

当然,MAC也用于数据包发送的其他部分,但是大多数使用几乎是偶然的,并且(至少在理论上)可以由动态分配的数字(例如IP地址)代替。

评论


+1为何我们不仅仅继续使用MAC地址。

–deed02392
13年7月24日在16:17

第一段在技术上是正确的,但这不是根本的区别。根本区别在于MAC属于以太网,而IP属于TCP / IP。您可以在多个第2层协议(例如ATM)上运行TCP / IP,而不仅仅是在Etherhet上运行的TCP / IP。没有“连接到网络之前”之类的东西,但是有“从DHCP获取IP地址之前”之类的东西。但是此后MAC仍然被使用-因为它位于OSI模型中的另一层。最后一段是完全错误的-网络中没有MAC地址的替代品。

–马克·亨德森(Mark Henderson)
13年7月25日在0:32

@MarkHenderson:我的观点是,属于以太网的MAC和属于TCP / IP的IP几乎是历史性的事故;从理论上讲,如果我们从头开始重新设计整个互联网堆栈(并忽略OSI和与其他网络的兼容性),则可以用动态分配的号码(例如IP)代替大多数工厂分配的号码(例如MAC)使用,在获取动态分配的编号之前,有许多数据包需要发送/接收,这就是为什么需要工厂分配的全局唯一标识符的原因。

– Lie Ryan
13年7月25日在0:54



@MarkHenderson:IMO,说我们需要MAC和IP,因为MAC是第2层,而IP是第3层,就像在说“我们需要它,因为我们已经设计了那样的互联网”一样,它忽略了要点,并且没有提供有用的信息任何。在这里我要回答的是为什么由于问题的性质而必须同时分配工厂分配的标识符和动态分配的标识符,以及从Internet堆栈中都没有这两个原因(没有动态分配的ID的路由效率的损失和实现的难度)。在动态ID分配之前(对于没有工厂分配的ID)唯一地寻址设备)。

– Lie Ryan
2013年7月25日在1:07



@LieRyan,实际上我们可以更改PC的MAC地址...。

–起搏器
2015年4月6日15:52