- IP是互联网的核心协议。
- IPv4地址耗尽问题:
- 到2011年2月,IANA IPv4的32位地址已经耗尽。
- 各地区互联网地址分配机构也相继宣布地址耗尽。
- 我国在2014一2015年也逐步停止了向新用户和应用分配IPv4地址。
- 根本解决措施:采用具有更大地址空间的新版本的IP,即IPv6。
4.5.1 IPv6的基本首部
- IPv6仍支持无连接的传送。
- 将协议数据单元PDU称为分组(packet)。
- 主要变化:
- 更大的地址空间。将地址从IPv4的32位增大到了128位。
- 扩展的地址层次结构。可以划分为更多的层次。
- 灵活的首部格式。定义了许多可选的扩展首部。
- 改进的选顶。允许数据报包含有选顶的控制信息,其选顶放在有效载荷中。
- 允许协议继续扩充。更好地适应新的应用。
- 支持即插即用(即自动配置)。不需要使用DHCP。
- 支持资源的预分配。支持实时视像等要求保证一定的带宽和时延的应用。
- IPv6首部改为8字节对齐。首部长度必须是8字节的整数倍。
1. IPv6数据报的一般形式
- 由两大部分组成
- 基本首部
- 有效载荷。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部,再后面是数据部分。
- 首部长度:固定的40字节,称为基本首部。
- 首部字段数:只有8个。
基本首部的8个字段含义:
- 版本——4位。它指明了协议的版本,对IPv6该字段总是6。
- 通信量类——8位。这是为了区分不同的IPv6数据报的类别或优先级。目前正在进行不同的通信量类性能的实验。
- 流标号——20位。“流”是互联网络上从特定源点到特定终点的一系列数据报,“流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有同样的流标号。
- 有效载荷长度——16位。它指IPv6数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内),其最大值是64KB。
- 下一个首部——8位。相当于IPv4的协议字段或可选字段。
- 跳数限制——8位。源站在数据报发出时即设定跳数限制。路由器在转发数据报时将跳数限制字段中的值减1。当跳数限制的值为零时, 就要将此数据报丢弃。
- 源地址——128位。是数据报的发送站的IP地址。
- 目的地址——128位。是数据报的接收站的IP地址。
2. IPv6的六种扩展首部
- 逐跳选项
- 路由选择
- 分片
- 鉴别
- 封装安全有效载荷
- 目的站选项
每一个扩展首部都由若干个字段组成,它们的长度也各不同。但所有扩展首部的第一个字段都是8位的“下一个首部”字段。此字段的值指出了在该扩展首部后面的扩展首部是什么。当使用多个扩展首部时,应按以上的先后顺序出现。高层首部总是放在最后面。大家知道,IPv4的数据报若在其首部中使用了选项,则在数据报转发路径中的每一个路由器,都必须检查首部中的所有选项,看是否与本路由器相关。这必然要花费相当的时间。IPv6把原来IPv4首部中选项的功能都放在扩展首部中。IPv6数据报若使用了扩展首部,则其基本首部的“下一个首部”字段会指出,在“有效载荷”字段中使用了何种扩展首部。而所有扩展首部的第一个字段都是“下一个首部”,用来指出在后面还有何种扩展首部。这就使得路由器能够迅速判断待转发的IPv6数据报有无需要本路由器处理的选项。
4.5.2 IPv6的地址
三种基本类型:
- 单播:传统的点对点通信。
- 多播:一点对多点的通信。
- 任播:IPv6增加的一种类型。任播的终点是一组计算机,但数据报在交付时只交付其中的一个。通常是按照路由算法得出的距离最近的一个。
1. 节点与接口
- IPv6将实现IPv6的主机和路由器均称为节点。
- 一个节点可能有多个与链路相连的接口。
- IPv6地址是分配给节点上接口的。
- 一个具有多个接口的节点可以有多个单播地址。
- 其中的任何一个地址都可以当作到达该节点的目的地址。
2. 冒号十六进制记法
- 在IPv6中,每个地址占128位,地址空间大于3.4×1038。
- 使用冒号十六进制记法:把每个16位的值用十六进制值表示,各值之间用冒号分隔。
<1>零压缩
零压缩:一连串连续的零可以用一对冒号取代。
注意:在任一地址中,只能使用一次零压缩。
<2>点分十进制记法的后缀
-
结合使用点分十进制记法的后缀在IPv4向IPv6的转换阶段特别有用。 -
例如: 注意:在这种记法中,冒号所分隔的每个值是两个字节(16位)的值,但点分十进制每个部分的值是一个字节(8位)的值。 -
CIDR的斜线表示法仍然可用,但取消了子网掩码。 -
例如:60位的前缀 12AB00000000CD3可记为: 但不能记为:
不像IPv4协议的前缀(即地址的网络部分)可以通过点分十进制或十六进制地址掩码标识,或可以通过位计数来标识,IPv6协议的前缀始终通过位计数的方式来标识。更确切地说,通过在IPv6地址后面加—个斜线 “/”,随后再跟一个十进制的数字来标识一个IPv6地址的起始位有多少位是前缀位。例如:
3. IPv6地址分类
- 未指明地址。这是16字节的全0地址,可缩写为两个冒号“::”。这个地址不能用作目的地址,而只能将某台主机当作源地址使用,条件是这台主机还没有配置到一个标准的 IP地址。这类地址仅此一个。
- 环回地址。IPv6的环回地址是0:0:0:0:0:0:0:1,可缩写为::1。它的作用和IPv4的环回地址一样。这类地址也是仅此一个。
- 多播地址。功能和IPv4的一样。这类地址占IPv6地址总数的1/256。
- 本地站点单播地址。有些单位的内部网络使用TCP/IP协议,但并没有连接到互联网上。连接在这样的内部网络上的主机都可以使用这种本地站点地址进 行通信,但不能和互联网上的其他主机通信。这类地址占IPv6地址总数的1/1024,其用途和和IPv4的专用地址是一样的。
- 本地链路单播地址。这种地址是在单一链路上使用的。当一个节点启用IPv6时就自动生成本地链路地址(请注意,这个节点现在并没有连接在某个网络上)。当需要把分组发往单一链路的设备而不希望该分组被转发到此链路范围以外的地方时,就可以使用这种特殊地址。这类地址占IPv6地址总数的1/1024。
- 全球单播地址。IPv6的这一类单播地址是使用得最多的一类。曾提出过多种方案来进一步划分这128位的单播地址。IPv6单播地址的划分方法非常灵活,可把整个的128位都作为一个节点的地址。也可用n位作为子网前缀,用剩下的(128-n)位作为接口标识符 (相当于IPv4的主机号)。当然也可以划分为三级,用n位作为全球路由选择前缀,用m位作为子网前缀,而用剩下的(128-n-m)位作为接口标识符。
4. IPv6单播地址的划分方法
4.5.3 从IPv4向IPv6过渡
- 方法:逐步演进,向后兼容。
- 向后兼容:IPv6系统必须能够接收和转发IPv4分组,井且能够为IPv4分组选择路由。
- 两种过渡策略:
- 使用双协议栈
- 使用隧道技术
1. 双协议栈
双协议栈的主机在和IPv6主机通信时采用IPv6地址,而和IPv4主机通信时则采用IPv4地址。
但双协议栈主机怎样知道目的主机是采用哪一种地址呢?它是使用域名系统DNS来查询。若DNS返回的是IPv4地址,则双协议栈的源主机就使用IPv4地址。但当DNS返回的是IPv6地址,源主机就使用IPv6地址。
双协议栈需要付出的代价太大,因为要安装上两套协议。因此在过渡时期,最好采用下面的隧道技术。
2. 隧道技术
这种方法的要点就是在IPv6数据报要进入IPv4网络时,把IPv6数据报封装成为IPv4数据报。现在整个的IPv6数据报变成了IPv4数据报的数据部分。这样的IPv4数据报从路由器B经过路由器C和D,传送到E,而原来的IPv6数据报就好像在IPv4网络的隧道中传输,什么都没有变化。当IPv4数据报离开IPv4网络中的隧道时,再把数据部分(即原来的IPv6数据报)交给主机的IPv6协议栈。图中的一条粗线表示在IPv4网络中好像有一个从B到E的“IPv6隧道",路由器B是隧道的入口而E是出口。请注意,在隧道中传送的数据报的源地址是B而目的地址是E。
4.5.6 ICMPv6
IPv6也需要使用ICMP来反馈一些差错信息。新的版本称为ICMPv6.
ICMPv6报文的分类
参考资料:《计算机网络(第8版)》—— 谢希仁。
|