题 为什么不能使用MAC地址代替IPv4 | 6进行网络连接? [关闭]


我正在阅读TCP / IP和其他相关协议和技术。 MAC地址被描述为(合理地)唯一,并且具有大的可能性空间(几百万亿),同时也被分配给所有网络接口。使用IPv4或IPv6地址而不是MAC地址进行互联网通信的历史和技术原因是什么?

我错过了一些基本的东西,还是只是一个愚蠢的理由(例如建立在传统技术之上)?


181
2017-07-24 12:51




迂腐纠正: 合理 独特;已经在野外看到了具有相同硬件MAC地址的卡 - 这是一个调试的“有趣”网络问题。 - Piskvor
我亲眼目睹了一辆真正的越野车司机 分配 相同的MAC地址到不同机器上的不同网卡(在安装该驱动程序之前具有唯一的HW地址)。嗯,就是这样 痛苦。 - Massimo
马西莫,我看到了完全相同的事情。对于驱动程序来说,在开发过程中执行此操作并且程序员忘记在生产时将其转换为该组件并不罕见。 @Felix,制造商通常会在一段时间内和世界不同地区重复使用MAC。例如,2005年在美国销售的卡可能具有与2013年在中国销售的卡相同的MAC。 - Robert Kaucher
使用MAC地址寻址数据包就像处理带有社会安全号码的信件一样。 - Mikey
你好吗? 知道 现在哪个特定的MAC地址?提前,无需在移动到另一个网络时通知互联网上的每个节点? - Thorbjørn Ravn Andersen


答案:


MAC地址可能是唯一的,但是没有什么特别的数字可以指示它的位置。苹果电脑 00-00-00-00-00-00 可能在地球的另一边 00-00-00-00-00-01

IP是在一组计算机上以分层方式强加的任意编号方案,以逻辑方式将它们区分为一个组(这就是子网)。在这些组之间发送消息是通过路由表完成的,路由表本身分为多个级别,因此我们不必跟踪每个子网。例如, 17.x.x.x 在Apple网络内。从那里,Apple将知道它的每个数千个子网的位置以及如何到达它们(没有其他人需要知道这些信息,他们只需要知道那些东西是苹果公司的东西。)

将它与另一对系统联系起来也很容易。您有一个州颁发的身份证号码,为什么您需要一个邮寄地址,如果该身份证号码已经是您唯一的?您需要邮寄地址,因为它是一个任意系统,描述了与您通信的唯一目的地应该去哪里。


341
2017-07-24 12:56



这是一个很好的答案。我想补充一点,一旦计算机确定它们位于同一个子网上,MAC地址最终将用于IP通信;这就是ARP中毒作为攻击的原因。与默认网关相同的是,计算机将发往另一个子网的数据包发送到由默认网关IP的ARP查找返回的MAC地址。第3层/ IP寻址主要由路由器使用,仅供主机使用以确定目标是否在同一子网上。 - Sean C.
@SeanC,MAC地址最终用于基于802.1的线路协议(以太网,WiFi,令牌环等)的IP通信。但不是通过ATM协议,如PoSDH和IPoATM。 - Chris S
此外,当您的网卡(或整个计算机)需要更换时,您可以保留相同的IP地址。想象一下,如果没有IP抽象,它会有多烦人。 - OrangeDog
@ChrisS我有一个朋友,作为系统管理员,从一个供应商那里收到了一批卡,而且这些卡在整个调色板中只有一个MAC地址。该供应商表示,这些卡片没有正确地混合到零售分销中,因此订单是重复的,因为订单是从工厂直接下降的。在卡片进入零售分销之前,它们应该混合在一起以传播欺骗。因此,对于给定的供应商,MAC收件人不是唯一的,更不用说供应商。 - Jarrod Roberson
重复的mac-address出现有多种历史原因 包括供应商固件错误。 - Mike Pennington


因为路由表变得不可能大。

IP地址是分层分配的,因此路由器可以按地址前缀对路由进行分组。现在网上的自治系统数量足够合理,可以适应当今的硬件。

另一方面,跨网络的MAC地址的分配是随机的并且与拓扑完全无关。路由分组是不可能的,每个路由器都需要跟踪每个通过它传输流量的设备的路由。这就是第2层交换机所做的事情,并且这不会超出一定数量的主机。


73
2017-07-24 12:52



你能详细说明一下吗?他们为什么?为什么不是IPv *的情况? - Félix Saparelli
与IPv4 / 6格式相比,使用MAC格式地址的路由器表没有“不可能大”的内在原因。问题在于IP地址的分配与使WAN路由可行的层次结构相关联。 MAC地址由制造商分配给以太网设备(并且可以在软件中更改),并且随着硬件设备的移动,对WAN路由表的这些临时修订将是“不可能的大”任务。 - hardmath


世界并不仅仅在以太网上运行(至少在历史上)。 IP层独立于其下的硬件层。

