IPv6邻居发现协议
字数 1524 2025-12-05 16:23:44

IPv6邻居发现协议

IPv6邻居发现协议是IPv6网络层的一个核心协议,它替代了IPv4中的地址解析协议、ICMP路由器发现和重定向协议等,提供了一套统一和增强的机制,用于实现同一链路上节点之间的交互。理解它需要循序渐进。

  1. 基本目标与核心功能
    邻居发现协议的核心目标,是让同一物理或逻辑链路上的节点能够发现彼此、确定彼此的链路层地址、验证对方是否可到达,并维护这些信息。其五大核心功能为:

    • 地址解析:类似于IPv4的ARP,将目标节点的IPv6地址解析为其对应的链路层地址。
    • 路由器发现:主机无需配置即可发现本地链路上的路由器,并获取网络前缀和配置参数。
    • 前缀发现:主机发现与其连接的网络地址前缀,用于自动配置地址。
    • 参数发现:主机发现链路的参数,如最大传输单元。
    • 邻居不可达检测:持续验证到邻居节点的双向可达性,这是IPv6可靠性的一大增强。
  2. 协议消息类型
    NDP通过一组ICMPv6报文类型来实现其功能,主要有五种:

    • 路由器请求:主机发送,用于主动请求路由器立即发送路由器通告。
    • 路由器通告:路由器定期发送或响应RS,包含网络前缀、默认路由器、MTU等关键配置信息。这是IPv6无状态地址自动配置的基础。
    • 邻居请求:用于地址解析和邻居不可达检测。当节点需要解析目标IPv6地址的链路层地址时,会向目标节点的“请求节点组播地址”发送NS报文。
    • 邻居通告:响应NS报文,或主动宣告链路层地址变更。其中包含关键的“目标链路层地址”字段,以完成地址解析。
    • 重定向:当路由器发现主机选择的下一跳不是最优时,会发送此报文通知主机更佳的下一跳地址。
  3. 关键工作流程详解

    • 地址解析流程
      1. 节点A需要与同链路的节点B通信,已知B的IPv6地址。
      2. A首先检查本地“邻居缓存”。若没有条目,则构造一个邻居请求报文,其“目标地址”字段为B的IPv6地址。
      3. 关键步骤:A将此NS报文发送到一个特殊的组播地址——请求节点组播地址。该地址由前缀FF02::1:FF00:0/104和B的IPv6地址最后24位组成。这确保了只有B会接收此报文,比IPv4的ARP广播更高效。
      4. B收到NS后,会以邻居通告单播回复A,报文中包含自己的链路层地址。
      5. A收到NA后,将B的IPv6地址与链路层地址的映射存入邻居缓存。
    • 无状态地址自动配置
      1. 主机启动后,发送路由器请求
      2. 链路上的路由器回复路由器通告,报文中携带一个或多个“网络前缀”。
      3. 主机结合收到的前缀和自己的接口标识符,自动生成一个全球单播地址。同时,RA中还会指明该路由是否可作为默认网关。
  4. 安全机制:安全邻居发现
    原始的NDP协议易受攻击,如伪造路由器通告导致流量劫持,或伪造邻居通告进行地址欺骗。为此,SEND 应运而生。

    • SEND通过为NDP消息添加加密签名、使用证书绑定主机身份等措施,确保路由器通告和邻居通告等关键消息的真实性和完整性。
    • 它主要依赖于密码生成地址RSA签名。CGA地址由主机的公钥等信息计算得出,可证明地址的所有权。NDP消息使用发送者的私钥签名,接收者用对应的公钥验证。
  5. 邻居发现协议与网络状态维护
    NDP不是一个一次性的协议,它维护着几个关键的数据结构来保证网络通信的持续高效:

    • 邻居缓存:相当于IPv4的ARP缓存,存储已解析的IPv6到链路层的映射及状态。
    • 目的地缓存:存储下一跳信息,可以是路由器或直接邻居。
    • 前缀列表:存储从路由器通告中学到的网络前缀。
    • 默认路由器列表
      其中,邻居缓存条目具有复杂的状态机(未完成、可到达、陈旧、延迟、探测),通过周期性的邻居不可达检测来驱动状态转换,确保信息的时效性。
