IPV6 >> 02 IPV6基础 >> 05 IPV6报文格式 >>

1.1    IPv6和IPv4报文对比

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)

 

 

1.2    IPv6扩展报头

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:表示本首部是最后一个首部,后面没有首部了