• ICMPv6基本理论讲解


    目录

    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中的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生成

    通过接收到的RA携带的地址前缀生成IPv6地址

    重定向功能——(类似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信息(可以手工配置使得RA报文携带DNS服务器地址)

    int g0/0/1

     ipv6 nd ra dns-server 114.114.114.114

    DHCPv6有状态生成

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

    DHCPv6无状态生成

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

  • 相关阅读:
    基于SSM的烟草管理系统的设计与实现该怎么写呀有会写的加我V Hik-5468其他都好谈
    直观地、透彻地理解RNN、LSTM与Attention,这三种结构
    2023 羊城杯 final
    解决在pycharm中使用matplotlib画图问题
    使用html2canvas将html元素保存为图片
    一文搞懂什么是DSMM,干货!!!
    jenkins2.289.1版本远程命令执行漏洞
    插入算法改进-排序-数据结构与算法
    Spring Boot面试必问:启动流程
    深度学习模型的参数、计算量和推理速度统计
  • 原文地址:https://blog.csdn.net/m0_49864110/article/details/127694335