IPv6邻居发现协议 IPv6邻居发现协议是IPv6网络层的一个核心协议,它替代了IPv4中的地址解析协议、ICMP路由器发现和重定向协议等,提供了一套统一和增强的机制,用于实现同一链路上节点之间的交互。理解它需要循序渐进。 基本目标与核心功能 邻居发现协议的核心目标,是让同一物理或逻辑链路上的节点能够发现彼此、确定彼此的链路层地址、验证对方是否可到达,并维护这些信息。其五大核心功能为: 地址解析 :类似于IPv4的ARP,将目标节点的IPv6地址解析为其对应的链路层地址。 路由器发现 :主机无需配置即可发现本地链路上的路由器,并获取网络前缀和配置参数。 前缀发现 :主机发现与其连接的网络地址前缀,用于自动配置地址。 参数发现 :主机发现链路的参数,如最大传输单元。 邻居不可达检测 :持续验证到邻居节点的双向可达性,这是IPv6可靠性的一大增强。 协议消息类型 NDP通过一组ICMPv6报文类型来实现其功能,主要有五种: 路由器请求 :主机发送,用于主动请求路由器立即发送路由器通告。 路由器通告 :路由器定期发送或响应RS,包含网络前缀、默认路由器、MTU等关键配置信息。这是IPv6无状态地址自动配置的基础。 邻居请求 :用于地址解析和邻居不可达检测。当节点需要解析目标IPv6地址的链路层地址时,会向目标节点的“请求节点组播地址”发送NS报文。 邻居通告 :响应NS报文,或主动宣告链路层地址变更。其中包含关键的“目标链路层地址”字段,以完成地址解析。 重定向 :当路由器发现主机选择的下一跳不是最优时,会发送此报文通知主机更佳的下一跳地址。 关键工作流程详解 地址解析流程 : 节点A需要与同链路的节点B通信,已知B的IPv6地址。 A首先检查本地“邻居缓存”。若没有条目,则构造一个 邻居请求 报文,其“目标地址”字段为B的IPv6地址。 关键步骤 :A将此NS报文发送到一个特殊的 组播地址 —— 请求节点组播地址 。该地址由前缀 FF02::1:FF00:0/104 和B的IPv6地址最后24位组成。这确保了只有B会接收此报文,比IPv4的ARP广播更高效。 B收到NS后,会以 邻居通告 单播回复A,报文中包含自己的链路层地址。 A收到NA后,将B的IPv6地址与链路层地址的映射存入邻居缓存。 无状态地址自动配置 : 主机启动后,发送 路由器请求 。 链路上的路由器回复 路由器通告 ,报文中携带一个或多个“网络前缀”。 主机结合收到的前缀和自己的接口标识符,自动生成一个全球单播地址。同时,RA中还会指明该路由是否可作为默认网关。 安全机制:安全邻居发现 原始的NDP协议易受攻击,如伪造路由器通告导致流量劫持,或伪造邻居通告进行地址欺骗。为此, SEND 应运而生。 SEND通过为NDP消息添加加密签名、使用证书绑定主机身份等措施,确保路由器通告和邻居通告等关键消息的真实性和完整性。 它主要依赖于 密码生成地址 和 RSA签名 。CGA地址由主机的公钥等信息计算得出,可证明地址的所有权。NDP消息使用发送者的私钥签名,接收者用对应的公钥验证。 邻居发现协议与网络状态维护 NDP不是一个一次性的协议,它维护着几个关键的数据结构来保证网络通信的持续高效: 邻居缓存 :相当于IPv4的ARP缓存,存储已解析的IPv6到链路层的映射及状态。 目的地缓存 :存储下一跳信息,可以是路由器或直接邻居。 前缀列表 :存储从路由器通告中学到的网络前缀。 默认路由器列表 。 其中,邻居缓存条目具有复杂的状态机(未完成、可到达、陈旧、延迟、探测),通过周期性的邻居不可达检测来驱动状态转换,确保信息的时效性。