• TCP/IP协议专栏——ND 详解——网络入门和工程维护必看


    术语

    ND 邻居发现(Neighbor Discovery)
    NS 邻居请求(Neighbor
    Soliciation)
    NA 邻居回答(Neighbor Adertisment)
    RS 路由请求(Router Soliciation)
    RA 路由回答(Router Adertisment)
    NUD 邻居不可达检测(Neighbor Unreachability Detection)
    DAD 重复地址检测(Duplicate Address Detection)
    Reachable Time 可达时间
    Retrans Timer 重新传输定时器
    Neighbor Cache Entry 邻居缓存条目
    Target Address 目标地址,具体的单播地址,NS包中具体的请求地址
    Link-layer adderss 链路层地址,通常就是设备MAC地址
    Link-local address 链路域地址,可参考IPv6编址相关文档 > Target Link-Layer Address 目标链路层地址
    Source Link-Layer Address 源链路层地址
    Solicited-node MulticastAddress 请求结点组播地址,可参考RFC3515

    协议概况

    1. 邻居发现协议是用来发现在同一链路上的邻居结点,它主要用来解决以下一些问题:
    2. 路由器发现:主机定位主机侧链路的路由设备;
    3. 掩码发现:主机、路由器用来发现所处链路的特定目的地址的掩码配置;
    4. 参数发现:路由设备用来发现所处链路的一些参数,例如:链路MTU,Hop Limit等;
    5. 地址自动配置:路由设备为自己的接口自动配置一个V6地址;
    6. 地址解析:路由设备为给定的IPv6地址在目标链路上选择一个link-layer地址;
    7. 下一跳选择:一个用来根据IP目的地址选择下一跳IP的算法,下一跳可以是路由设备也可以是目的地址本身;
    8. 邻居不可达检测:路由设备用来检测邻居的可达性;
    9. 重复地址检测:路由设备用来检测自身的IP地址是否被其它结点使用;
    10. 重定向:路由设备用来通告主机针对具体目的IP的更好下一跳选择;

    ICMPv6包

    邻居发现协议定义5种不同的ICMP包:

    1. 路由请求包(RS):当主机上的接口IPv6 enable后,便会发送一个RS包到路由设备,请求其返回一个路由通告包;
    2. 路由通告包(RA):路由通告只有几种情况下发出,⑴在收到RS包后,⑵当链路发生变化时,⑶网络参数发生变化时,⑷一个发送周期到达;该通告可以包含目的链路的掩码,地址配置或则Hop
      Limit等信息;
    3. 邻居请求包(NS):NS包是路由设备用来获得邻居的link-layer地址,或则通过已获得的link-layer地址来判断邻居可达性,NS包也被用来重复地址检测;
    4. 邻居通告包(NA):一个针对NS包的应答包。另外还有一种非应答的NA包,用来
    5. 重定向(Redirect):路由设备通告主机针对具体目的IP的更好下一跳;

    IPv6邻居发现(ND)与IPv4中ARP区别

    1. 在IPv4中,地址解析ARP是基于链路层的广播机制实现的,在一个比较大的站点范围内会占用大量的带宽。
    2. 在IPv6中,这一过程是基于IP层的组播机制实现的。
    3. IPv4的ARP运行在数据链路层,不同的网络介质需要有不同的ARP协议,例如Ethernet ARP与FDDI ARP就不完全相同。
    4. IPv6的ND协议是运行在网络层,与介质无关,任何网络媒介都可以运行相同的ND协议。

    ND协议介绍

    在这里插入图片描述

    Ipv6邻居发现(ND)机制

    邻居发现使用ICMPv6协议
    ND定义了5种ICMPv6报文类型

    1. 路由器请求(RS):Router solicitation(ICMPv6 type 133)

    2. 路由器公告(RA):Router advertisement (ICMPv6 type 134)

    3. 邻居请求(NS): Neighbor solicitation (ICMPv6 type 135)

    4. 邻居公告(NA): Neighbor advertisement(ICMPv6 type 136)

    5. 重定向(Redirect) (ICMPv6 type 137)

    路由器请求(Router solicitation)

    为了使路由器迅速产生路由器通告,主机发送路由器请求
    当节点启动时,发送RS,期待RA
    源地址为自己的地址或者未指定地址
    目标地址为ff02::2本地链路所有路由器组播组
    选项字段为源链路层地址,::例外

    在这里插入图片描述

    路由器通告(Router advertisement)

    路由器周期性的发送路由器通告消息,或者对路由器请求作出回应
    周期发送/响应RS
    源地址必须是自己的本地链路地址
    目标地址为ff02::1本地链路所有节点组播组
    选项字段包括源链路层选项前缀选项MTU选项

    在这里插入图片描述

    前缀选项
    可有多个前缀选项
    L位为1表示该前缀可有于本地链路判断
    A位为1可用于无状态地址自动配置
    Valid lifetime &Preferred Lifetime用于重新编址平滑过渡

    在这里插入图片描述

    邻居请求(Neighbor solicitation)

    节点(主机或路由设备)发送邻居请求报文来请求目标节点链路层地址,并同时将自己的链路层通知给邻居设备。
    邻居请求在节点处理地址是是多点传送的。
    在节点对邻居可达性进行校验时是单点传送的。
    当路由设备想获得一个Target地址(具体的IPv6地址)对应的link-layer地址时,发送NS组播包;
    当检测一个邻居是否可达时发单波包;
    多种ND机制使用
    源地址为未指定地址::或者可用单播地址
    目标地址为目标地址所请求节点的组播组地址/单播地址
    目标地址为所请求节点地址
    选项字段为源链路层地址(可无)
    在这里插入图片描述

    邻居请求(Neighbor solicitation)

    IP 字段:

    源地址 — 发送NS包接口的IPv6地址,如果是DAD过程,该地址为不确定地址(unspecified address);
    目的地址 — Target(目标)地址对应的请求节点组播地址
    (solicited-node multicast address);
    Hop Limit — 255(注意,必须是255,否则视为无效包直接丢弃)

    ICMP字段

    类型 135
    代码 0
    Target地址 具体请求的单播IPv6地址

    选项字段

    可以是发送NS端的link-layer地址,
    但是如果IPv6源地址为未指定地址时,则不可以包含此选项;

    选项类型

    Source Link-Layer Address——1
    Target Link-Layer Address ——2
    Prefix Information ——————3
    Redirected Header ——————4
    MTU ————————————5

  • 相关阅读:
    安装redis 集群
    JUC第十五讲:JUC集合-ConcurrentHashMap详解(面试的重点)
    跨时钟域问题(一)(建立时间保持时间和亚稳态)
    Android 复习string.xml中的替换符
    vs2022 创建一个同时支持.net480和.net6.0的WPF项目
    2022-10-27-梯度下降法结合线性回归预测公交车数量和GDP关系
    【数模】Matlab allcycles()函数的源代码(2021a之前版本没有)
    IPv6实现内网穿透,极低成本保姆级教程
    多线程怎么共用一个事务
    【英语:语法基础】B7.核心语法-英文的基础时态
  • 原文地址:https://blog.csdn.net/weixin_44081384/article/details/126849283