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

我错过了一些基本知识还是仅仅是愚蠢的原因(例如,在传统技术之上构建) )?

评论

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

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

Massimo,我已经看到了完全一样的东西。对于驾驶员来说,在开发中做到这一点并不罕见,而程序员却忘记了在生产时才使用该组件。 @Felix,随着时间的推移以及在世界的不同地区,制造商重用MAC也很普遍。例如,2005年在美国销售的卡可能具有与2013年在中国销售的卡相同的MAC。

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

您怎么知道特定的MAC地址现在在哪里?预先,无需在移动到另一个网络时通知Internet上的每个节点?

#1 楼

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

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

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

评论


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

– Sean C.
2012年7月24日13:38



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

–克里斯S
2012年7月24日14:06

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

–橙色狗
2012年7月24日14:10

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

–user35861
2012年7月24日15:09



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

–迈克·彭宁顿
2012年7月24日15:54



#2 楼

由于路由表将变得非常大。

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

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

评论


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

–FélixSaparelli
2012年7月24日12:53

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

– Hardmath
2012年7月24日14:41

#3 楼

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

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

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

评论


令牌环确实具有MAC地址。

–克里斯S
2012年7月24日17:22

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

– Dorus
2012年7月25日21:00

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

–sleske
2012年7月26日在7:30

3年了(并且更加了解),我很想读“关于我们如何继续发明新的硬件协议并将其称为以太网的更长时间的讨论”。 ; P

–FélixSaparelli
2015年12月20日在8:47

这是一个好的开始-standards.ieee.org/events/ethernet/history.html

– Jeff Sacksteder
16年1月25日,下午1:52

#4 楼

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

此抽象允许更灵活,可维护的网络。

#5 楼

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

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

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

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

评论


+1表示OSI模型。

–马西莫
2012年7月24日在17:35

#6 楼

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

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

#7 楼

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地址要简单得多。

评论


自1994年以来,就不再有网络方面的课程了。

–克里斯S
2012年7月24日13:51

尽管可以委托,但仍按类完成@ChrisS IPv4 PTR查找。聚合仍然可以在有或没有类的情况下应用,并且B和C聚合甚至在无类网络之前也适用。

–BillThor
2012年7月25日在2:37



PTR查找由Octet完成,没有任何类。请参阅RFC 1517至1520。

–克里斯S
2012年7月26日在1:27



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

–BillThor
2012年7月26日在3:16



#8 楼

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

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

#9 楼

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

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

#10 楼

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

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

#11 楼

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

#12 楼

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

评论


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

–克里斯S
2012年7月25日在23:12

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

– Nikola Knezevic
2012年8月15日在9:23

#13 楼

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

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

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

,就我所知,至少。

IP地址旨在扩展很多更普遍地解决另一个问题。

评论


MAC地址必须是唯一的-并非总是像其他人所指出的那样发生,但这是必需的。制造商可以获得多个供应商ID。大约有400万个可能的供应商ID(在MAC48地址空间中,还有一个即将到来的MAC64地址空间),并且分配的数量不到十分之一。每个供应商ID中都有1600万个设备ID,即使是大型供应商也要花费一段时间。

–克里斯S
2012年7月26日在1:20