• IPv6如何实现arp类似的功能


    本文转自头条https://www.toutiao.com/i6828807334622396941/

    一、IPv4与IPv6报头对比

    1、IPv4报头

    IPv6没有ARP,通过NDP发现邻居,地址解析,理论+实战,干货分享

     

    (1)版本 :当前 IP 版本,IPv4。

    (2)首部长度:指的是 IPv4 报头长度,20-60 个字节,因为 Option 字段是 0-40 个字

    节。

    (3)区分服务:用于 Qos 报头。

    (4)总长度:总长度=头长+载荷长

    (5)标识、标志、 片移位 :用于 IP 报文的分片和重组。

    (6)协议:表示上层协议。

    (7)首部校验和:头校验和,对报文进行校验。

    2、IPv6 的报头

    IPv6没有ARP,通过NDP发现邻居,地址解析,理论+实战,干货分享

     

    (1)traffic class:是 IPv4 的 ToS,用于 QoS 中标识优先级

    (2)flow lable:IPv6 中增加了 flow lable(流标签)字段,用于唯一确定一条 IPv6 数据

    流,因为在 IPv4 中确定一条数据流需要使用 5 元组,而确定 TCP/UDP 端口号需要对报文

    进行传输层解封装,会消耗设备性能。而流标签可唯一标识数据流,能够更好实现 QoS。

    (3)payload length:有效载荷长度,用于表示上层协议报文的大小,因为 IPv6 报头是

    固定长 40byte,所以仅需标识上层协议载荷大小即可。

    (4)next header:标识上层协议或上层扩展报头,类似于 IPv4 的 protocol。IPv6 中增加

    了扩展报头用于实现扩展的功能如分片,加密等。

    (5)hop limit:跳数限制,用于防环,类似于 IPv4 的 TTL。

    (6)IPv6 删除了 IPv4 中的标识、标志、分片移位、首部长度、Option、校验和等字段。

    IPv6 之所以移除校验和,是因为在二层有 FCS 校验,在四层有 TCP/UDP 做校验,IPv6 报

    文无需校验,提升了 IPv6 的性能。

    (7)扩展报头:用于实现 IPv6 的扩展功能,比如分片,认证,加密等。

    二、NDP

    NDP(Neighbor Discovery Protocol)是 ICMPv6 的子协议,由于在 IPv6 中没有 ARP

    协议,所以在 IPv6 上层定义了 NDP 协议实现 ARP 的地址解析,冲突地址检测等功能以及

    IPV6 的邻居发现功能。

    IPv6没有ARP,通过NDP发现邻居,地址解析,理论+实战,干货分享

     

    1、NDP 使用 ICMPv6 的相关报文

    1)、RS(Router Solicitation):路由器请求报文

    2)、RA(Router Advertisement):路由器通告报文

    3)、NS(Neighbor Solicitation):邻居请求报文

    4)、NA(Neighbor Advertisement):邻居通告报文

    2、地址解析

    IPv6 的地址解析不再使用 ARP,也不再使用广播方式。

    1)、地址解析在三层完成,针对不同的链路层协议可以采用相同的地址解析协议

    2)、通过 ICMPv6(类型 135 的 NS 及类型 136 的 NA 报文)来实现地址解析。

    3)、NS 报文发送使用组播的方式,报文的目的 IPv6 地址为被请求的 IPv6 地址对应的“被

    请求节点组播地址”,报文的目的 MAC 为组播 MAC。

    4)、采用组播的方式发送 NS 消息相比于广播的方式更加的高效,也减少了对其他节点

    的影响和对二层网络的性能压力。

    5)、可以使用三层的安全机制(例如 IPSec)避免地址解析攻击。

    6)、在 IPv4 中,可以通过 ARP 就可以由 IP 地址解析到链路层地址。

    三、地址解析过程(邻居状态建立)

    IPv6没有ARP,通过NDP发现邻居,地址解析,理论+实战,干货分享

     

    (1)R1 会发送一个 NS(邻居请求报文,属于 ICMPv6 的消息报文,type=135),该报文

    源 IP 为 R1 的接口单播地址 2001::1,目的 IP 为要解析的 R2IPv6 单播地址对应的被请求节

    点组播地址 FF02::1:FF00:2(将要解析的 IPv6 单播地址的后 24bit 添加到 FF02::1:FF 后面,

    其前缀固定 104bit 为 FF02::1:FFXX:XXXX/104);

    二层封装源 MAC 为 R1 的 MAC,目的 MAC 为该被请求节点组播地址映射的 IPv6 组播

    MAC=3333-FF00-0002(IPv6 组播地址映射的组播 MAC,该组播 MAC 前 16bit 固定为

    3333,后 32bit 为 IPv6 组播地址后 32bit);

    IPv6没有ARP,通过NDP发现邻居,地址解析,理论+实战,干货分享

     

    (2)由于 R2 配置了单播地址 2001::2 之后,就默认加入了该单播地址对应的被请求节点

    组播地址 FF02::1:FF00:2 的组播组中,所以只要向该组播组发送报文,R2 都可以接受。

    (3)当 R2 收到 R1 的 NS 报文之后,通过查看该报文中标识的要解析的地址是不是自己接

    口的单播地址。如果是,则单播回应 NA(邻居通告报文,ICMPv6 的消息报文,

    type=136),NA 报文中携带了 R2 的 2001::2 地址对应的 MAC 地址。

    IPv6没有ARP,通过NDP发现邻居,地址解析,理论+实战,干货分享

     

    (4)R1 通过 R2 回应的 NA 报文可以得知单播地址 2001::2 对应的 MAC 地址。

  • 相关阅读:
    汽车常用的ECU芯片
    Semaphore 和 Mutex
    C语言中结构体 自引用 和 相互引用
    __ARM_PROFILE_M__ __CORE__ __ARMVFP__ __LITTLE_ENDIAN__
    Cortex-M3 Context Switching
    CORTEX -M3 : Registers in depth
    IAR USING PRE- AND POST-BUILD ACTIONS
    IAR EWARM Argument variables $PROJ_DIR$ $TOOLKIT_DIR$
    SQLSERVER一些公用DLL的作用解释
    SQLSERVER性能计数器的简单剖析
  • 原文地址:https://www.cnblogs.com/liuyufei/p/12928788.html
Copyright © 2020-2023  润新知