其实这个疑问上学期间学习计算机网络就有了,我感觉 TCP/IP 作为数据链路层之上的协议,那 IPV4 应该是晚于 MAC 地址出现的吧,那为啥 MAC 地址一开始就被设置得这么长,足够扩展,而 IPv4 已经耗尽了呢》
1
huage 107 天前 3
IPv4 地址和 MAC 地址的耗尽问题有以下几个主要区别:
1.地址空间大小: IPv4 地址:IPv4 使用 32 位地址,这意味着最多可以提供大约 43 亿个唯一的 IP 地址。这看起来很多,但随着互联网的快速增长,这些地址很快就被分配完了。 MAC 地址:MAC 地址使用 48 位地址空间,可以提供大约 281 万亿个唯一的地址。这个数量远远超过了目前和未来可预见的网络设备数量。 2.用途和分配方式: IPv4 地址:IP 地址是全球唯一的,用于互联网设备之间的通信。随着全球联网设备的增加,尤其是物联网( IoT )设备的普及,IPv4 地址被快速消耗。 MAC 地址:MAC 地址是本地唯一的,每个网络接口卡( NIC )都有一个唯一的 MAC 地址。它们主要用于局域网( LAN )内部的通信,通常不需要全球唯一性。即使存在重叠的 MAC 地址,只要不在同一个局域网中,通常也不会引起冲突。 3.解决方案: IPv4 地址枯竭的解决方案:随着 IPv4 地址的枯竭,IPv6 被引入作为替代方案。IPv6 使用 128 位地址空间,可以提供几乎无限数量的地址,足以支持未来的互联网设备增长。 MAC 地址:由于 MAC 地址空间非常大,目前还没有出现枯竭的问题。此外,MAC 地址通常是硬件制造商分配的,而且可以根据需要生成和分配新的 MAC 地址。 因此,IPv4 地址因为地址空间相对较小和全球唯一性要求,已经面临枯竭问题,而 MAC 地址由于其巨大的地址空间和局域网络使用特性,目前并没有面临类似的耗尽问题。 |
2
WildDonkey 107 天前 2
你这个对链路层的作用不是很了解,链路层本身就是广播范围内的物理通信,不用来寻路和路由,因此只要在一个子网内没有重复就可以。你家里的 MAC 地址跟你公司的 MAC 地址完全一样也没有关系,因为互相不知道,但 IP 不一样,IP 有寻路路由功能,那么就得全网唯一标识。本质上来说这俩不是一个层,起 的作用不一样,决定了会不会耗尽问题。
|
3
cnt2ex 107 天前
生产商也是会回收重利用 MAC 地址的。并且 MAC 地址只在局域网使用,因此就算是有重复的,只要不在同个局域网就不会有影响。
|
4
tywtyw2002 107 天前 via iPhone
你仔细读读书。mac 地址在设计的时候的有效位数是多少?
ipv4 在设计的时候 最大的 a 类地址,可以保证多少位有效(一个局域网最多多少 host ) 不得不说 ipv4 的 cidr 和 nat 让 ipv4 续命了多少年,估计能续道跟 32 位 unix 时间戳一样长。 |
5
guanzhangzhang 107 天前
mac 地址是二层,基本是内网和“邻居系统”使用,不需要公网上使用
|
8
totoro625 107 天前
|
9
julyclyde 107 天前 2
其实这个疑问说明你网络课根本没学好
MAC 地址只在广播域内有效 |
10
sodesga 107 天前
mac 地址是按厂商授权的,是一种共识,而且在物理层。
混杂模式可以监听所有请求,也就是抓包的底层逻辑。 ipv4 + NAT 完全够用的,ipv6 是一种博弈,荒唐的是还有 ipv9 |
11
julyclyde 107 天前 1
@tywtyw2002 你也没读好
|
13
tywtyw2002 107 天前 via iPhone
@julyclyde mac 地址有效位数 24 位 ip a 类地址 24 位 正好一样位数 有什么问题?
mac 地址前 24 位是厂商 信息,这个不应该算在有效位数里面。(如果所以 a 类地址主机都用相同厂商的网卡) |
14
rrfeng 107 天前
上次在公司网络出了问题,排查好久发现是 IT 给的 usb-rj45 mac 和别人的冲突了……
|
15
kilotiger 107 天前
我其实一直好奇 mac 地址不会重复吗?既然是各大厂商随机分配的,那么谁知道谁用过哪个(好幼稚的提问但我就是搞不懂)
|
16
opengps 107 天前
做个简单的题目:
IPv4 总数是 256 的四次方 Mac 的总数是 ( 10 数字+26 字母)的 6 次方 |
17
tywtyw2002 107 天前 via iPhone 1
楼主别看自顶向下了,那本书没用。
网络就这几本书是经典 编程类 TCP/IP 详解 看 1 ,2 就好了 不过里面没有 quic 之类的现在协议讲解了。tcp 窗口看个大概就行了,主要三次握手。 网络类 tcpip 路由技术 偏向于网络实践,2 层三层路由协议等等。 ipv6 详解,可以看,我是没读完,只看了 ndp 那些,ipv6 下没有 arp ,用 ndp 代替 arp 了。 |
18
greygoo 107 天前 2
@opengps 不是 10 个数字+26 个字母,是 10 个数字+6 个字母,用来表示十六进制,4 位二进制。所以 mac 才是 48 位数,而 256 是 8 位二进制,ipv4 是 32 位,其实后面都是二进制,只是写法不一样
|
21
Andim 107 天前
@kilotiger 大厂都分有一个固定的区间,就连 Vmware 都有专属的 区段
00:50:56:80:00:00 - [00:50:56:3F:FF:FF] 02:50:68:00:00:02 - 02:50:68:00:00:FF |
22
cansiny0320 107 天前
@cinlen #18 前缀是谁分配的?我强行用别人的前缀会出现什么问题吗?
|
23
gdfsjunjun 107 天前
你在问 MAC 的时候就像在问内网 IP 地址就这么多,为什么没用完呢?
|
24
greygoo 107 天前
至于为什么要问 ipv4 是 32 位,mac 是 48 位,当时做些的人因为当时的原因自己选择的,现在不好用了就换一个不就行了嘛
|
25
cinlen 107 天前
@cansiny0320 大概是厂商(OUI)向权威机构(IEEE) 申请注册。
你强行用别人的大概率也没啥问题,除非你自己生产网卡并把它卖到全世界各地,然后买家刚好在同一个广播域里的同时用了你的网卡和原厂商的网卡,这时候有一丢丢丢丢概率会重复。 |
27
laminux29 107 天前
目前业界处理全球 IPv4 地址不够用,以及千年虫的问题,仅仅使用了把数据结构长度加大的方法,这种方法治标不治本。因为造成这个问题的原因,并不是数据结构的长度不够长,而是静态长度的数据类型,永远会发生不够用的问题。
根治的方法是,使用动态长度的数据结构体,就像 tcp 通信中,先发数据长度,再发数据内容。 |
28
xcsoft 107 天前
我感觉 MAC 地址 作为硬件唯一标识,具有唯一性,一个厂商 (OUI) 可以有 24 位的自主分配,可以生产 2^24 台设备/ 即使用完 也可以再次申请新的 OUI
1. 3 楼所讲,网卡属于消耗品,可能每隔数十年就可以考虑重新分配原先的 MAC 地址 (还是有一定风险) 2. MAC 地址 只需要在同一个广播域内做到不冲突即可,同时大多数设备其实已经默认启用了随机 MAC 地址 以避免追踪,在广播域下 其实并没有使用硬件 MAC 地址 |
29
julyclyde 107 天前
@tywtyw2002 正好一样位数,但是相互没什么关系
|
33
luny 107 天前
mac 地址需要向 IEEE 购买,10 几年前买过,记得是 3000 美金一个段,1 百万个,不知道涨价没
|
34
greygoo 107 天前
@xcsoft #26 mac 地址现在很好用,以后万一就是同一个物理网络里面有 2^48 个设备,那估计还是有其他办法来解决一下.分离成多个网络?然后用 ipv6 定义一个本地网络?反正现在没有什么应用是直接使用以太网帧的,当然"现在不好用了就换一个"只是一种精神,总是有解决办法的.没必要纠结为什么 ipv4 没有 mac 地址那么多,要不你去问问他们本人为什么要这样设计,
|
38
cnevil 107 天前
问问题之前建议先动动脑子
IPv4 跟 MAC 地址长度又不一样,而且即使重复了又怎么样呢,只要不在同一个二层网络环境下,随便重复 |
39
DOLLOR 107 天前 via Android
MAC 地址不要求全球唯一,只要局域网内唯一就行了。
同一个局域网下出现相同的 mac 地址的网卡概率非常低。 哪怕真的不幸地相遇了,也可以随机生成一个代替,毕竟 mac 地址可以随便伪造。 |
41
littiefish 107 天前 via iPhone
多读书
|
43
chainal7777 107 天前
12^16 18 4884 2588 9503 6416 = 18 万万亿个
|
44
HappyAndSmile 107 天前 1
@shadowyue 这个我最有印象了,当年在联想笔记本工厂,烧录系统用到了成千上万个网卡转接器,进行 TFTP ,有一个不知道为什么总是用不了,或者不正常,后来才发现它的 mac 的地址跟另一个重复了
|
45
People11 107 天前
ipv4 地址 256^4=4294967296 ,其中还有不少是保留用于特殊用途的
mac 地址 16^12=281474976710656 |
46
longlonglanguage 107 天前
好问题,百科上的介绍是前 6 个数是被保留的,也就是后 6 个是可以被使用的,每个且是一个是十六进制的数,那么也就是 16 的 6 次方,16,777,216 个 MAC 地址,需要确认唯一 MAC 的只有网卡这种通讯设备,所以是应该是完全够用的。最后结论,世界应该是个草台班子,根据网上博客的说法有些山寨厂商会偷别的厂商的 MAC 地址,因为 IEE 收费,所以运维老哥每次开工之前,要祈祷一下所有的设备中不要遇到一样的 MAC 设备,要不然得手动修改,不是要有没有干运维的老哥现身说法一下,工作中有没有遇到过这种奇葩事情🤓
|
47
kkk9 107 天前
@longlonglanguage #46 根本遇不到。正规单位也不会去买山寨货。而你作为运维在硬件上柜上机发现山寨,本身就要第一时间上报领导的,完全可以退货处理。谁知道山寨货也不稳定,采购吃香喝辣,出问题还自己背大锅?就算你不说,采购不说,真出事了,那就怪厂家,厂家来检查问题的时候就知道是不是正品了,一样要出事背锅。
|
48
oppaopao 107 天前 via iPhone
当初 ipv4 设计的时候多一位是不是问题就缓和很多
|
50
artiga033 107 天前 via Android
@laminux29 动态长度必然引入额外的复杂度,而且要考虑到当时的硬件条件,哪怕到现在都还有人纠结胖指针“多占内存“呢,而且也确实,这些东西在嵌入式设备上,加一个字节加几个变量判断长度也是很珍贵的计算和存储资源。
ipv6 不敢说,64 位时间戳是肯定够用到人类灭绝或者当前的电子计算机架构完全淘汰了 |
51
draguo 106 天前
ip 地址像身份证号,mac 地址像名字,名字还就两三个,家人的名字不一样就行,在外遇到同名的也不多吧
|
52
junkun 106 天前
IPv4 分配很不合理,早期很多公司、学校就占了一个巨大的公网网段,现在其实都还是空闲的。
|
53
msg7086 106 天前
@kilotiger 而且确实是有重复的,甚至以前还有人买到过重复 MAC 的设备,好巧不巧就在一个物理网内于是发现的。但这种概率实在太低了,一般忽略不计,遇到了就改一下或者换一个设备就行了。
|
54
felix0012 106 天前 via Android
每个月 5000 工资不够花。为啥后面多一个 0 就够了呢~ 🐶
|