V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
shrugginG
V2EX  ›  程序员

为啥 IPv4 很快就耗尽了,而 MAC 地址却没有呢

  •  2
     
  •   shrugginG · 141 天前 · 7354 次点击
    这是一个创建于 141 天前的主题,其中的信息可能已经有所发展或是发生改变。

    其实这个疑问上学期间学习计算机网络就有了,我感觉 TCP/IP 作为数据链路层之上的协议,那 IPV4 应该是晚于 MAC 地址出现的吧,那为啥 MAC 地址一开始就被设置得这么长,足够扩展,而 IPv4 已经耗尽了呢》

    第 1 条附言  ·  141 天前
    别骂了别骂了,已经重新在翻自顶向下了😢
    55 条回复    2024-08-02 10:05:32 +08:00
    huage
        1
    huage  
       141 天前   ❤️ 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 地址由于其巨大的地址空间和局域网络使用特性,目前并没有面临类似的耗尽问题。
    WildDonkey
        2
    WildDonkey  
       141 天前   ❤️ 2
    你这个对链路层的作用不是很了解,链路层本身就是广播范围内的物理通信,不用来寻路和路由,因此只要在一个子网内没有重复就可以。你家里的 MAC 地址跟你公司的 MAC 地址完全一样也没有关系,因为互相不知道,但 IP 不一样,IP 有寻路路由功能,那么就得全网唯一标识。本质上来说这俩不是一个层,起 的作用不一样,决定了会不会耗尽问题。
    cnt2ex
        3
    cnt2ex  
       141 天前
    生产商也是会回收重利用 MAC 地址的。并且 MAC 地址只在局域网使用,因此就算是有重复的,只要不在同个局域网就不会有影响。
    tywtyw2002
        4
    tywtyw2002  
       141 天前 via iPhone
    你仔细读读书。mac 地址在设计的时候的有效位数是多少?

    ipv4 在设计的时候 最大的 a 类地址,可以保证多少位有效(一个局域网最多多少 host )

    不得不说 ipv4 的 cidr 和 nat 让 ipv4 续命了多少年,估计能续道跟 32 位 unix 时间戳一样长。
    guanzhangzhang
        5
    guanzhangzhang  
       141 天前
    mac 地址是二层,基本是内网和“邻居系统”使用,不需要公网上使用
    totoro625
        6
    totoro625  
       141 天前
    @huage #1 请勿使用 Chatgpt 回复,站内会封号
    NewYear
        7
    NewYear  
       141 天前
    @totoro625 这 gpt 说得还蛮清楚的,除了啰嗦点……
    totoro625
        8
    totoro625  
       141 天前
    参考 /t/934365 /t/892826
    总结版:IPv4 由于设计之初是树状结构,并不是按需分配,例如,A 公司分配 1627 万个 IP ,B 公司分配 6 万个 IP ,C 公司分配 254 个 IP ,并不是根据公司大小给不同数量的 IP ,而是根据先来后到分配,而且由于先天结构缺陷,只能就这样用下去了
    如上海商场里的一个公共 WiFi 发射出去了 4k 个公网 ip
    julyclyde
        9
    julyclyde  
       141 天前   ❤️ 2
    其实这个疑问说明你网络课根本没学好

    MAC 地址只在广播域内有效
    sodesga
        10
    sodesga  
       141 天前
    mac 地址是按厂商授权的,是一种共识,而且在物理层。
    混杂模式可以监听所有请求,也就是抓包的底层逻辑。
    ipv4 + NAT 完全够用的,ipv6 是一种博弈,荒唐的是还有 ipv9
    julyclyde
        11
    julyclyde  
       141 天前   ❤️ 1
    @tywtyw2002 你也没读好
    julyclyde
        12
    julyclyde  
       141 天前
    @sodesga 你也没读好
    tywtyw2002
        13
    tywtyw2002  
       141 天前 via iPhone
    @julyclyde mac 地址有效位数 24 位 ip a 类地址 24 位 正好一样位数 有什么问题?

    mac 地址前 24 位是厂商 信息,这个不应该算在有效位数里面。(如果所以 a 类地址主机都用相同厂商的网卡)
    rrfeng
        14
    rrfeng  
       141 天前
    上次在公司网络出了问题,排查好久发现是 IT 给的 usb-rj45 mac 和别人的冲突了……
    kilotiger
        15
    kilotiger  
       141 天前
    我其实一直好奇 mac 地址不会重复吗?既然是各大厂商随机分配的,那么谁知道谁用过哪个(好幼稚的提问但我就是搞不懂)
    opengps
        16
    opengps  
       141 天前
    做个简单的题目:
    IPv4 总数是 256 的四次方
    Mac 的总数是 ( 10 数字+26 字母)的 6 次方
    tywtyw2002
        17
    tywtyw2002  
       141 天前 via iPhone   ❤️ 1
    楼主别看自顶向下了,那本书没用。

    网络就这几本书是经典

    编程类
    TCP/IP 详解 看 1 ,2 就好了 不过里面没有 quic 之类的现在协议讲解了。tcp 窗口看个大概就行了,主要三次握手。
    网络类
    tcpip 路由技术 偏向于网络实践,2 层三层路由协议等等。
    ipv6 详解,可以看,我是没读完,只看了 ndp 那些,ipv6 下没有 arp ,用 ndp 代替 arp 了。
    greygoo
        18
    greygoo  
       141 天前   ❤️ 2
    @opengps 不是 10 个数字+26 个字母,是 10 个数字+6 个字母,用来表示十六进制,4 位二进制。所以 mac 才是 48 位数,而 256 是 8 位二进制,ipv4 是 32 位,其实后面都是二进制,只是写法不一样
    cinlen
        19
    cinlen  
       141 天前
    @kilotiger mac 地址中有固定前缀是给厂商的, 例如 aa:bb:cc:dd:ee:ff:gg ,aa:bb:cc 固定是厂商 A 用的。
    shadowyue
        20
    shadowyue  
       141 天前
    @julyclyde 同一个广播域出现了 MAC 地址一样的会咋样,💣?
    Andim
        21
    Andim  
       141 天前
    @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
    cansiny0320
        22
    cansiny0320  
       141 天前
    @cinlen #18 前缀是谁分配的?我强行用别人的前缀会出现什么问题吗?
    gdfsjunjun
        23
    gdfsjunjun  
       141 天前
    你在问 MAC 的时候就像在问内网 IP 地址就这么多,为什么没用完呢?
    greygoo
        24
    greygoo  
       141 天前
    至于为什么要问 ipv4 是 32 位,mac 是 48 位,当时做些的人因为当时的原因自己选择的,现在不好用了就换一个不就行了嘛
    cinlen
        25
    cinlen  
       141 天前
    @cansiny0320 大概是厂商(OUI)向权威机构(IEEE) 申请注册。

    你强行用别人的大概率也没啥问题,除非你自己生产网卡并把它卖到全世界各地,然后买家刚好在同一个广播域里的同时用了你的网卡和原厂商的网卡,这时候有一丢丢丢丢概率会重复。
    xcsoft
        26
    xcsoft  
       141 天前
    @greygoo mac 地址在以太网帧结构中 已经分配好为 6 个 byte ,你要换这个 成本可想而知
    laminux29
        27
    laminux29  
       141 天前
    目前业界处理全球 IPv4 地址不够用,以及千年虫的问题,仅仅使用了把数据结构长度加大的方法,这种方法治标不治本。因为造成这个问题的原因,并不是数据结构的长度不够长,而是静态长度的数据类型,永远会发生不够用的问题。

    根治的方法是,使用动态长度的数据结构体,就像 tcp 通信中,先发数据长度,再发数据内容。
    xcsoft
        28
    xcsoft  
       141 天前
    我感觉 MAC 地址 作为硬件唯一标识,具有唯一性,一个厂商 (OUI) 可以有 24 位的自主分配,可以生产 2^24 台设备/ 即使用完 也可以再次申请新的 OUI

    1. 3 楼所讲,网卡属于消耗品,可能每隔数十年就可以考虑重新分配原先的 MAC 地址 (还是有一定风险)
    2. MAC 地址 只需要在同一个广播域内做到不冲突即可,同时大多数设备其实已经默认启用了随机 MAC 地址 以避免追踪,在广播域下 其实并没有使用硬件 MAC 地址
    julyclyde
        29
    julyclyde  
       141 天前
    @tywtyw2002 正好一样位数,但是相互没什么关系
    julyclyde
        30
    julyclyde  
       141 天前   ❤️ 1
    @shadowyue 同一个广播域相同的 mac
    如果是集线器就无所谓;交换机的话,看具体产品,可能两边都收到,也可能各自断续
    julyclyde
        31
    julyclyde  
       141 天前
    @xcsoft 定长的数据就不可能唯一
    xcsoft
        32
    xcsoft  
       141 天前
    @julyclyde 相当于一个规范吧
    luny
        33
    luny  
       141 天前
    mac 地址需要向 IEEE 购买,10 几年前买过,记得是 3000 美金一个段,1 百万个,不知道涨价没
    greygoo
        34
    greygoo  
       141 天前
    @xcsoft #26 mac 地址现在很好用,以后万一就是同一个物理网络里面有 2^48 个设备,那估计还是有其他办法来解决一下.分离成多个网络?然后用 ipv6 定义一个本地网络?反正现在没有什么应用是直接使用以太网帧的,当然"现在不好用了就换一个"只是一种精神,总是有解决办法的.没必要纠结为什么 ipv4 没有 mac 地址那么多,要不你去问问他们本人为什么要这样设计,
    julyclyde
        35
    julyclyde  
       141 天前
    @greygoo 一个广播域里那么多设备,要解决的恐怕不是 mac 冲突的问题了,而是传输碰撞的问题
    2333wz
        36
    2333wz  
       141 天前
    @rrfeng 碰到过相同问题,当时只知道检查新添加的网络设备,找到了 usb 网卡解决了。原来是 mac 地址的原因。
    elboble
        37
    elboble  
       141 天前
    @luny 3400 美元,2^24 个,1600 万个。
    cnevil
        38
    cnevil  
       141 天前
    问问题之前建议先动动脑子
    IPv4 跟 MAC 地址长度又不一样,而且即使重复了又怎么样呢,只要不在同一个二层网络环境下,随便重复
    DOLLOR
        39
    DOLLOR  
       141 天前 via Android
    MAC 地址不要求全球唯一,只要局域网内唯一就行了。
    同一个局域网下出现相同的 mac 地址的网卡概率非常低。
    哪怕真的不幸地相遇了,也可以随机生成一个代替,毕竟 mac 地址可以随便伪造。
    datou
        40
    datou  
       141 天前
    @luny 蓝牙设备的 mac 和网络设备的 mac 是分开结算的吗?
    littiefish
        41
    littiefish  
       141 天前 via iPhone
    多读书
    shrugginG
        42
    shrugginG  
    OP
       141 天前
    @cnevil 我承认自己对于这个问题没有足够的思考,也建议您仔细阅读一下别人的问题,我在问题中并没有表明 ipv4 和 mac 长度一致的想法
    chainal7777
        43
    chainal7777  
       141 天前
    12^16 18 4884 2588 9503 6416 = 18 万万亿个
    HappyAndSmile
        44
    HappyAndSmile  
       141 天前   ❤️ 1
    @shadowyue 这个我最有印象了,当年在联想笔记本工厂,烧录系统用到了成千上万个网卡转接器,进行 TFTP ,有一个不知道为什么总是用不了,或者不正常,后来才发现它的 mac 的地址跟另一个重复了
    People11
        45
    People11  
       141 天前
    ipv4 地址 256^4=4294967296 ,其中还有不少是保留用于特殊用途的
    mac 地址 16^12=281474976710656
    longlonglanguage
        46
    longlonglanguage  
       141 天前
    好问题,百科上的介绍是前 6 个数是被保留的,也就是后 6 个是可以被使用的,每个且是一个是十六进制的数,那么也就是 16 的 6 次方,16,777,216 个 MAC 地址,需要确认唯一 MAC 的只有网卡这种通讯设备,所以是应该是完全够用的。最后结论,世界应该是个草台班子,根据网上博客的说法有些山寨厂商会偷别的厂商的 MAC 地址,因为 IEE 收费,所以运维老哥每次开工之前,要祈祷一下所有的设备中不要遇到一样的 MAC 设备,要不然得手动修改,不是要有没有干运维的老哥现身说法一下,工作中有没有遇到过这种奇葩事情🤓
    kkk9
        47
    kkk9  
       140 天前
    @longlonglanguage #46 根本遇不到。正规单位也不会去买山寨货。而你作为运维在硬件上柜上机发现山寨,本身就要第一时间上报领导的,完全可以退货处理。谁知道山寨货也不稳定,采购吃香喝辣,出问题还自己背大锅?就算你不说,采购不说,真出事了,那就怪厂家,厂家来检查问题的时候就知道是不是正品了,一样要出事背锅。
    oppaopao
        48
    oppaopao  
       140 天前 via iPhone
    当初 ipv4 设计的时候多一位是不是问题就缓和很多
    lizhisty
        49
    lizhisty  
       140 天前
    @totoro625 GPT 回答的很好,封号也是看场景的。
    artiga033
        50
    artiga033  
       140 天前 via Android
    @laminux29 动态长度必然引入额外的复杂度,而且要考虑到当时的硬件条件,哪怕到现在都还有人纠结胖指针“多占内存“呢,而且也确实,这些东西在嵌入式设备上,加一个字节加几个变量判断长度也是很珍贵的计算和存储资源。
    ipv6 不敢说,64 位时间戳是肯定够用到人类灭绝或者当前的电子计算机架构完全淘汰了
    draguo
        51
    draguo  
       140 天前
    ip 地址像身份证号,mac 地址像名字,名字还就两三个,家人的名字不一样就行,在外遇到同名的也不多吧
    junkun
        52
    junkun  
       140 天前
    IPv4 分配很不合理,早期很多公司、学校就占了一个巨大的公网网段,现在其实都还是空闲的。
    msg7086
        53
    msg7086  
       139 天前
    @kilotiger 而且确实是有重复的,甚至以前还有人买到过重复 MAC 的设备,好巧不巧就在一个物理网内于是发现的。但这种概率实在太低了,一般忽略不计,遇到了就改一下或者换一个设备就行了。
    felix0012
        54
    felix0012  
       139 天前 via Android
    每个月 5000 工资不够花。为啥后面多一个 0 就够了呢~ 🐶
    cnevil
        55
    cnevil  
       138 天前
    @shrugginG 那你对我说的话也没有思考,长度不一致能分配的数量也就不一样
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1185 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:16 · PVG 07:16 · LAX 15:16 · JFK 18:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.