惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
B
Blog RSS Feed
阮一峰的网络日志
阮一峰的网络日志
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
H
Help Net Security
MyScale Blog
MyScale Blog
WordPress大学
WordPress大学
Microsoft Azure Blog
Microsoft Azure Blog
GbyAI
GbyAI
小众软件
小众软件
大猫的无限游戏
大猫的无限游戏
Martin Fowler
Martin Fowler
Vercel News
Vercel News
S
SegmentFault 最新的问题
M
MIT News - Artificial intelligence
Microsoft Security Blog
Microsoft Security Blog
G
Google Developers Blog
Last Week in AI
Last Week in AI
Hugging Face - Blog
Hugging Face - Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
Google DeepMind News
Google DeepMind News
Engineering at Meta
Engineering at Meta
云风的 BLOG
云风的 BLOG

朝瓜夕拾

关于一个QQBot引发的“军备竞赛” 从嫌弃到真香,我把Halo变成了朋友圈 儿子的“梦核” 【脑洞】热门AI事件引发的胡思乱想 OpenAI测试模型翻车,模型自主越狱攻破抱脸服务器 最近没更新,是因为我去当了爸爸 阿里云部署ZeroTier Moon节点踩坑记录 新NAS到货啦!飞牛联名NAS开箱! 飞牛0day漏洞,请立即升级 128G系统盘克隆至1T盘全攻略 解决个人开发者多端体验难题,一个PWA搞定 视频直播虚拟设备配置指南 文件类型判断的三重层次 每日幸福😍No.25 忙完这一阵…
IPv6到底咋个事儿?
dadamelon · 2026-01-01 · via 朝瓜夕拾

最近公司搬了新办公区,为相应号召,抛弃ipv4全面拥抱ipv6,于是简单研究了一番,发现一些有趣的事。

IPv4 地址长度为 32 位,总数约为 43 亿个。

IPv6 地址的长度是 128 位,地址总数有 2128 个,数值展开后约等于 34 万亿亿亿亿 个。

IPv6 地址总数是 IPv4 的足足 296 倍,这个数量足以给地球上每一粒沙子分配数万亿个独立的 IPv6 地址。

IPv4 和 IPv6 是两套并行的网络协议,一台设备可以同时配置 IPv4 和 IPv6 地址(双栈模式),但这两个地址之间没有内在关联,只是同时绑定在同一个网络接口上。

为了解决 IPv4 和 IPv6 网络互通的问题,人们设计了一些过渡技术,实现了 “伪映射”,但这不是协议本身的对应关系:

IPv4 映射的 IPv6 地址:一种特殊的 IPv6 地址格式,格式为::ffff:w.x.y.z,其中w.x.y.z 是 IPv4 地址。例如 IPv4 地址 192.168.1.1 对应的映射 IPv6 地址是 ::ffff:192.168.1.1。这种地址仅用于双栈主机内部的协议转换,并非全局有效的 IPv6 地址。

NAT64/DNS64:通过网关设备将 IPv6 网络的流量转换为 IPv4 流量,实现 IPv6 主机访问 IPv4 资源,但这是网关层面的地址转换,不是地址本身的对应。

(二)IPv6地址的格式

IPv6 标准格式为 8 组 16 位十六进制数,组间用 : 分隔,例如

fe80:0000:0000:0000:0000:0000:0000:0001

由于这种地址规律,为了简化地址记忆,可以使用零压缩语法连续≥1 组全零段可用 :: 替代,且整个地址仅能使用一次 ::(避免歧义,确保能还原为 8 组)

例如:

  • 原始地址:fe80:0000:0000:0000:0000:0000:0000:0001

  • 前导零省略后:fe80:0:0:0:0:0:0:1

  • 零压缩后:fe80::1(最简洁写法)

为什么不沿用 IPv4 的点号(.)?

点号的用途早已被占满:它已经被赋予了三层含义:

  1. 十进制计数法标识

  2. IPv4 字节段的边界分隔符

  3. DNS 域名层级分隔符(例如 example.com

使用点号,可能会引起歧义。

为什么不用逗号(,)?

逗号是列表分隔符,而非结构化分隔符:

  • 编程语言中:a, b, c(用于分隔多个独立元素)

  • 配置文件中:用于标记值列表

  • 逗号分隔值文件(CSV)的核心分隔符

除此之外,逗号还有几个致命问题:

  • 容易被人眼忽略

  • 常被解析程序过滤剔除

  • 存在地域使用差异(在许多国家,逗号是十进制小数点

为什么偏偏是冒号(:)?

早在 IPv6 诞生之前,冒号就有了广泛应用:

  • MAC 地址:aa:bb:cc:dd:ee:ff

  • 时间格式:时:分:秒(HH:MM:SS)

  • 比例与命名空间标识也会用到冒号

符合使用惯例,是有历史和技术原因的,而非拍脑袋定的。

(三)过渡与阵痛

IPv6作为相对较新的标准,各大操作系统为了兼容 IPv6 均采用过一些过渡措施或临时适配方案,核心都是在不彻底重构旧系统的前提下,解决 IPv6 与 IPv4 共存、格式冲突、协议互通等问题。

微软UNC为适配IPv6推出临时机制

UNC(通用命名约定)是 Windows 系统中访问局域网共享资源的标准路径格式。

核心语法为:\\服务器名或IP\共享文件夹\子文件

比如访问局域网内 IP 为 192.168.1.1 的共享文件夹 Docs,路径就是 :\\192.168.1.1\Docs

问题就出在:UNC 路径的语法规则里,不允许出现冒号(:—— 冒号在 Windows 中有特殊用途,比如用于区分驱动器盘符(C:\)、端口号等。

微软的解决方案是做一层地址转换映射,创建了 ipv6-literal.net 这个特殊的伪域名后缀,专门用来兼容 IPv6 地址的 UNC 路径访问。

把 IPv6 地址中的冒号(:)全部替换成连字符(-),再加上后缀 .ipv6-literal.net。示例:IPv6 地址 fe80::1 → 转换后为 fe80--1.ipv6-literal.net