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


184

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

我是否错过了一些根本性的东西,或者仅仅是一个愚蠢的原因(例如,在传统技术之上构建)?


55
小腿矫正:合理独特;在野外发现了具有相同硬件MAC地址的网卡-这是要调试的“有趣”网络问题。
Piskvor

9
我亲眼目睹了一个错误的驱动程序,该驱动程序实际上将相同的MAC地址分配给了不同机器上的不同网卡(在安装该驱动程序之前具有唯一的硬件地址)。好吧,那很痛苦
马西莫

3
Massimo,我已经看到了完全一样的东西。对于驾驶员来说,在开发中做到这一点并不罕见,而程序员却忘了在产品投入生产时就将其转向。@Felix,随着时间的推移以及在世界的不同地区,制造商重用MAC也很普遍。例如,2005年在美国销售的卡可能具有与2013年在中国销售的卡相同的MAC。
罗伯特·考彻

30
用MAC地址寻址数据包就像用社会安全号码寻址字母。
Mikey

14
怎么知道特定的MAC地址现在在哪里?预先,在移到另一个网络时无需通知Internet上的每个节点吗?
托尔比约恩Ravn的安徒生

Answers:


345

MAC地址可能是唯一的,但是没有什么特别的数字可以表明它在哪里。MAC 00-00-00-00-00-00可能位于地球的另一侧00-00-00-00-00-01

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

将此与另一对系统关联也很容易。您有国家发行的ID号,如果该ID号对您来说已经唯一,为什么还要一个邮寄地址?您需要邮寄地址,因为它是一个任意系统,用于描述与您进行通信的唯一目的地应该到达的位置。


23
这是一个很好的答案。我会补充说,一旦计算机确定MAC地址位于同一子网中,则MAC地址最终将用于IP通信。这就是为什么ARP中毒是一种攻击。与默认网关相同,计算机将发往另一个子网的数据包寻址到ARP查找针对默认网关IP返回的MAC地址。第3层/ IP寻址主要由路由器使用,并且仅由主机用于确定目标是否在同一子网中。
肖恩·C.

7
@ SeanC,MAC地址最终用于基于802.1线路协议(以太网,WiFi,令牌环等)的IP通信中。但是不能通过诸如PoSDH和IPoATM之类的ATM协议。
克里斯S

25
另外,当需要更换网卡(或整个计算机)时,可以保留相同的IP地址。想象一下,如果没有IP抽象,那会是多么烦人。
OrangeDog 2012年

3
@ChrisS我有一个朋友,作为系统管理员,他从一家供应商处收到了一批卡,而这些卡在整个选板中只有一个MAC地址。供应商说,由于订单是从工厂直接下达的,因此这些卡没有正确地混入零售发行版中,因此会出现重复。在将这些卡零售之前,应该将它们混合在一起以散布伪钞。因此,对于给定的供应商而言,MAC地址并不是唯一的,而跨供应商则更少。

4
重复出现MAC地址的历史原因有多种,包括供应商固件错误
Mike Pennington

73

因为路由表将变得非常大。

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

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


您能详细说明一下吗?他们为什么会呢?为什么IPv *不是这种情况?
费利克斯Saparelli

2
没有内在的原因,与IPv4 / 6格式相比,使用MAC格式地址的路由器表“不会太大”。问题在于IP地址的分配与使WAN路由可行的层次结构捆绑在一起。MAC地址由制造商分配给以太网设备(并且可以在软件中更改),并且随着硬件设备的移动,对WAN路由表进行这些临时修改将是“不可能的”任务。
hardmath 2012年

34

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

PPP节点没有Mac地址。arcnet,令牌环,fddi和hppi都没有。这些其他标准在今天可能不再那么重要,但是将来以太网可能会被其他技术取代,并且它将对IP层透明。

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


5
令牌环确实具有MAC地址。
克里斯·S

您的意思是他们也不能切换到ipv6,因为PPP节点没有v6地址?(或者至少没有5-10年前)。据我所知,今天从未停止过ipv6的部署。这对MAC也没有影响。
Dorus 2012年

6
@Dorus:您的评论没有道理。PPP节点可以同时具有IPv4和IPv6地址,这是因为IP建立在底层协议(例如以太网或PPP)上。但是,PPP节点没有MAC地址(因为PPP标准没有它们)。
sleske