PPP节点没有Mac地址。 arcnet,令牌环,fddi,hppi都没有。那些其他标准今天可能不那么相关,但以太网可能会在未来被其他技术取代,而且对IP层也是透明的。

关于我们如何继续发明新的硬件协议并将其称为以太网,我们有更长的讨论,但我离题了......


36
2017-07-24 16:03



令牌环确实有MAC地址。 - Chris S
你的意思是他们不能切换到ipv6因为PPP节点没有v6地址? (或者至少5 - 10年前没有一个)。据我所知,今天从未停止过部署ipv6。这对MAC也没有影响。 - Dorus
@Dorus:你的评论没有意义。 PPP节点可以同时具有IPv4和IPv6地址,正是因为基础协议上的IP构建,例如以太网或PPP。但是,PPP节点没有MAC地址(因为PPP标准没有它们)。 - sleske
3年后(并且知识更多),我希望阅读“关于我们如何继续发明新硬件协议并将其称为以太网的更长时间的讨论”。 ,P - Félix Saparelli
这是一个好的开始 - standards.ieee.org/events/ethernet/history.html - Jeff Sacksteder


除了IP的分层路由之外,将它们与MAC地址分开允许您在保留相同IP地址(以及逻辑网络拓扑)的同时更改网卡或整个计算机。

这种抽象允许更灵活和可维护的网络。


30
2017-07-24 14:46





看看吧 OSI模型http://en.wikipedia.org/wiki/OSI_model

这解释了为什么使路由成为第3层概念,基于物理层2机制的决策没有意义。

现代网络分为许多不同的层,以实现您的端到端通信。您的网卡(由mac地址[物理地址]解决的内容)只需负责与其物理网络上的对等方通信。

您可以通过MAC地址完成的通信仅限于与您的计算机物理联系的其他设备。例如,在互联网上,您没有物理连接到每台机器。这就是为什么当我们需要与我们没有物理连接的机器通信时,我们使用TCP / IP(第3层,逻辑地址)机制。


22
2017-07-24 15:37



提及OSI模型的+1。 - Massimo


b0fh是对的 - 但也因为MAC地址并不总是唯一的。

例如,请参阅虚拟化方案。这里,多个主机可以为具有相同MAC地址的虚拟机提供服务。


8
2017-07-24 12:54





MAC地址的路由表几乎需要列出MAC地址的每个设备。为IP路由到Internet是单个条目0.0.0.0/0。对于网络类,它们分为10.0.0.0/8 172.16.0.0/16和192.168.0.0/24。其中许多可以像172.16.0.0/12和192.168.0.0/16那样进行聚合,从而进一步减少了路由表的大小。

以相反的顺序搜索路由到掩码中的一位数。这样,当路由为192.168.0.0/16而另一路由为0.0.0.0/0(默认路由)时,路由到192.168.100.0/24。

编辑:最初,IP范围分为几类; A,B和C是最重要的。 A类构成地址范围的前半部分,B范围构成下一个季度,C范围构成下一个8的范围。这些类分别具有8,16和24位的掩码。后来,这些掩模的严格使用被删除,地址分配以各种尺寸进行。

分配的大小始终是2的幂,并且保留每个分配中的最低和最高地址。每个分配还将具有路由器的地址。这通常是最低或最高的非保留地址。最小的实际分配是/ 30地址。

IPv6使用相同的分配形式,其中/ 64是可以出现在Internet上的最小分配。通常,ISP将获得更大的分配,这是互联网路由器需要了解的所有内容。预期分配在RFC中指定。 ISP需要知道如何路由自己的子网,以及路由到哪些互连路由器的地址。这比知道如何路由每个mac地址要简单得多。


4
2017-07-24 13:38



没有 类 在网络中,自1994年以来一直没有。= [ - Chris S
@ChrisS IPv4 PTR查找仍然由类完成,尽管可以进行委派。无论是否有类,聚合仍然适用,即使在无类网络之前,B和C聚合仍然适用。 - BillThor
PTR查找由Octet完成,没有类。请参阅RFC 1517至1520。 - Chris S
@ChrisS在我工作的人中,这些类用于指代网络掩码A = 1,B = 2和C = 3中的八位字节数。我们不将它们与历史范围相关联,并将A类10.0.0.0分解为B和C块。如果不是它们的原始含义,那些课程仍然存在于传统中。 - BillThor


我认为他们试图解决的主要问题是MAC地址是由供应商决定的,因此由于制造接口的制造商种类繁多,因此没有可以在本地子网中遵守的连贯寻址方案。

目标地址位于本地子网(例如,192.168.0.x)时使用MAC地址。当流量与本地子网不匹配时,计算机会引用路由表。通常,路由表将告知与本地子网(0.0.0.0)不匹配的任何流量到达本地网关,此时将完全剥离与MAC地址的任何从属关系。 MAC地址可以在全球范围内使用的唯一方法是拥有一个巨大的扁平子网,这完全是不可行的。


2
2017-07-24 13:25