0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ICMPv6协议基础简介

北汇信息POLELINK 2024-12-05 01:04 次阅读


作者 |PhiCid
小编 | 不吃猪头肉

cf3c0120-b261-11ef-8084-92fbcf53809c.png

引言

科普介绍文章《IPv6协议—互联网通信协议第六版》中介绍了IPv6协议,这次的科普主题是ICMPv6(Internet Control Message Protocol version 6),它作为IPv6网络中的核心协议之一,是网络通信中不可或缺的一部分。ICMPv6的设计继承了IPv4中ICMPv4协议的基本功能,然而,它不仅仅是IPv6中错误报告和诊断工具,更在IPv6网络的运行中扮演了重要角色。与IPv4不同,IPv6不再依赖ARP(地址解析协议)来解析网络节点的物理地址,而是通过ICMPv6的邻居发现(Neighbor Discovery)功能来实现此类操作。此外,ICMPv6还支持地址自动配置、路径MTU发现、网络邻居的可达性检测等功能,这些都大大简化了IPv6网络的配置和管理。在IPv6网络的日常运行中,ICMPv6不仅提供了基础的错误报告机制,还使得网络设备能够更加灵活地自动配置和发现网络拓扑。因此,理解ICMPv6协议及其各类报文的作用,对于网络工程师和系统管理员来说是非常必要的。

cf444cc2-b261-11ef-8084-92fbcf53809c.png

ICMPv6的报文格式

cf4c6600-b261-11ef-8084-92fbcf53809c.png

图 ICMPv6报文通用格式ICMPv6报文的通用格式如上图所示,主要包括以下几个字段,每个字段在网络通信中都起到至关重要的作用:

Type(报文类型):这是ICMPv6报文的首个字段,用于标识报文的类型。ICMPv6报文根据其功能可分为两大类:差错报文(类型范围:0-127)和消息报文(类型范围:128-255)。每种类型对应特定的错误报告或网络功能。

Code(报文子类型):Code字段进一步细化了报文的类型。根据不同的报文类型,Code的值代表不同的具体子类型。例如,目的不可达报文中Code字段的值为0表示网络不可达,为1表示主机不可达,等等。

Checksum(校验和):该字段用于对ICMPv6报文的完整性进行校验。校验和的计算能够确保在传输过程中数据未发生错误。ICMPv6要求对报文进行完整性检查,以保证通信的可靠性。

cf54267e-b261-11ef-8084-92fbcf53809c.png

ICMPv6报文分类ICMPv6报文根据功能的不同,分为差错报文和消息报文。

1. 差错报文(Type 0-127)
差错报文主要用于报告网络中的错误,帮助设备发现和解决通信问题。

目的不可达报文

目的不可达报文(Destination Unreachable, Type 1):该报文用于报告数据包无法到达目标节点的情况。通常,路由器在无法找到目标节点或无法转发数据包时,发送目的不可达报文。根据不同的错误类型,Code字段有多个取值:0 - 没有到目的地址的路由1 - 禁止与目的地址通讯2 - 超出源地址的范围3 - 地址不可达4 - 端口不可达5 - 源地址入口/出口策略失败6 - 拒绝到目的地址的路由

数据包过大报文

数据包过大报文(Packet Too Big, Type 2):当数据包的大小超过链路的最大传输单元(MTU)时,路由器会发送该报文告知源节点减少数据包大小。

时间超时报文

时间超时报文(Time Exceeded, Type 3):当数据包的Hop Limit字段为0时,数据包会被丢弃,同时会发送超时报文。这通常表示数据包在传输过程中经过的跳数超出了允许的最大值,或者在分片重组时超时。Code字段值包括:0 - Hop limit exceeded in transit传输过程中“hop-limit”超时;1 - Fragment reassembly time exceeded分片重组超时;

参数错误报文

参数错误报文(Parameter Problem, Type 4):当IPv6数据包中的头部或扩展头部格式错误时,路由器会发送参数错误报文,指示数据包格式有问题。Code值包括0-2:0 – 错误的首部字段;1 – 不可识别的Next Header类型;2 – 不可识别的IPv6选项。

2. 消息报文(Type 128-255)

消息报文则负责执行网络配置、诊断等功能。

Echo Request(Type 128)与Echo Reply(Type 129):Echo请求和Echo响应报文的功能与IPv4中的Ping类似。Echo请求用于测试节点之间的连通性,目标节点返回Echo响应,确认数据包的传输。

