当前位置: 首页 > news >正文

华为HCIE课堂笔记第十二章 ICMPv6和NDP协议

第十二章  ICMPv6和NDP

12.1 背景

ICMPv6协议用于IPV6协议的消息传递:地址解析、重复地址检测、无状态地址配置、NDP协议、路径MTU发现。

12.2 ICMPv6介绍

ICMPv6的头部字段包含Type字段、Code字段、校验和字段。

消息分为两种:

  1. 查错消息:Type字段(8bit),最高bit位为0的消息,即Type字段取值为0-127。主要的消息种类如下:
    1. 目的不可达,Type为1
    2. 数据包过长,Type为2,用于路径MTU发现
    3. 超时,Type为3
    4. 参数错误,Type 类型为4
  2. 信息消息:Type字段的最高bit位为1的消息,即Type字段取值范围是128-255。常见的消息类型如下:
    1. ICMPv6的请求消息,消息类型为128
    2. ICMPv6的应答消息,消息类型为129

邻居发现(RFC2461和RFC4861)如下:

    1. Type=133,路由器请求(Router Solicitation)
    2. Type=134,路由器公告(Router Advertisement)
    3. Type=135,邻居请求(Neighbor Solicitation)
    4. Type=136,邻居公告(Neighbor Advertisement)
    5. Type=137,重定向  (Redirect)

组播侦听者发现协议(RFC2710RFC3810),组播发现协议有两个版本MLDv1MLDv2,对应IGMPv2IGMPv3,原理相同,使用报文如下:

    1. Type=130,查询消息
    2. Type=131,报告消息
    3. Type=132,离开消息
    4. Type=143,MLDv2报告消息

12.3 ICMPv6报文的应用

12.3.1 Path-MTU发现(路径MTU发现)

IPV6的通信仅在源端进行报文的分片操作,路径中的设备不进行报文分片仅依据基本IPV6头部转发数据,提高转发效率。因此源端需要探测出源端到达目的端的最小MTU值。

原理:源端按照自己的MTU值发送数据给到目的端,沿途经过的设备如果出现报文的大小大于自己的MTU值时,则向源端发送Type类型为2的ICMPv6报文,表示数据包过大,并提供本地的MTU值,直到报文到达目的端,因此源端获取了整个路径上的最小MTU值,按照最小MTU值转发数据。

12.4 NDP协议邻居发现协议

12.4.1 路由器发现(RA和RS报文)

  1. 路由器发现:主机选择链路上的哪个路由器作为缺省网关,通过RA报文通告参数。
  2. 前缀发现:路由器通过RA报文通告自己的前缀,主机根据获取前缀配置IPv6地址。(无状态自动配置)
  3. 参数发现:路由器通过RA报文通告相应的参数:缺省跳数限制,地址配置方式。
  4. RA报文的发送方式:
    1. 周期发送,发送间隔默认200s-600s之间
    2. 触发发送,主机发送RS报文之后,路由器通过RA响应。
  5. 主机通过接收到RA报文之后,产生缺省路由,缺省路由下一跳指向路由器的该链路的链路本地地址。

12.4.2 地址解析

1、PC1访问PC2,首先进行MAC地址解析,发送NS报文(邻居请求报文),目的IP地址为PC2的接口的IPV6的地址对应的被请求节点组播组地址。

2、PC2收到后,确认目的IPv6组播地址是自己加入的组播组,因此相应ICMPv6的NA报文,单播将自己的MAC地址返回给PC1

12.4.3 邻居发现

存在5个状态:

  1. Incomplete(未完成):已经发送了NS报文,但是没有收到NA报文,本地的邻居表中不存在邻居的MAC地址,表项不完整
  2. Reachable状态(可达):收到邻居的NA报文,本地表项完整(包含MAC地址),在可达时间内(默认30s)
  3. Stale状态(陈旧):邻居表项闲置30s没有进行通信,则邻居状态从Reachable状态切换为Stale状态
  4. Delay状态(延迟):在Stale状态本地发送IPV6报文和NS报文给到邻居,进入到Delay状态等待回复。如果收到了NA回复,则再次进入到Reachable可达状态。如果规定时间没有收到NA回复,则进入到Probe状态。
  5. Probe状态(探测):在该状态连续3秒,每秒一次,发送三个NS报文进行邻居探测,如果规定时间有响应,则邻居状态切换为可达状态,如果没有响应,则删除表项。

12.4.5 重复地址检测

任何一个单播地址在使用前都需要进行重复地址检测,此时单播地址的状态是实验地址:

  1. PC1与PC2地址重复,PC1新配置,PC2早配置(PC2的地址已经经过了重复地址检测)
  2. PC1通过NS报文进行探测,NS报文中的源IPV6地址为::,目的IPv6地址为待检测的IPV6地址的被请求节点组播组地址。
  3. 如果存在地址冲突,PC2则会响应该NS报文,通过NA报文告知PC1,报文中源IPV6地址是重复地址(已通过检测的),目的地址所有节点组播地址。PC1收到后,确定接口的地址存在地址冲突
  4. 特殊情况:双方同时使用一个相同地址,两边的地址状态都是实验地址,一边先发发送NS报文,则另一边收到后不会发送NS报文,也不会发送NA,直接放弃使用该地址。(先后问题)

12.4.6 重定向功能

和IPV4情况相同

http://www.lryc.cn/news/279775.html

相关文章:

  • GNSS科研常用相关网站及资源
  • 进程的创建与回收学习笔记
  • 【CCNet】《CCNet:Criss-Cross Attention for Semantic Segmentation》
  • Qt QSQlite数据库插入字符串中存在单个双引号或单个单引号解决方案
  • Linux系统中的IP地址、主机名、和域名解析
  • soc算法【周末总结】
  • SpringBoot之优化高并发场景下的HttpClient并提升QPS
  • go-zero 如何在任意地方获取yaml中的值
  • C++20结构化绑定应用实例(二百五十六)
  • 改进YOLOv8注意力系列四:结合中心化特征金字塔EVCBlock、大核卷积注意力LKA_Attention、全局注意力MobileViTAttention
  • idea中使用Lombok 失效,@Slf4j 找不到符号的解决办法
  • MySQL修炼手册8:约束与完整性:保证数据的一致性
  • React入门 - 03(初识 React 组件和 JSX)
  • 华为OD机试 - 反射计数(Java JS Python C)
  • Linux系统中使用systemctl命令控制软件的启动和关闭
  • 2024年01月微软更新Bug 已解决 !Explorer.EXE 提示:Windows无法访问指定设备、路径或文件。你可能没有适当的权限访问该项目。
  • Qt/QML编程学习之心得:slider(34)
  • 使用metricbeat 监控多ES集群
  • 阿里云服务器+宝塔 (尝试部署一个最简单的静态页面)
  • 每日一题——LeetCode1160.拼写单词
  • 物联网协议Coap之Core和NetWork简介
  • Java SE入门及基础(10)
  • Docker五部曲之二:Docker引擎
  • 简单说一下原型与原型链
  • 11Spring IoC注解式开发(上)(元注解/声明Bean的注解/注解的使用/负责实例化Bean的注解)
  • k8s 部署Jenkins项目
  • #每日一题#力扣#2085.统计出现过一次的公共字符串
  • Python系列(1):简洁优雅,功能强大的编程语言
  • HarmonyOS应用开发学习笔记 arkTS自定义弹窗(CustomDialog)简单使用 arkTS弹出框回调、监听
  • RabbitMQ(六)消息的持久化