IPV6 >> 02 IPV6基础 >> 05 IPV6报文格式 >> |
IPv6报文相比IPv4的报文更简单,这样对路由器转发效率更高。具体的报文格式如下:
ipv6 格式(40字节)
1 版本号4
2 流量类型8----------和v4是一样的
如qos的dscp ip优先级等
3 流标签2------------区分不同的流(4没有,通过5元组区分流表),可以提高qos效率
比如数据包加密了,我可以把流标签copy到没有加密里面,然后这部分唯一区分一条流
4 payload长度16----ipv6后面装的东西有多少
(没有包头长度,因为固定的40字节)
5 下一个包头8-------(v4这边是指协议号)比如ipv4上承载的是tcp,那我这边下一个包头是tcp
6 跳数限制8---------(4指的就是ttl)
7 源ip128
8 目的ip128
定长包头(40字节):有利于硬件的快速处理,大部分扩展头中间路由器等不需要处理
安全选项:
可以用ipv6自己的安全选项(叫ipsec,ipsec有两种手段就是ah和eap)
由于有ipv6 的安全机制层协议,需要用到ipv6作为承载信息的上层协议(如OSPFV3/BGP)就没必要用自己的认证机制了
l ah--完整性,认证,防重放
l esp-完整性,认证,加密 防重放
IPv4和IPv6报文的差异
1 有abcd类
6没有
2 组播224.0.0.0/4
FF00::/8
3 有广播
无广播
4 有0.0.0.0
有::
5 回环口127.0.0.1
::1
6 公网地址
2000-3fff
7 私网(10/192/172) FD00::/8(fec0::/10)
8 169地址
FE80::/64
9 10进制
16进制
10 ip和掩码锁定ip 只用ip表达(就是前缀)
(前缀和掩码表达)
疑问
Ø 取消ip层校验
?
(中途路由器做ip层校验,取消后就不需要校验了,可能会导致ip层有错的数据到目的地,但是数据包到了目的地后,如何校验,实际上tcpIP(tcp/UDP)机制实际对ip这部分是校验,如果ip层校验里面又拉上ip在校验一次就重复了,没必要,(我们tcp/UDP做校验和的时候,实际将ip的源目地址,上层包的长度,下一个包头等加进去了,我们叫伪首部),所以ipv6这边对ip就没必要在做校验和了--根本原因,还可以减轻中间路由器的压力
Ø 取消中间节点分片功能 超出mtu值就丢掉如何解决?
pmtu:路径mtu保证机制:源和目的去探测中间的mtu值是多少(那我发出去之前就不超出1280)
IPv6定义了多种扩展首部,这使得IPv6变得极其灵活,
l 能提供对多种应用的强力支持,
l 同时又为以后支持新的应用提供了可能。
如图,这些扩展首部放置在IPv6首部和上层协议首部之间,每个扩展首部的“下一个首部”字段指明下一个扩展首部的类型。
目前已经定义的首部见表:
基本ipv6报头
逐跳选项报头(0 ):
hop-by-hop options header 第一个报头指定第二个报头是什么,如next header=43指下一个报文是路由头
目的选项报头(43) |--有目的报头就会有选项报头
路由选择报头(43) |
分段报头(44): fragment header 源是可以分片的,中途路径没分片,如上层tcp传一个片给ipv6协议栈,ipv6会把这个东西传出去,但是发现超出了接口的mtu值,那就在接口这边分片
eap报头(50): ESP
认证报头(51): AH
目的选项报头(60): destination options
header到了目的地后,要处理这个报头
上层协议报头--TCP或者udp
这些扩展首部第一个字段是相同的,都是1个字节的“下一个首部”字段。
前一个扩展首部的“下一个首部”字段的值是后面一个扩展首部的类型,
最后一个扩展首部的“下一个首部”字段的值有可能是:
1) 上层协议首部的协议号,如ICMP、UDP和TCP,当然也可能是IPv4首部(把IPv4报文封装成IPv6报文转发,即IPv4
over IPv6隧道技术)或者IPv6首部(在IPv6报文外面再封装一层IPv6首部,即IPv6 over IPv6隧道技术)。
2) 59:表示“本首部是最后一个首部,后面没有首部了”。