draveness / blog-comments

面向信仰编程
https://draveness.me
140 stars 6 forks source link

为什么 MAC 地址不需要全球唯一 - 面向信仰编程 · /whys-the-design-non-unique-mac-address #203

Closed draveness closed 2 years ago

draveness commented 4 years ago

https://draveness.me/whys-the-design-non-unique-mac-address/

leafduo commented 4 years ago

我们来看一个广泛使用的案例,IP over Avian Carriers https://tools.ietf.org/html/rfc1149

这个协议里面就没有 MAC 地址嘛,所以跳出 802 协议族就发现 IP 和 MAC 地址的关系挺灵活的,至于为什么这么设计,应该还是为了分层、灵活吧

ahonn commented 4 years ago

保证 MAC 地址在局域网中唯一就会造成网络问题,不同局域网中的 MAC 地址可以相同

这里应该是「保证 MAC 地址在局域网中唯一就不会造成网络问题」吧?


2020-04-30 UPDATES: 已修复

draveness commented 4 years ago

保证 MAC 地址在局域网中唯一就会造成网络问题,不同局域网中的 MAC 地址可以相同

这里应该是「保证 MAC 地址在局域网中唯一就不会造成网络问题」吧?

是的,我来修复一下

zhubo006 commented 4 years ago

MAC 地址和 IP 地址之间有什么样的关系?

1个 MAC 可以对应 N 个 IP;1个 IP 只能对应1个 MAC(借助负载均衡设备除外);

为什么我们有了 MAC 地址还需要 IP 地址?

为了实现网络分层,松耦合。

yuyongID commented 4 years ago

忽然想到一个方向,IP 和 MAC 并不是一定要结对存在或者使用的。像是移动网络和各种隧道技术都只需要 IP 就可以定位到端上,无需存在一个 MAC 地址。不过当然其实也是需要有硬件地址一类的东西。所以,我觉得如果只讨论 MAC 地址和 IP 地址关系的话,应该是讨论以太网的环境才会有的议题。

yuanchieh-cheng commented 4 years ago

感謝博主系列精彩好文

为什么我们有了 MAC 地址还需要 IP 地址?

是否因為是 IP 對應的可能是遠端非相鄰主機,當封包要傳遞時需要多次 hop,而 MAC 地址 (或是說鏈路層) 是為了實踐傳遞封包給相鄰主機並持續轉發,直到抵達目標 IP 為止

renyuan431 commented 4 years ago

为什么我们有了 MAC 地址还需要 IP 地址? 这是下一篇博文的预告嘛,期待~

NeoTse commented 4 years ago

MAC 地址和 IP 地址之间关系应该只有在IEEE 802协议簇中才有意义。由于 IP 本身分配可灵活变更,这样 MAC 和 IP 可以多对多。在特定时间一定区域范围内, MAC 与 IP 之间是一对多的关系

不直接使用 MAC 地址而使用 IP 地址作为互联网地址标识:一个主要原因是 IP 地址组织和分配是分层的(比如 A/B/C/D 类网和 CIDR),这些可以帮助 IP 能够实现高效的路由,而 MAC 地址的分配粒度比较粗,基本上是随机分配,这样路由表维护成本就很大,效率很低。另外 IP 可以灵活配置而不需要和具体的硬件设备和链路层协议绑定,这样可以实现底层不同标准规范的网络互连互通

cnych commented 4 years ago

比如我要从成都(源IP)到达北京(目的IP),是不能直接就到达的,中间可能需要通过步行 -> 地铁 -> 机场/火车站 -> 到达北京这样的路径来完成,这个一步一步的过程源 MAC 地址到目的 MAC 地址在变换,但是源 IP 和目的 IP 始终是固定的。。。

draveness commented 4 years ago

比如我要从成都(源IP)到达北京(目的IP),是不能直接就到达的,中间可能需要通过步行 -> 地铁 -> 机场/火车站 -> 到达北京这样的路径来完成,这个一步一步的过程源 MAC 地址到目的 MAC 地址在变换,但是源 IP 和目的 IP 始终是固定的。。。

你可以这么理解

cnych commented 4 years ago

@draveness

比如我要从成都(源IP)到达北京(目的IP),是不能直接就到达的,中间可能需要通过步行 -> 地铁 -> 机场/火车站 -> 到达北京这样的路径来完成,这个一步一步的过程源 MAC 地址到目的 MAC 地址在变换,但是源 IP 和目的 IP 始终是固定的。。。

你可以这么理解

刚看到后面的文章大佬说尽量不要使用类比......

Derkin commented 4 years ago

原来网络是逐跳的,下一跳和分层解耦是mac地址和ip地址设计的意义 https://www.zhihu.com/question/21546408

mrdear commented 4 years ago

有了MAC地址后,数据链路层的投递是精准投递到对应机器的吗?还是说数据包也是类似于广播,对应机器接收到后,看下ip以及mac是不是自己,如果是自己就接收,如果不是就忽略。

这一块有点晕,不太清楚。 我个人的理解是即使有MAC地址,数据包也是类似广播的投递,加入交换机后,因为能够记住MAC与端口对应关系,会减少这种广播带来的拥塞。

draveness commented 4 years ago

有了MAC地址后,数据链路层的投递是精准投递到对应机器的吗?还是说数据包也是类似于广播,对应机器接收到后,看下ip以及mac是不是自己,如果是自己就接收,如果不是就忽略。

这一块有点晕,不太清楚。 我个人的理解是即使有MAC地址,数据包也是类似广播的投递,加入交换机后,因为能够记住MAC与端口对应关系,会减少这种广播带来的拥塞。

你理解的没啥问题

robertu7 commented 3 years ago

寫得很棒。一個細節,標題大小寫(Mac -> MAC)建議修正。


2020-10-19 UPDATES:已修复

CNife commented 3 years ago

跟IPv4地址比起来,MAC地址最初设计时就预留了48位的空间,可以说是相当有远见了。