3年过去了(并且知识更加丰富),我很想读一下“关于我们如何继续发明新的硬件协议并将其称为以太网的更长时间的讨论”。,P
费利克斯Saparelli


30

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

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


22

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

这解释了为什么没有必要进行路由,第3层概念,基于物理第2层机制的决策。

现代网络分为许多不同的层,以实现端到端的通信。您的网卡(由mac地址[physical address]寻址)仅负责与它的物理网络上的对等方通信。

允许您使用MAC地址完成的通信将仅限于与计算机进行物理接触的其他设备。例如,在Internet上,您并未物理连接到每台计算机。这就是为什么当我们需要与未物理连接的机器通信时,我们使用TCP / IP(第3层,逻辑地址)机制的原因。


6
+1代表提及OSI模型。
马西莫


4

MAC地址的路由表几乎需要列出MAC地址的每个设备。路由到Internet以获得IP是单个条目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位,16位和24位的掩码。后来放弃了对这些掩码的严格使用,并以各种大小进行了地址分配。

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

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


7
自从1994年以来,就再也没有网络课程了。= [
Chris S

尽管可以委托,但仍按类完成@ChrisS IPv4 PTR查找。聚合仍然适用于有类别或无类别,并且B和C聚合甚至在无类别网络之前仍然适用。
BillThor 2012年

2
PTR查找由Octet完成,没有任何类。参见RFC 1517至1520。–
克里斯·S

2
@ChrisS与我一起工作的人员中,这些类用于引用网络掩码A = 1,B = 2和C = 3中八位位组的数目。我们不会将它们与历史范围相关联,而是会将A类10.0.0.0分为B和C块。即使不是本来的含义,课堂也是按照传统而存在的。
BillThor 2012年

2

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

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


2

同一台计算机上的不同以太网适配器上的MAC地址可以相同。SUN对于每台机器都有一个唯一的MAC地址。因此,SUN计算机的以太网卡没有任何唯一的MAC地址,而计算机却有。

因此,当您将机器连接到两个不同的网络时,两个网络上的机器具有相同的MAC地址。


2

MAC地址是ISO / OSI模型TCP / IP模型中链路层(2n)的地址。这意味着MAC地址用于连接本地网络内的节点(点对点)。IP地址是Internet内(端到端)网络层(3rd)的地址。

这两个地址仅在其层中使用,并且不打算在其外部使用。


1

目标IP地址的MAC地址仅在单个本地广播域内对数据包传递有用。


1

这里的人们说使用MAC地址而不是IPv4地址的问题是路由,因为路由表会变得很大-但是,这是假设使用IPv4路由器的。可能会有较小的路由表,如果您对此感兴趣,请寻找Flat名称空间路由。描述该技术的论文之一就是该论文:http : //www.cs.uiuc.edu/~caesar/papers/rofl.pdf


2
ROFL建议AS内的每个路由器都跟踪该AS内的每个主机...并对主机标识符使用加密哈希...因此,不仅路由表中会存在数百万个条目,而且传输/维护要求非常苛刻,但是需要密码算法来解释该表。作者不在意。IP可能有缺点,但是至少在基本设计中没有疯狂的假设。
克里斯·S

在ROFL中,仅第一跳路由器需要保留连接的节点集,而不是AS中的所有节点。第2节提到了缓存,但这是一种优化。仅当节点加入路由器时才需要加密,而对于解释路由表则不需要。路由是在DHT上完成的,它比分层路由更具弹性。
Nikola Knezevic,2012年

1

我的记忆是MAC地址实际上是以太网地址。以太网地址分为两个部分:供应商部分-标识以太网卡的卖方和地址部分,该地址部分由供应商分配。由供应商决定是否使其具有唯一性。

因此,不能高效地使用48位MAC地址空间,也不能像上面几次提到的那样分层使用。

该地址旨在在本地CSMA网络上具有唯一的地址。

至少,我记得最好。

IP地址旨在更广泛地扩展并解决其他问题。


MAC地址必须是唯一的-它并不总是像其他人所指出的那样发生,但这是必需的。制造商可以获得多个供应商ID。大约有400万个可能的供应商ID(在MAC48地址空间中,还有一个即将到来的MAC64地址空间),并且分配的数量不到十分之一。每个供应商ID中都有1600万个设备ID,即使是大型供应商也要花费一段时间。
克里斯S
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.