RS报文(Router Solicitation, Type 133):主机首次接入IPv6网络时,会发送RS报文,向路由器请求网络配置信息,如前缀、MTU等。接收到该报文的路由器会发送RA(详见下文)报文作为回应。

cf5f7b96-b261-11ef-8084-92fbcf53809c.png

图 RS报文示例

RA报文

RA报文(Router Advertisement, Type 134):RA报文由路由器周期性广播,或者在收到RS报文后作为响应发送,提供网络配置信息,如前缀、链路本地地址、MTU、跳数限制等。Cur Hop Limit表示主机跳数限制,M位(管理地址配置位)指示主机是否需要使用DHCPv6获取配置,该位为0表示无状态自动配置,为1表示通过DHCPv6服务器获取配置信息,该位置1时O位无意义,因为所有参数依然通过DHCPv6获得。O位(其他配置标志位)指示是否有其他配置可用,该位置0表示 DHCPv6服务器没有其他可用信息。该位置1时,其他参数使用DHCPV6服务器获得,包括路由器生存时间、邻居可文达时间、邻居的重传时间、链路的MTU信息和DNS相关信息等。

cf6df54a-b261-11ef-8084-92fbcf53809c.png

图 RA报文示例

NS报文(Neighbor Solicitation, Type 135)

NS报文主要包括以下功能:

1)地址解析:在IPv6中,没有类似IPv4中的ARP(地址解析协议)来解析链路层地址(如MAC地址)。而NS报文用于请求或查询目标节点的链路层地址,当一个IPv6主机需要发送数据包到网络中某个已知的IPv6地址时,它首先需要知道目标节点的链路层地址(MAC地址)。此时,发送NS报文给目标节点,并在Target Address字段中填入目标节点的IPv6地址。

2)邻居可达性检测:NS报文还用于检测网络中某一节点是否仍然活跃,是否能够正常接收数据。当发送节点收到目标节点的NA(详见下文)报文时,即可确认该目标节点是可达的。若目标节点没有回应,发送节点会根据超时情况判断目标节点是否不可达。

3)地址冲突检测:在进行IPv6地址自动配置时,主机会随机选择一个IPv6地址,并通过发送NS报文来检测该地址是否已经被其他节点使用。如果网络中有其他节点回复NA报文,表示该地址已被占用,主机则需要选择另一个地址。

cf77fa86-b261-11ef-8084-92fbcf53809c.png

图 NS报文示例

NA报文(Neighbor Advertisement, Type 136)

NA报文是NS报文的响应,通常由目标节点(即被查询的节点)发送,用来告知请求方自己的链路层地址和可达性信息。NA报文主要功能包括:

1)响应地址解析请求:当一个节点接收到NS报文时,它会通过发送NA报文来响应请求,提供自己的链路层地址(通常是MAC地址)。

2)确认邻居可达性:如果节点A通过NS报文检测到节点B的可达性,节点B通过发送NA报文来响应,确认其处于活动状态。

3)地址冲突响应:如果某个节点在收到NS报文时发现该地址与自己冲突(即自己已经使用该地址),它将通过NA报文告知发送NS报文的节点。

cf81d0a6-b261-11ef-8084-92fbcf53809c.png

图 NA报文示例

cf8f3db8-b261-11ef-8084-92fbcf53809c.png

ICMPv6的安全性

尽管ICMPv6在IPv6网络中扮演着重要角色,但其也可能成为网络攻击的潜在目标。以下是几种可能的攻击类型:

ICMPv6洪水攻击(Flood Attacks):攻击者可以发送大量的ICMPv6报文,消耗网络带宽和资源,从而导致目标设备的性能下降,甚至瘫痪。

ICMPv6重定向攻击(Redirect Attacks):攻击者可能伪造ICMPv6的重定向报文,诱使节点向错误的网关发送数据,从而导致流量被劫持。

ICMPv6拒绝服务(DoS)攻击:通过发送大量无效或恶意的ICMPv6报文,攻击者可以导致网络设备响应超载,影响服务的正常运行。

cf96498c-b261-11ef-8084-92fbcf53809c.png

总结

ICMPv6不仅是IPv6网络中不可或缺的协议,它还为网络设备提供了关键的支持功能,包括地址自动配置、邻居发现、路径MTU发现等。ICMPv6的广泛应用大大简化了IPv6网络的配置与管理,提高了网络的自适应能力和可扩展性。而随着IPv6在车载网络的逐步普及(例如大众、奥迪等整车厂早已应用IPv6),掌握ICMPv6协议的基础及其应用,能够帮助汽车电子领域的网络工程师更好地管理和优化网络环境,并确保网络的高效、安全运行。北汇信息是一家专注于汽车电子测试领域的企业,对车载以太网测试有着丰富经验,并可提供相关培训、咨询服务以及测试解决方案,帮助汽车制造商和零部件供应商确保其车载以太网系统的可靠性和安全性。如果需要具体的测试服务或了解更多信息,欢迎大家来联系我们。

