IPv6地址的压缩表达方式是为了让长得吓人的128位地址变得更简洁、易读易写。以下是完整的规则和示例。
### IPv6地址的标准格式(未压缩)
一个IPv6地址是128位,用十六进制表示,分为8段,每段16位,用冒号 `:` 分隔。
**标准格式示例:**
`2001:0db8:0000:0000:0000:ff00:0042:8329`
---
### 压缩规则
主要有两条规则,可以同时使用。
#### 规则一:省略前导零
在每个段(16位块)中,可以省略开头的零。
* **注意**:如果整个段都是零,你至少会保留一个 `0`(见规则二)。
**应用规则一后的示例:**
`2001:0db8:0000:0000:0000:ff00:0042:8329`
压缩为:
`2001:db8:0:0:0:ff00:42:8329`
(`0db8` -> `db8`, `0042` -> `42`)
#### 规则二:压缩连续的零块(使用双冒号 `::`)
**这是最有效的压缩方法。** 你可以将**连续一个或多个**全部为 `0000` 的段,替换成双冒号 `::`。
* **黄金法则**:**`::` 在一个地址中只能使用一次**。因为如果有多个零块序列,编译器无法确定每个 `::` 代表多少个零块。
**应用规则二后的示例:**
`2001:db8:0:0:0:ff00:42:8329`
我们可以看到 `0:0:0` 是连续的三个零块。
压缩为:
`2001:db8::ff00:42:8329`
---
### 综合示例
让我们从标准格式开始,一步步压缩:
1. **原始地址**: `2001:0db8:0000:0000:0000:ff00:0042:8329`
2. **省略前导零**: `2001:db8:0:0:0:ff00:42:8329`
3. **压缩零块**: `2001:db8::ff00:42:8329`
**这就是最终压缩形式。**
---
### 更多压缩示例
| 场景描述 | 标准格式 | 压缩后格式 |
|---|---|---|
| 最常见的例子 | 2001:0db8:0000:0000:0000:0000:0000:0001 | 2001:db8::1 |
| 环回地址 | 0000:0000:0000:0000:0000:0000:0000:0001 | ::1 |
| 未指定地址(全零) | 0000:0000:0000:0000:0000:0000:0000:0000 | :: |
| 仅开头的零块 | 0000:0000:0000:0000:0000:0000:0000:abcd | ::abcd |
| 仅末尾的零块 | 2001:db8:1234:5678:0000:0000:0000:0000 | 2001:db8:1234:5678:: |
| 中间的零块 | fe80:0000:0000:0000:1234:5678:abcd:ef12 | fe80::1234:5678:abcd:ef12 |
| 多个不连续零块(选择最长的压缩) | 2001:0000:0000:abcd:0000:0000:0000:0001 | 2001:0:0:abcd::1 或 2001::abcd:0:0:0:1(推荐前者,因为它压缩了更长的零序列) |
### 在URL中使用IPv6地址
在浏览器URL中,IPv6地址必须用**方括号 `[ ]`** 括起来,以防止端口号(如 `:80`)与地址中的冒号混淆。
**格式:** `http://[IPv6_Address]:port`
**示例:**
* `http://[2001:db8::1]`
* `http://[fe80::1234:5678:abcd:ef12]:8080`
---
### 总结要点
1. **省略前导零**:每个段中,开头的 `0` 可以去掉。(`0db8` -> `db8`)
2. **压缩零块**:用 `::` 替换**一个或多个**连续的 `0000` 段。
3. **`::` 只能用一次**:这是最重要的规则,避免歧义。
4. **URL加方括号**:在Web地址中,IPv6地址要写在 `[ ]` 里。
熟练掌握这些规则后,就能轻松地读写各种IPv6地址了。
393

被折叠的 条评论
为什么被折叠?



