网络学习:ICMPV6报文

2024-03-17 22:36
文章标签 学习 网络 报文 icmpv6

本文主要是介绍网络学习:ICMPV6报文,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前言:

一、ICMPV6的报文内容

二、ICMPv6差错报文分类

1、目的不可达错误报文(type=1)

2、数据包过大错误报文(type=2)

3、超时报文(type=3)

4、参数错误报文

三、ICMPv6信息报文的分类

1、回送请求报文:

2、回送应答报文:


前言:

        ICMPv6(Internet Control Message Protocol for the IPv6)是IPv6的基础协议之一。 在IPv4中,Internet控制报文协议ICMP(Internet Control Message Protocol)向源节点报告关于向目的地 传输IP数据包过程中的错误和信息。它为诊断、信息和管理目的定义了一些消息,如:目的不可达、数据包 超长、超时、回应请求和回应应答等。在IPv6中,ICMPv6除了提供ICMPv4常用的功能之外,还是其它一些功能的基础,如邻接点发现、无状态地址配置(包括重复地址检测)、PMTU发现等。

一、ICMPV6的报文内容

ICMPv6的协议类型号(即IPv6报文中的Next Header字段的值)为58。

Type:表明消息类型,0至127表示差错报文类型,128至255表示消息报文类型。

Code:该字段依赖Type字段,在Type字段基础上,它被用来表示在基本类型上此消息细分的类型。

Checksum:表示ICMPV6报文的校验和,校验数据部分(ICMP的数据)和部分IPV6首部完整性。

(Message Body—可变):ICMPv6报文体用于返回出错的参数和记录出错报文的片段,帮助源结点判断错 误的原因。大体上说,ICMPv6报文可以被分为2大类:差错报文与消息报文。这2类报文是依靠报文中的 TYPE字段来标识的,当TYPE字段的最高位置0,即在0~127范围时(TYPE字段长度为1字节),被标识为差错报文,TYPE字段值为128~255范围时,则标识为消息报文。

二、ICMPv6差错报文分类

ICMPv6错误报文用于报告在转发IPv6数据包过程中出现的错误。ICMPv6错误报文可以分为以下4种:

1、目的不可达错误报文(type=1)

在IPv6节点转发IPv6报文过程中,当设备发现目的地址不可达时,就会向发送报文的源节点发送ICMPv6目的 不可达错误报文,同时报文中会携带引起该错误报文的具体原因,这里只列举部分常见的情况。

目的不可达错误报文的Type字段值为1。根据错误具体原因又可以细分为:

Code=0:

没有到达目标主机的路由,路由器无法转发。

Code=1:

和目标主机的通讯被管理策略禁止,在路由器、防火墙上设置策略禁止和某些节点通讯。

Code=2:

未指定。这里指的是超过了源地址的范围。

Code=3:

因链路或无法解析到目的结点链路层地址,导致目的地址不可到达,IPV6不支持广播,因为广播被认为是低效的传输机制,所以主机之间相互寻找的ARP协议无法使用,IPv6通过邻居请求(neighbor solicitation)的新特性,利用ICMPV6完成工作,是邻居发现协议(NDP)的一项功能。

Code=4:

目的端口不可达。 IPv6分组己经传送到目的IP结点,但是不能递交给目的TCP或UDP端口的端口, 不可到达,比如说目标端口被占用的情况。

2、数据包过大错误报文(type=2)

在IPv6节点转发IPv6报文过程中,发现报文超过出接口的链路MTU时,该节点只能丢弃该分组数据包,并向 发送报文的源节点发送ICMPv6数据包过大错误报文,报告出现差错,其中携带出接口的链路MTU值。数据包过大错误报文是Path MTU发现机制的基础。

数据包过大错误报文的Type字段值为2,Code字段值为0。

3、超时报文(type=3)

在IPv6报文收发过程中,当设备收到Hop Limit字段值等于0的数据包,或者当设备将Hop Limit字段值减为0 时,会向发送报文的源节点发送ICMPv6超时错误报文。对于分段重组报文的操作,如果超过定时时间,也会 产生一个ICMPv6超时报文。

时间超时错误报文的Type字段值为3,根据错误具体原因又可以细分为:

Code=0:在传输中超越了跳数限制

Code=1:分片重组超时

4、参数错误报文

当目的节点收到一个IPv6报文时,会对报文进行有效性检查,如果发现问题会向报文的源节点回应一个 ICMPv6参数错误差错报文。

参数错误报文的Type字段值为4,根据错误具体原因又可以细分为:

Code=0:IPv6基本头或扩展头的某个字段有错误。

Code=1:IPv6基本头或扩展头的NextHeader值不可识别。

Code=2:扩展头中出现未知的选项。

三、ICMPv6信息报文的分类

ICMPv6信息报文提供诊断功能和附加的主机功能,比如多播侦听发现和邻居发现。常见的ICMPv6信息报文 主要包括回送请求报文(Echo Request)和回送应答报文(Echo Reply),这两种报文也就是通常使用的 Ping报文。

ICMP信息报文主要可以分为:

1、回送请求报文:

回送请求报文用于发送到目标节点,以使目标节点立即发回一个回送应答报文。回送请求报 文的Type字段值为128,Code字段的值为0。

2、回送应答报文:

当收到一个回送请求报文时,ICMPv6会用回送应答报文响应。回送应答报文的Type字段的 值为129,Code字段的值为0。

  • type=128—代表请求报文
  • Code=0—正常ping包该字段均为0
  • checksum=表示ICMPV6报文的校验和,校验数据部分(ICMP的数据)和部分IPV6首部完整性
  • checksum status=校验和状态,good表示校验和正确,bad表示数据报被修改或者发生错误
  • Identifier—标识符,请求与应答报文能够彼此匹配的一个标识
  • Sequence Number—序列号,对于每一个发送的数据包进行编号,比如说第一个发送的序列号是1,下一个 序列号就是2。

注释 :

多个ping包之间也需要对数据包的身份进行区分,第一个请求包中携带的Identifier=0xe608,Sequence Number=1 。

目标回复包中携带的Identifier字段为=0xe608,相同代表回复的是第一个请求包,Sequence Number字段同 样也为1,代表回复数据包的顺序,主要是为了请求和应答报文能够相互匹配。

后续数据包中这两个字段会依次+1,代表不同的请求包和不同的应答包:

第二个数据包:

这篇关于网络学习:ICMPV6报文的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/820387

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识