本文重在介绍下一代 IP 的基本知识,介绍了 IPv6 包的形状及采用 IPv4 IPv6 的设备与网络如何协同工作,还简要描述了 IPv6 新的安全特性。
地址数量大大增加
IPv4 采用 32 位地址空间,可以提供约 42 亿个地址。虽然数目巨大,但该协议的开发人员当时并未料到因特网发展会如此迅速。虽说网络地址转换( NAT )和无类域间路由( CIDR )等技术会使 IPv4 的使用寿命延长几年,但迟早 IPv4 会跟不上因特网的发展需求。
IPv6 128 位地址空间有望带来大得常人无法想象的空间。那么究竟有多少个地址呢?大约 655,570,793,348,866,943,898,599 个。 IPv6 除了地址数量多得多外, IPv6 还弃用了 IPv4 采用的熟悉的 点分四元组 格式(如 193.10.10.154 )。相反, IPv6 采用十六进制符号,以冒号取代了圆点。 FEDC:BA98:7654:3210:FEDC:BA98:7654:3210 地址结构就是一个虚假的例子。
报头结构
虽然 IPv6 报头的字节长度两倍于 IPv4 报头( 40 个字节与 20 个字节),但 IPv6 拥有简化的报头结构。
IPv6 报头有 8 个字段, IPv4 则有 14 个。 IPv6 丢弃及改用了 IPv4 报头字段中的几个,从而使包处理更有效率。下面比较一下两种报头。 Version( 版本 ) 字段在两种协议中没有变化。 IPv6 丢弃了 IPv4 Internet Header Length (因特网报头长度)、 Type of Service (服务类型)、 Identification (识别)、 Flags (标志)、 Fragment Offset (分片偏移量)和 Header Checksum (报头校验和)字段。 Total Lenght (总长度)、 Time to Live (生存时间)和 Protocol (协议)字段在 IPv6 中有了新名字,功能稍微进行了重新定义。 IPv4 中的 Option (选项)字段已从报头中消失,改为 Extension( 扩展 ) 功能。
最后, IPv6 加入了两个新字段: Traffic Class (流量类别)和 Flow Label (流标记)。分别介绍一下 IPv6 包的每个报头字段。 Version Version 字段的长度仍是 4 位,它指明了协议版本号。
Traffic Class :这个 8 位字段可以为包赋予不同的类别或优先级。它类似 IPv4 Type of Service 字段,为差异化服务留有余地。
Flow Label Flow Label 字段是 IPv6 的新增字段。源节点使用这个 20 位字段,为特定序列的包请求特殊处理(效果好于尽力转发)。实时数据传输如语音和视频可以使用 Flow Label 字段以确保 QoS
Payload Length :这个 16 位字段表明了有效载荷长度。与 IPv4 包中的 Total Length 字段不同,这个字段的值并未算上 IPv6 40 位报头。计算的只是报头后面的扩展和数据部分的长度。因为该字段长 16 位,所以能表示高达 64KB 的数据有效载荷。如果有效载荷更大,则由超大包( jumbogram )扩展部分表示。
Next Header :这个 8 位字段类似 IPv4 中的 Protocol 字段,但有些差异。在 IPv4 包中,传输层报头如 TCP UDP 始终跟在 IP 报头后面。在 IPv6 中,扩展部分可以插在 IP 报头和传输层报头当中。这类扩展部分包括验证、加密和分片功能。 Next Header 字段表明了传输层报头或扩展部分是否跟在 IPv6 报头后面。
Hop Limit :这个 8 位代替了 IPv4 中的 TTL 字段。它在经过规定数量的路由段后会将包丢弃,从而防止了包被永远转发。包经过一个路由器, Hop Limit 字段的值就减少一个。 IPv4 使用了时值( time value ),每经过一个路由段就从 TTL 字段减去一秒。 IPv6 用段值( hop value )换掉了时值。
Source Address :该字段指明了始发主机的起始地址,其长度为 128 位。
Destination Address :该字段指明了传输信号的目标地址,其长度为 128 位。网络人员可能会惊讶地发现校验和与分片字段从 IPv6 的报头当中消失了。
 
IPv4 IPv6 的集成
虽然人们希望 IPv4 一下子变成 IPv6 ,但两种协议必须协同工作,就算 IPv6 完全取代 IPv4 ,那可能也是多年以后的事了。因而,有人提出了过渡方法以确保 IPv4 包不受制于 IPv6 设备,反之亦然。这些方法包括双堆栈和隧道技术。双堆栈方法很简单。
新的 IPv6 设备能够与 IPv4 向后兼容,而 IPv4 设备可以用 IPv4 IPv6 协议栈进行编程,以便合适地处理各自的包。采用双堆栈的主机能收发 IPv4 IPv6 数据,采用双堆栈的路由器则可以转发任何一种包。隧道方式通过 IPv4 网络在两个 IPv6 域之间传送包。为此,双堆栈节点利用 IPv4 报头封装 IPv6 包。然后该封装包通过 IPv4 网络(隧道)进行路由,直至到达第二个 IPv6 域。第二个节点去掉 IPv4 报头后,对包进行相应处理。
隧道的配置分手工和自动方式。手工配置需要网络管理员在隧道端点定义 IPv4 IPv6 的地址映射。虽然 IPv6 128 地址通常可以用于隧道任何一端,但隧道入口点的路由器必须手工配置,限定哪些 IPv4 地址可以通过隧道。
自动配置使用与 IPv4 兼容的地址:在 32 位地址的基础上添加 0 以凑足 128 位。如果 IPv6 节点使用兼容地址,隧道入口的路由器只须去掉多余的 0 ,就可以显示真实的 IPv4 地址。一旦包通过隧道,隧道出口的节点就会去掉 IPv4 报头,以显示真实的 IPv6 地址。
保护措施
IP 数据报有可能被截取,数据也有可能被读取及篡改。因而, IPSec 通过验证和加密以保护 IP 包。因为 IPSec 是在 IPv4 问世后一段时间开发的,支持 IPSec 的功能就要结合到 IPv4 包内。相比之下,借助于扩展报头这种设计, IPv6 能够支持 IPSec
验证报头扩展部分能够帮助管理员证实:包的确来自报头内的源地址。这应该有助于防止地址欺骗,地址欺骗是指这种技术:***者伪造源地址,使包看上去让人以为它来自合法或可信地址。如果接收者没有相应的密钥还原数据,名为封装安全有效载荷( ESP )服务的加密扩展部分就认为包的有效载荷数据无效。加密为保密和数据验证提供了一种措施。管理员可以选择只对包的传输和数据有效载荷或者整个包(包括报头和扩展部分)进行加密。如果整个包进行了加密,就必须给包添加另外的未加密报头,以便能够到达目的地。