参考文献:【1】《RFC 4861》【2】《RFC 4443》

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信
    +关注

    关注

    18

    文章

    6028

    浏览量

    135951
  • 协议
    +关注

    关注

    2

    文章

    602

    浏览量

    39214
  • IPv6网络
    +关注

    关注

    0

    文章

    16

    浏览量

    7109
收藏 人收藏

    评论

    相关推荐

    ICMPv4协议—互联网控制报文协议

    ICMP协议全称是InternetControlMessageProtocol,即互联网控制报文协议。其中,ICMPv4和ICMPv6分别指用于IPv4和IPv
    的头像 发表于 07-25 08:25 731次阅读
    <b class='flag-5'>ICMPv</b>4<b class='flag-5'>协议</b>—互联网控制报文<b class='flag-5'>协议</b>

    ICMPv6协议介绍#车载以太网 #ipv6 #科普

    车载以太网
    北汇信息POLELINK
    发布于 :2024年12月04日 11:00:05

    简易6LoWPAN网格数据收集器参考设计包括BOM及层图

    200 个终端节点实现了 6LoWPAN、RPL、IPv6/ICMPv6 和 UDP 网状网络协议实现了具有跳频和 MAC 数据加密功能的 TI-15.4 Stack采用与 Wi-S
    发表于 10-17 15:44

    linux 下查看端口号的指令

    UDPv6。   如果与 -s 选项一起使用以显示按协议统计信息,proto 可以是下列协议之一:   IP、IPv6、ICMP、ICMPv6
    发表于 07-09 07:43

    NTP协议简介

    一、NTP协议简介  网络时间协议NTP(Network Time Protocol)的主要开发者是美国特拉华大学的MILLS David L教授设计实现的,由时间协议、ICMP时间戳
    发表于 07-29 06:50

    CAN协议特点简介

    CAN协议CAN协议 简介CAN协议 特点(1)多主控制(2)系统的柔软性(3)通信速度较快,通信距离远(4)具有错误检测、错误通知和错误恢复功能(5)故障封闭功能(
    发表于 08-19 06:02

    HTTP协议简介

    )HTTP协议简介HTTP即Hyper Text Transfer Protocol (超文本传输协议),是一种基于TCP/IP通信协议来传递数据 (HTML 文件,图片文件,查询结果
    发表于 12-15 06:01

    STM32的IIC协议简介

    文章目录(一)IIC协议简介(二)物理层和协议简介(三)IIC物理层:3.1、物理层的特点(四)IIC协议层:4.1、IIC基本的读写过程
    发表于 01-05 06:13

    ymodem协议简介

    kirito 2020-11-29 V1.00简介开发板: stm32f407vgt6IDE: keil + cubemx6.0功能: 实现stm32HAL 串口IAP, 协议采用非阻塞式
    发表于 03-02 06:01

    一种嵌入式IPv4/IPv6协议栈的实现

    提出了一种基于平台无关性的嵌入式IPv4/IPv6协议栈的实现方法。根据嵌入式应用,设计了相应的缓冲区管理机制,裁减了IPv6 模块中ICMPv6 和邻居发现的相关功能,简化了TC
    发表于 08-10 14:11 27次下载

    TCP/IP协议简介

    TCP/IP协议简介 TCP/IP传输层协议概揽 传输控制协议 TCP 是一
    发表于 06-09 23:07 1411次阅读
    TCP/IP<b class='flag-5'>协议</b><b class='flag-5'>简介</b>

    Modbus_协议简介及编程

    Modbus_协议简介及编程。
    发表于 05-17 17:47 14次下载

    MIPI接口协议简介

    MIPI接口协议简介,感兴趣的小伙伴们可以看看。
    发表于 10-10 14:55 159次下载

    CAN和CANFD协议简介(上)

    CAN和CANFD协议简介(上)
    的头像 发表于 01-26 08:06 1377次阅读
    CAN和CANFD<b class='flag-5'>协议</b><b class='flag-5'>简介</b>(上)

    CAN和CANFD协议简介(下)

    CAN和CANFD协议简介(下)
    的头像 发表于 02-19 12:08 1096次阅读
    CAN和CANFD<b class='flag-5'>协议</b><b class='flag-5'>简介</b>(下)