计算机网络协议分析 第6课 IPV6
第4章 IP
4.3 IP协议的安全问题
ping of death
原理:发送长度超过65535的IP包,目标主机重组分片时会造成缓冲区溢出
实现:MF=0(最后一片),总长度为49,偏移量为0x1FFE;重组后长度为0xFFE*8+(49-20)=65549.
Teardrop
原理:第二个IP分片偏移量小于正常值,使两个分片出现重叠
实现:
- 分片1:MF=1,片偏移=0,长度为36(不含IP首部)
- 分片2:MF=0,片偏移=3
- 偏移字节数 3*8=24<36,造成两个分片重叠
4.4 IPv6数据报
IPv6数据报格式
IPv6数据报=1个基本首部+0个或多个扩展首部+数据
例题一:
问:此IPv6数据报的总长度为多少字节?
答:因为他为IPv6数据报,其中下一首部为ICMPv6,且下一个首部中没有下一个首部,可算得40+40,共80字节
例题二:
问:此ICMPv6数据报的总长度是多少字节?
答:124的长度减去8的分片扩展首部得到总长度为116字节
IPv4 VS IPv6
IPv4的首部长度、总长度换成了载荷长度
IPv4的服务质量换成了通信类,流标签
IPv4的标识、标志、片偏移换成了分片扩展首部
IPv4的协议字段换成了下一个首部
取消了选项、检验和,加上了扩展首部部分
IPv6扩展首部
6种IPv6扩展首部:
- 逐跳选项(0)
- 目的地选项(60)
- 源路由(43)
- 分片(44)
- 认证(51)
- ESP(50)
问题:路由器如何判断 一个IPv6数据报携带了扩展首部?
答:基本首部中“下一个首部”字段的值
逐跳选项扩展首部(0)
- 必须紧跟在基本首部的后面,传输路径中所有路由器均要处理它
- 基本首部中的“下一首部”字段的值=0
- 作用:
- 用于发送巨型帧
- 用于资源预留协议RSVP
巨型帧(Jumbo)
- 在主干网和高容量网络中,携带巨型帧有更好的性能
- 巨型帧由逐跳选项扩展首部携带
问:路由器如何判断收到的是一个巨型帧?
答:基本首部中“有效载荷长度”字段值为0,且“下一首部”字段值为0
目的地选项扩展首部(60)
- 包含目的地需要处理的信息,可出现两次:
- 位于路由扩展首部的前面,目标结点和源路由选择首部中指定的节点对其进行处理
- 位于上层数据的前面,只有目标节点对其进行处理
- 前一个扩展首部或基本首部中下一个首部字段的值=60
源路由扩展首部(43)
- IPv6源主机在该首部中列出IP地址清单,以指定数据报的传输路径
- 前一个扩展首部或基本首部中下一个首部字段的值=43
- 路由类型:严格源路由/宽松源路由
- 跳数:到过目的地还需要的跳数
类比IPv4的源路由选项
分片扩展首部(44)
- 当源主机需要发送比PMTU更大的数据报时使用分片扩展手背部
- 前一个扩展首部或基本首部中,下一个首部字段的值=44
- 标识、片偏移、M:
问:为什么没有DF位?
答:IPv6路由器不支持分片
链路MTU与PMTU
- 链路MTU:一条链路上能进行传输的最大传输单元
- PMTU:源地址和目的地址之间的路径中所有链路MTU中的最小值
最小MTU:576字节(IPv4网络)、1280字节(IPv6网络),超过可能会被丢弃
- 不可分片部分:基本首部+需中间路由器处理的扩展首部(如逐跳选项扩展首部、源路由选项扩展首部)
- 可分片部分:只能被目的节点处理的扩展首部(中间路由器不处理)+上层数据
不可分片部分考虑其中的两个字段:有效载荷长度(除基本首部之外其他的扩展首部和数据报中的内容)、下一个首部(指向紧跟在后面的首部)
分片扩展首部:考虑M位
认证扩展首部(51)
- 确保IPv6数据报各部分在传输过程中不被修改(TTL、源路由扩展首部除外),但不对数据加密
- 前一个扩展首部或基本首部中下一个首部字段的值=51
封装ESP扩展首部(50)
- 位于上层数据的前面,对数据保密
- 前一个扩展首部或基本首部中“下一个首部”字段的值=50