ICMPv6与NDP

1. ICMPv6简介

ICMP概述

Internet控制消息协议ICMP (Internet Control Message Protocol)是IP协议的辅助协议。
ICMP协议用来在网络设备间传递各种差错和控制信息,对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。
在这里插入图片描述

ICMP差错检查

ICMP Echo消息常用于诊断源和目的地之间的网络连通性,同时还可以提供其他信息,如报文往返时间等。
功能:Ping
Ping是网络设备、Windows、Unix和Linux平台上的一个命令,其实是一个小巧而实用的应用程序,该应用基于ICMP协议。
Ping常用于探测到达目的节点的网络可达性。

ICMP错误报告

ICMP定义了各种错误消息,用于诊断网络连接性问题;根据这些错误消息,源设备可以判断出数据传输失败的原因。
功能:Tracert
Tracert基于报文头中的TTL值来逐跳跟踪报文的转发路径。Tracert是检测网络丢包和时延的有效手段,同时可以帮助管理员发现网络中的路由环路。

ICMPv6概述

ICMPv6是IPv6的基础协议之一。
在IPv6报文头部中,Next Header字段值为58则对应为ICMPv6报文。
ICMPv6报文用于通告相关信息或错误。
ICMPv6报文被广泛应用于其它协议中,包括NDP、Path MTU发现机制等。
ICMPv6控制着IPv6中的地址自动配置、地址解析、地址冲突检测、路由选择、以及差错控制等关键环节。

ICMP报文格式

在这里插入图片描述
在这里插入图片描述

ICMPv6报文类型

ICMPv6报文分为两类:差错报文和信息报文。
①差错报文:
差错报文(Error Messages),也称为差错消息,Type字段最高bit为0,也就是ICMPv6 Type=[0,127]
差错消息用于报告在转发IPv6数据包过程中出现的错误,如常见的目的不可达、超时等等。
差错报文应用
1)Path-MTU发现
①在IPv6中,中间转发设备不对IPv6报文进行分片,报文的分片将在源节点进行。
②MTU(Path MTU)就是路径上的最小接口MTU。
③PMTUD(Path MTU发现机制)的主要目的是发现路径上的MTU,当数据包被从源转发到目的地的过程中避免分段。
④依赖PMTUD,数据的发送方可以使用所发现到的最优PMTU与目的地节点进行通信,这样可以避免数据包在从源传输到目的的过程之中,被中途的路由器分片而导致性能的下降。
在这里插入图片描述
2)ping
Ping基于ICMPv6信息报文实现
Echo Request:用于发送到目标节点,以使目标节点立即发回一个Echo Reply应答报文。Echo Request报文的Type字段值为128,Code字段的值为0。
Echo Reply:当收到一个Echo Request报文时,ICMPv6会用Echo Reply报文响应。Echo Reply报文的Type字段的值为129,Code字段的值为0。在这里插入图片描述
②信息报文
信息报文(Information Messages) ,也称为信息消息,Type字段最高bit为1,也就是ICMPv6 Type=[128,255]
信息报文可以用来实现同一链路上节点间的通信和子网内的组播成员管理等。
ICMPv6其他常用报文
①邻居发现(RFC2461和RFC4861)
Type=133 路由器请求(Router Solicitation)
Type=134 路由器公告(Router Advertisement)
Type=135 邻居请求(Neighbor Solicitation)
Type=136 邻居公告(Neighbor Advertisement)
Type=137 重定向 (Redirect)
②组播侦听者发现协议(RFC2710和RFC3810)
Type=130 查询消息
Type=131 报告消息
Type=132 离开消息
Type=143 MLDv2报告消息

2.NDP介绍

NDP概述

RFC2461定义了IPv6邻居发现协议NDP。NDP是IPv6中非常核心的组件。
主要功能为:
在这里插入图片描述

NDP报文类型及功能

NDP使用以下几种ICMPv6报文:
RS(Router Solicitation):路由器请求报文
RA(Router Advertisement):路由器通告报文
NS(Neighbor Solicitation):邻居请求报文
NA(Neighbor Advertisement):邻居通告报文

路由器发现

路由器发现是指主机发现本地链路上路由器和确定其配置信息的过程。
路由器发现可以同时实现以下三个功能:
①路由器发现 (Router Discovery):主机定位邻居路由器以及选择哪一个路由器作为缺省网关的过程。
②前缀发现 (Prefix Discovery):主机发现本地链路上的一组IPv6前缀的过程,用于主机的地址自动配置。
③参数发现 (Parameter Discovery):主机发现相关操作参数的过程,如输出报文的缺省跳数限制、地址配置方式等信息。
使用报文:
①RS 路由器请求
②RA 路由器通告
协议交互主要有两种情况:
①主机发送RS触发路由器回应RA
②路由器周期发送RA

路由器发现流程

