参考 <The TCP/IP Guide> http://tcpipguide.com
文章目录
IPv6
IPv6 地址
IPv6 地址类型
- 单播地址 (Unicast Addresses):同 IPv4 中的单播地址,一个接口对应一个。
- 组播地址 (Multicast Addresses):用于表示一组 IP 设备的地址,一个发往组播地址的信息将发给它所代表的组中的所有设备。IPv6 中为组播提供更多的支持。
- 任播地址 (Anycast Addresses):将信息发送到一组设备中的任意一个,通常会发给这组设备中最近的一个。一个常见的用途:客户端有两个或多个服务器提供服务,而客户端不介意哪个服务器提供服务,重点是哪个服务器更容易提供服务,这时候就可以用任播。
在 IPv6 中广播被移除了。
IPv6 地址空间大小
IPv4 存在的一个很大的问题便是地址空间太小了,即使后来我们用了如 NAT 的方法去解决他,但用 NAT 也使得一些功能被限制了,不管用什么方法也是无法解决 IPv4 地址空间太小,而人们的需求日益增加的基本问题。最简单有效的方法就是在下一代中扩大地址空间。
用一个字来概括 IPv6 的地址空间就是大!非常大!
IPv4 的地址长度为 32bits,所以最多有 4,294,967,296 个地址,而 IPv6 的地址长度达到了惊人的 128bits,最多可以有 340,282,366,920,938,463,463,374,607,431,768,211,456 个地址!
IPv6 地址表示
128bits 的长度使得 IPv6 地址写起来很长,即使用十进制表示也很长,所以一般用十六进制来表示 IPv6 地址。
压缩书写
- Leading-Zero Suppressed:将全为 0 的用一个 0 表示。
- Zero-Compressed:将连续的 0 用双冒号 ( :: ) 代替,仅可出现一次,如果出现多次,我们就无法确定此处代替了多少个 0。
Mixed Notation 用于表示最后 32bits 为嵌入式 IPv4 地址的 IPv6 地址,前 96bits 用冒号六进制表示,后 32bits 用 IPv4 的点十进制表示。
IPv6 地址分配
IPv6 地址通过开始的若干 bits 来指示地址类型 (用于指示的位数称为 FP, format prefix),这和 IPv4 分类寻址中使用前 1~4 bits 来区分的方式很像,但 IPv6 中的 FP 范围为 3~10。
IPv6 地址分配计划:
开头 | 配给 |
---|---|
0000 0000 | 未分配(包括环回地址等) |
0000 0001 | 未分配 |
0000 001 | 为 NSAP 地址分配保留 |
0000 01 | 未分配 |
0000 1 | 未分配 |
0001 | 未分配 |
001 | 全球单播地址 |
010 | 未分配 |
011 | 未分配 |
100 | 未分配 |
101 | 未分配 |
110 | 未分配 |
1110 | 未分配 |
1111 0 | 未分配 |
1111 10 | 未分配 |
1111 110 | 未分配 |
1111 1110 0 | 未分配 |
1111 1110 10 | 链路本地地址 (Link-Local Unicast Addresses) |
1111 1110 11 | 站点本地地址 (Site-Local Unicast Addresses) |
1111 1111 | 多播地址 |
IPv6 全球单播地址格式
字段名 | 长度 (bits) | 描述 |
---|---|---|
Prefix | 48 | Global Routing Prefix:含网络号用于路由,前三位为 001 表示为单播地址。 |
Subnet ID | 16 | Subnet Identifier:标识站点内部的子网。 |
Interface ID | 64 | Interface ID:一个接口的唯一标识。 |
IPv6 接口标识符与物理地址间的映射
从上面可以发现单播地址中最后 64bits 用作接口标识符,这么长的接口标识符当然不能随便浪费,因为几乎所有设备接口的物理地址长度都为 64bits 或更少,所以可以基于接口的物理地址来指定这个接口标识符,而不是用没有意义的数字作为接口标识符,这样做的好处有:使得网络更容易管理,我们不需要记录接口标识符和设备的对应关系,可以通过 MAC 地址得知 IP 地址,也可以通过 IP 地址得知其 MAC 地址。
从数据链路层地址到 IP 接口标识符的实际映射取决与特定的算法。当然,同一网络下所用的映射算法是相同的。
- IEEE 802 MAC 地址:MAC 地址分为两部分,前 24bits 为制造商 ID,后 24bits 为底板 ID (装配时唯一指派给网络适配器)。
- EUI-64:64-bit extended unique identifier。将 IEEE 802 MAC 地址从 24bits 扩充到 40bits。
从 EUI-64 地址映射到 IP 接口标识很简单,只要将 EUI-64 的第七位从 0 改成 1 即可。
从 IEEE 802 MAC 地址映射到 IP 接口标识要先转换成 EUI-64 再将第七位改为 1。怎么将 IEEE 802 MAC 地址改成 EUI-64 呢?在 IEEE 8