1、由于IPv4地址资源枯竭,所以产生了IPV6。
版本 | 长度 | 地址数量 |
IPv4 | 32 bit | 4 294 967 296 |
IPv6 | 128 bit | 340 282 366 920 938 463 374 607 431 768 211 456 |
2、IPv6的基本报头在IPv4报头基础上,增加了流标签域,去除了一些冗余字段,使报文头的处理更为简单、高效。
其中
Hop limit相当于IPv4中的TTL值。
扩展报头提供报文转发信息,并不会被路径上所有路由器解析,一般只会被目的路由器解析处理。除了逐条选项扩展头之外,其余扩展头在传输路径中不被路由器查看这种机制保证了路由器只查看和选路有关的基本字段,保证高效转发数据。
表1 IPv6扩展报头
报头类型 | 代表该类型报头的Next Header字段值 | 描述 |
逐跳选项报头 | 0 | 该选项主要用于为在传送路径上的每跳转发指定发送参数,传送路径上的每台中间节点都要读取并处理该字段。逐跳选项报头目前的主要应用有以下三种: 1、用于巨型载荷(载荷长度超过65535字节) 2、用于设备提示,使设备检查该选项的信息,而不是简单的转发出去。 3、用于资源预留(RSVP)。 |
目的选项报头 | 60 | 目的选项报头携带了一些只有目的节点才会处理的信息。目前,目的选项报文头主要应用于移动IPv6。 |
路由报头 | 43 | 路由报头和IPv4的Loose Source and Record Route选项类似,该报头能够被IPv6源节点用来强制数据包经过特定的设备。 |
分段报头 | 44 | 同IPv4一样,IPv6报文发送也受到MTU限制。当报文长度超过MTU时就需要将报文分段发送。而在IPv6中,分段发送使用的是分段报头。 |
认证报头 | 51 | 该报头有IPsec使用,提供认证、数据完整性以及重放保护。还对IPv6基本报头中的一些字段进行保护。 |
封装安全净载报头 | 50 | 该报头由IPsec使用,提供认证、数据完整性以及重放保护和IPv6数据报的保密,类似于认证报头。 |
网络层一般要限制每次发送数据帧的最大长度。任何时候IP层接收到一份要发送的IP数据时,它要判断向本地哪个接口发送数据,并查询该接口获得其MTU。IP层把MTU与要发送的数据包长度进行比较,如果数据包的长度比MTU值大,则IP层就要进行分片,分片后的数据小于等于MTU。
以下图为例:
- IPv4中分片,假设从PC1发出的报文MTU为1500,在路由器R1分成2片,在最后一跳中由PC2完成报文重组。中间路由器负责分片,由目标主机负责重组。中间路由器负责分片,会引入额外的开销。
- IPv6中,中间的IPv6路由器不负责切片。PC1发一个1500的数据包,由于R1的MTU为1400,R1会把包drop掉,会给源端回一个ICMPv6的差错控制,同时会在里面加上去 MTU = 1400 PC机,再往下发包的时候,就按1200发包,PC1会先分好片,然后发送出来。
3、IPv6的地址格式
IPv6地址长度为128比特。每16比特划分为一段,每段由4个十六进制数表示,并用冒号分隔,简称冒号分十六进制。
IPv6地址包括网络前缀和接口标识两部分。
例如:1111:2222:3333:4444:aaaa:bbbb:cccc:dddd 64 冒号分十六进制,64对应子网掩码
十六进制由0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f。
二进制 | 十六进制 |
00001 | 1 |
1010 | a |
1111 | f |
1110 | e |
0001000100010001 | 1111 |
4、IPv6地址说明
前面的部分叫做IPv6前缀,对应IPv4中的网络位,后面的部分叫做接口标识,对应IPv4中的主机位。前缀长度对应IPv4中的子网掩码。
5、IPv6地址优化
规定1:每一组中的前导0都可以省略。
规定2:地址中包含的连续全为0的组,可以用双冒号::来代替。
注意:在一个IPv6地址中,只能使用一次双冒号::