1)主机请求触发
当主机启动时,主机会向本地链路范围内所有的路由器发送RS报文,触发路由器响应RA报文。主机发现本地链路上的路由器后,自动配置缺省路由器,建立缺省路由表、前缀列表和设置其它的配置参数。
在这里插入图片描述
①主机启动,向本地链路范围内所有的路由器发送RS报文。
②路由器响应RA报文。
经过以上步骤,主机生成缺省路由,下一跳指向缺省路由器的链路本地地址。
2)路由器周期性发送
路由器周期性的发送RA报文,RA发送间隔是一个有范围的随机值,缺省的最大时间间隔是600秒,最小时间间隔是200秒。
对于定期发送的RA报文,其地址有如下要求:
Source Address:必须是发送接口的链路本地地址。
Destination Address :FF02::1。
在这里插入图片描述

地址解析

IPv6地址解析通过ICMPv6(NS和NA报文)来实现。
在三层完成地址解析,主要带来以下几个好处:
①地址解析在三层完成,不同的二层介质可以采用相同的地址解析协议。
②可以使用三层的安全机制避免地址解析攻击。
③使用组播方式发送请求报文,减少了二层网络的性能压力。
在这里插入图片描述

邻居状态跟踪

IPv6邻居状态

IPv6节点需要维护一张邻居表,每个邻居都有相应的状态,状态之间可以迁移。5种邻居状态分别是:未完成(Incomplete)、可达(Reachable)、陈旧(Stale)、延迟(Delay)、探查(Probe)。
在这里插入图片描述

邻居状态迁移

在这里插入图片描述

重复地址检测

1)
重复地址检测(Duplicate Address Detect,DAD)是指接口在使用某个IPv6地址之前,需要先探测是否有其它的节点使用了该地址,从而确保网络中没有两个相同的单播地址。
接口在启用任何一个单播IPv6地址前都需要先进行DAD,包括Link-Local地址。

2)
一个地址在通过重复地址检测之前称为“tentative地址”,即“试验地址”。此时该接口不能使用这个试验地址进行单播通讯。
若2个节点配置相同地址,同时作重复地址检测时,当一方收到对方发出的DAD NS报文,则接收方将不启用该地址。

重定向

重定向是指网关设备发现报文从其它网关设备转发更优,它就会发送重定向报文告知报文的发送者,让报文发送者选择另一个网关设备。
在这里插入图片描述
①PC1希望发送报文到服务器,于是根据配置的默认网关地址向网关R2发送报文。
②网关R2收到报文后,检查报文信息,发现报文应该转发到与PC1在同一网段的另一个网关设备R1,此转发路径是更优的路径,于是R2会向PC1发送一个重定向消息,通知PC1去往服务器的报文应直接发给R1。
③PC1收到重定向消息后,会向R1发送报文,R1再将该报文转发至服务器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/165548.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Ant Design Table + React】表格列伸缩实现

需求背景:需要实现Antd Table 组件的列伸缩,宽度可以拖拽 在Antd 3.x 的版本中是保留的列伸缩的Demo例子的: 借助 react-resizable 可以实现伸缩列。 # npm 安装 npm install react-resizable --save# yarn 安装 yarn add react-resizable参…

使用Simple JWT提供认证服务(详细介绍access_token和refresh_token的使用)

