ipv6

1、IPv6报文一般格式

image

1.1 IPv6与IPv4报文比较

image

报头变化:

IPv4最小报头:20字节

IPv6固定报头:40字节

  • 修改项
  • 地址:32位——> 128位
  • TTL ——> 跳数限制
  • 协议 ——> 下一报头
  • 服务质量 ——> 流量类型
  • 删除的项
  • 分片域
  • IP选项
  • 校验和
  • HL
  • 数据报长度
  • 增加的项
  • 流标签
1.2 IPv6扩展报头

主要的扩展报头:

逐跳选项
路由报头
分段报头
认证报头
封装安全有效载荷报头
目标选项

扩展报头 next header value
逐跳扩展头 0
ICMPv4 1
TCP 6
UDP 17
路由扩展头 43
ICMPv6 58
OSPF 89
没有下一个报头 59

image

扩展头顺序

  • 逐跳选项报头
  • 目标选项报头1(当存在路由报头时,用于中间目标)
  • 路由报头
  • 分片段报头
  • 身份验证报头
  • 封装安全有效载荷报头
  • 目标选项报头2(用于最终目标)
1.2.1 逐跳选项报头
  • 存放沿途所有路由器必须检查的信息!
  • 定义一些选项:eg:巨形数据报
  • 选项按照类型、长度、值出现

image

选项字段最高两位含义如下:

00 :跳过该选项

01 :丢弃数据包,不通知发送方

10 :丢弃数据包,无论数据包目标地址是否为一个组播地址,都向发送方发出ICMPv6参数问题的报文

11 :丢弃数据包,如果数据包的目标地址不是一个组播地址,就向发送方发出一个ICMPv6参数问题的报文

选项字段最高第三位表示在通向目标的路径中,选项数据是否可以改变

0 :选项数据不能改变

1 :选项数据可以改变

image

当路由器识别不出对应类型的时候,执行相应动作。

1.2.2 路由报头

使数据分组经过指定的中间节点到达目的地。

image

剩余分段:表示地址表中还有多少个地址未被访问!每过一个列表中的地址 -1

当数据到达每个中间目标地址的时候,执行动作如下:

  • 当前目标地址与第(n-段剩余值+1)个地址交换;(n是地址总数)
  • 段剩余值减1
  • 转发

image

2.ICMPv6协议

ICMPv6报文类型

差错报文:通告IPv6分组传输中出现的错误

  • 目标不可达
  • 数据包超长
  • 超时
  • 参数问题

信息报文:提供诊断和附加的主机功能

  • MLD
  • ND(ARP,redirect)
  • 回声请求和应答
2.1 ICMPv6报文的一般格式

image

  • 差错报文:类型=0 xxxxxxx =0 ~ 127
  • 信息报文:类型=1 xxxxxxx =128 ~255
  • 128: 回声请求 129:回声应答
2.2 ICMPv6的三个应用
  • ping
  • tracert
  • 第一个请求:HopLim=1(TTL=1)
  • 第一跳路由器收到,发送超时消息
  • 得到第一跳路由器信息
  • 第二个请求:HopLim=2(TTL=2)
  • 第二跳路由器收到,发送超时消息
  • 得到第二跳路由器信息
  • ……
  • 指导目的地,目的机通常发送端口不可达报文
  • PMTU发现
  • MTU:最大传输单元,在IPv4网络中可能由路由器承担分段,容易遭受分片型攻击,在IPv6中规定分段不能由路由器承担,只能由发送方分段(切割数据来适应载重能力),因此在IPv6中,要求源节点(发送方)必须在发送数据之前知道整个传输路径的最小MTU
  • PMTU发现原理(试探)

image

  • 源机向目的机发送MTU=1500字节的IPv6数据包
  • 路由器B向源发送超长信息,指定MTU=1400字节
  • 源机向目的机发送MTU=1400字节的IPv6数据包
  • 路由器C向源发送超长消息,指定MTU=1300字节
  • 源机向目的机发送MTU=1300字节的IPv6数据包
  • 此后,该路径的MTU都使用1300字节

最后更新: 2018年11月09日 19:58

原始链接: https://silence-linhl.github.io/blog/2018/11/09/IPv6-packet/

× 请我吃糖~
打赏二维码