zl程序教程

您现在的位置是:首页 >  其它

当前栏目

ICMPv6基本理论讲解

基本 讲解 理论
2023-09-14 09:15:39 时间

目录

ICMPv6报文格式

差错报文

信息报文

邻居发现协议NDP

RS报文

Flags字段

地址前缀信息

生存周期

IPv6地址获取方式

链路本地地址的生成方式

非链路本地地址的生成方式


IPv6中取消了ARP(由于ARP会导致一些安全问题),ARP的功能都通过ICMPv6来实现

ICMPv6报文格式

差错报文

Type1——目的不可达

       Code0:没有到达目标设备的路由

       Code1:与目标设备的通信被管理策略禁止

       Code3:目的IP地址不可达

       Code4:目的端口不可达

Type2——数据包过长(报文超过出接口的链路MTU)

       Code字段一直为0,此数据包时Path MTU发现机制的基础

       Path Mtu报文,协商最小MTU

Type3——时间超时(设备收到IPv6字段Hop Limit字段为0或自身将Hop Limit字段减为0)

       Code0:在传输中超越了跳数限制

       Code1:分片重组超时

Type4——参数错误(报文有效性检查出错会发送)

Code0:IPv6基本头或扩展头的某个字段有错误

       Code1:IPv6基本头或扩展头的NextHeader值不可识别

       Code2:扩展头中出现未知的选项

信息报文

Type128——Echo Request (Ping请求报文)

Code字段为0

Type129——Echo Reply(Ping回应报文)

Code字段为0

邻居发现协议NDP

NDP协议时IPv6协议的基础,IPv4中的ICMP、ARP、DHCP协议都可以通过NDP来实现。

NDP协议依靠ICMPv6协议发送报文,其中定义的5种ICMPv6报文如下

Type133——RS报文(路由器请求)

Type134——RA报文(路由器公告)

Type135——NS报文(邻居请求)

Type136——NA报文(邻居公告)

Type137——重定向报文

NDP协议功能

地址解析(类似ARP功能,获取MAC地址)

通过发送NS和NA报文来获取对端的MAC地址

地址冲突检测DAD(类似免费ARP,检查地址是否冲突)

发送NS和NA报文

一个单播地址在分配给一个接口之后,如果此地址未通过DAD,则此地址就被称为实验地址(Tentative Address),试验地址无法进行通信

Tentative地址无法使用的两种情况

1、此设备会发送NS报文(类似免费ARP),如果收到回应的NA报文,则本端不再使用该Tentative地址,地址被标识未Duplicated状态

2、当此地址还是Tentatice地址,如果收到对方发来的DAD NS报文时,接收方(本端)不再启用该地址

邻居状态跟踪(类似ARP表项)

IPv4的ARP表项老化时间1200s到了之后不会立马撤销,会发送一个ARP请求,在等待一个延迟后如果没有收到ARP应答,才会删除此表项

邻居状态跟踪,存储ARP状态信息,为下次通信提供保障

NDP定义了5种邻居状态(未完成、可达、陈旧、延迟、探查)

未完成状态:知道对端IPv6地址,不知道对端MAC地址

可达状态:发送NS、NA报文后获取到对端MAC地址

陈旧状态:表项老化时间32s过后,一直呆在陈旧状态

延时状态:当下次使用此表项时,发送NS报文,进入延时状态。

                在延时状态收到NA报文,直接进入可达状态

                在延时状态,发送最多5次NS报文,如果没有收到NA报文,进入探查状态

探查状态:发送NS报文

                在探查状态收到NA报文,直接进入可达状态

                在探查状态,发送1次NS报文,如果没有收到NA报文,进入空状态

延时状态的NS是组播的,探查状态的NS是单播的

路由器发现——获取前缀,通过EUI-64生成IPv6地址

发送RS(目的地址-FF02::2)和RA(目的地址-FF02::1)报文来获取IPv6地址

前缀必须为64,后64接口ID通过EUI-64生成

重定向功能——(类似ICMP重定向功能)

防止次优路径的产生,重定向报文的目的地址为单播地址


RS报文

Flags字段

M=0  表示无状态获取IPv6

M=1  表示DHCPv6获取IPv6

0=1   表示不获取DNS等其它参数

0=1   表示通过DHCPv6获取DNS等其它参数

地址前缀信息

通过下发地址前缀信息使得终端可以通过无状态获取IPv6地址

生存周期

地址状态

当终端获取到前缀并生成IPv6单播地址后,首先进入Tentavie状态

在通过DAD地址冲突检测后,进入Preferred状态(并在Preferred lifetime内保持该状态)

在Preferred lifetime超时后,进入Deprecated状态(并在Valid lifetime内保持该状态)

在Valid lifetime超时后,地址进入Invalid状态

不同状态对地址的定义

Preferred状态的地址,终端可以使用该地址正常收发报文

Deprecated状态的地址,现有的连接可以使用该地址,但是不可以使用此地址建立新的连接

Invalid状态的地址,该地址无法继续使用


IPv6地址获取方式

链路本地地址的生成方式

手动配置

自动生成——通过软件或者EUI-64

非链路本地地址的生成方式

手工配置

自动生成

无状态自动生成

通过NDP的RS、RA来生成IPv6地址,无法获取到DNS信息

DHCPv6有状态生成

通过DHCPv6获取IPv6地址、DNS等信息

DHCPv6无状态生成

通过NDP的RS/RA生成IPv6地址,通过DHCPv6获取DNS信息