文章目录 基本概念JSON Web Token(JWT)Simple JWT 主要用途Cookie、Session、Token的区别CookieSessionToken Token续签access_token 和 refresh_token时效设置 基本概念 JSON Web Token(JWT) JSON Web Token(JWT&am…

Python 自动化测试框架unittest与pytest的区别!

引言 这篇文章主要讲unittest与pytest的区别,pytest相对unittest而言,代码简洁,使用便捷灵活,并且插件很丰富。 Unittest vs Pytest 主要从用例编写规则、用例的前置和后置、参数化、断言、用例执行、失败重运行和报告这几个方面…

从手动操作到自动化管理,如何实现企业身份业务全面自动化?

在数字化时代,身份管理已经成为了企业和组织不可或缺的一部分,企业对于管理员工、客户和合作伙伴的身份信息和访问权限的需求变得愈发复杂。身份管理不仅仅是一项必要的任务,更是确保业务流畅运营和数据安全的关键因素。然而,传统…

ESP32C3 LuatOS TM1650②动态显示累加整数

--注意:因使用了sys.wait()所有api需要在协程中使用 -- 用法实例 PROJECT "ESP32C3_TM1650" VERSION "1.0.0" _G.sys require("sys") local tm1650 require "tm1650"-- 拆分整数,并把最低位数存放在数组最大索引处 loc…

冒泡排序、插入排序、选择排序和快速排序的原理

下面是对冒泡排序、插入排序、选择排序和快速排序的原理的简要解释: 冒泡排序(Bubble Sort):冒泡排序是一种简单的排序算法。它通过多次迭代比较相邻的元素,并交换它们的位置,使得较大(或较小&…

中间件安全-CVE复现IISApacheTomcatNginx漏洞复现

目录 中间件安全&CVE复现&IIS&Apache&Tomcat&Nginx漏洞复现中间件-IIS安全问题中间件-Nginx安全问题漏洞复现Nginx 解析漏洞复现Nginx 文件名逻辑漏洞 中间件-Apache-RCE&目录遍历&文件解析等安全问题漏洞复现漏洞复现CVE_2021_42013 RCE代码执行&…

python二次开发Solidworks:读取立方体的高度

在SW中新建一个零件文档,建立一个立方体,长度和宽度自定义,高度100mm,下面通过python实现读取该立方体的高度: import win32com.client as win32 import pythoncomswApp win32.Dispatch(sldworks.application) swApp.…

kafka、zookeeper、flink测试环境、docker

1、kafka环境单点 根据官网版本说明(3.6.0)发布,zookeeper依旧在使用状态,预期在4.0.0大版本的时候彻底抛弃zookeeper使用KRaft(Apache Kafka)官方并给出了zk迁移KR的文档 2、使用docker启动单点kafka 1、首先将kafka启动命令,存储为.servi…

选择最佳的项目管理工具:推荐哪一个?

项目管理工具推荐哪个?Zoho Projects项目管理工具为各类团队提供卓越的项目管理解决方案。 1、全面管理各类团队项目 Zoho Projects是一款全面的项目管理工具,具备简化工作流程和提高团队生产力的功能。无论是软件开发与DevOps,还是人力资源与…

Elasticsearch学习笔记

1.核心概念 bucket: 一个数据分组(类似于sql group by以后的数据)metric:对bucket执行的某种聚合分析的操作,比如说求平均值,最大值,最小值。一些系列的统计方法(类似 select count(1) MAX MIN AVG) 请…

后台交互-首页->与后台数据进行交互,wsx的使用

与后台数据进行交互wsx的使用 1.与后台数据进行交互 // index.js // 获取应用实例 const app getApp() const apirequire("../../config/app.js") const utilrequire("../../utils/util.js") Page({data: {imgSrcs:[{"img": "https://cd…

三辊闸机的应用领域和特点

三辊闸机是一种常用于门禁控制的设备,它具有以下应用和优点: 应用: 门禁控制:三辊闸机可以用于各种场合的门禁控制,如小区、写字楼、学校、医院等。考勤管理:三辊闸机可以与考勤系统集成,用于…

【数据结构】算法的时间复杂度和空间复杂度

目录 1. 什么是数据结构? 2.什么是算法? 3.算法效率 4.时间复杂度 4.1时间复杂度的概念 4.2大O的渐进表示法 4.3常见时间复杂度计算举例 4.3.1冒泡排序: 4.3.2二分查找: 4.3.3递归阶乘 4.3.4斐波那契数列 4.4例题&…

Elasticsearch实践:ELK+Kafka+Beats对日志收集平台的实现

可以在短时间内搜索和分析大量数据。 Elasticsearch 不仅仅是一个全文搜索引擎,它还提供了分布式的多用户能力,实时的分析,以及对复杂搜索语句的处理能力,使其在众多场景下,如企业搜索,日志和事件数据分析等…

stable diffusion和midjourney哪个好

midjourney和stable diffusion哪个好?midjourney和stable diffusion的区别?那么今天就从这2款软件入手,来探索一下他们的功能的各项区别吧,让你选择更适合你的一款ai软件。 截至目前,我们目睹了生成式人工智能工具的在…

复杂的菱形继承及菱形虚拟继承(详解)

复杂的菱形继承及菱形虚拟继承 复杂的菱形继承及菱形虚拟继承虚拟继承解决数据冗余和二义性的原理笔试面试题 复杂的菱形继承及菱形虚拟继承 单继承:一个子类只有一个直接父类时称这个继承关系为单继承 多继承:一个子类有两个或以上直接父类时称这个继…

Leetcode—2525.根据规则将箱子分类【简单】

2023每日刷题(五) Leetcode—2525.根据规则将箱子分类 实现代码 char * categorizeBox(int length, int width, int height, int mass){long long volume;long long len (long long)length;long long wid (long long)width;long long heig (long lo…

ssrf漏洞学习

目录 ssrf漏洞 相关函数 相关协议 file协议 dict协议 gopher协议 ctfshow ssrf web351 web352 web353 web354过滤01 web355五位长度 web356 三位长度 web357 DNS重定向 web358 正则 ssrf漏洞 SSRF(Server-Side Request Forgery,服务器端请…

搭建伪分布式Hadoop

文章目录 一、Hadoop部署模式(一)独立模式(二)伪分布式模式(三)完全分布式模式 二、搭建伪分布式Hadoop(一)登录虚拟机(二)上传安装包(三&#xf…