首页 > 其他分享 >3.5 ICMPv6 报文和报文类型

3.5 ICMPv6 报文和报文类型

时间:2024-04-05 18:13:48浏览次数:40  
标签:ICMPv6 ndisc 报文 icmpv6 3.5 ICMPV6 rcv

目录

3.5 ICMPv6 报文和报文类型

1. ICMPv6 报头

ICMPv6的报头由 type(8bit)\ code(8bit)\ checksum(16bit)可变数据组成,由于可变数据太多,这里暂不罗列,由具体协议展开。

image-20240331123223221

struct icmp6hdr {

	__u8		icmp6_type;
	__u8		icmp6_code;
	__sum16		icmp6_cksum;
	...
}

在 ICMPv6 的消息分类中,Type字段的最高位为0时(0-127),表示错误消息,为1时(128-255),表示信息消息。ICMPv4 中则使用error字段来表示。

2. ICMPv6 报文类型

下面是ICMPv6 报文的类型。(部分)

image-20240331140444535

在 ICMPv6 中,没有像 ICMPv4 一样的数组icmp_pointers[]来注册各种消息的处理函数,而是使用一个大的 switch 来选择不同消息类型的处理函数。

TYPEID 消息类型 处理函数
1 ICMPV6_DEST_UNREACH icmpv6_notify
2 ICMPV6_PKT_TOOBIG icmpv6_notify
3 ICMPV6_TIME_EXCEED icmpv6_notify
4 ICMPV6_PARAMPROB icmpv6_notify
128 ICMPV6_ECHO_REQUEST icmpv6_echo_reply
129 ICMPV6_ECHO_REPLY ping_rcv
130 ICMPV6_MGM_QUERY igmp6_event_query
131 ICMPV6_MGM_REPORT igmp6_event_report
132 ICMPV6_MGM_REDUCTION --
133 NDISC_ROUTER_SOLICITATION ndisc_rcv
134 NDISC_ROUTER_ADVERTISEMENT ndisc_rcv
135 NDISC_NEIGHBOUR_SOLICITATION ndisc_rcv
136 NDISC_NEIGHBOUR_ADVERTISEMENT ndisc_rcv
137 NDISC_REDIRECT ndisc_rcv

处理函数进行归纳有:

查询处理: icmpv6_echo_reply() \ ping_rcv() \ igmp6_event_query() \ igmp6_event_report()

差错处理: icmpv6_notify()

邻居发现函数处理:ndisc_rcv() 后文展开。

  • icmpv6_echo_reply() 负责处理echo请求。
  • ping_rcv() 负责处理echo应答。这个方法同ICMPv4 共用,是个双栈函数。
  • igmp6_event_query() 负责处理组播侦听者查询,后文展开。
  • igmp6_event_report() 负责处理组播侦听者报告, 后文展开。
  • icmpv6_notify() 负责处理接收到的错误消息,并且统计。
  • ndisc_rcv() 所有邻居发现类函数都有这个函数处理。后文展开。

标签:ICMPv6,ndisc,报文,icmpv6,3.5,ICMPV6,rcv
From: https://www.cnblogs.com/kmist/p/18116019

相关文章

  • 3.6 ICMPv6 报文接收和发送
    3.6ICMPv6报文接收和发送1.ICMPv6数据包接收流程当有IP报头协议是58的数据包到来之后,会调用icmpv6_rcv()进行处理。数据包的处理流程在上面的流程图中说明的非常清楚,下面就来看一下代码是怎么实现的。staticinticmpv6_rcv(structsk_buff*skb){ structnet*net=de......
  • 3.7 ICMPv6 数据包处理
    目录3.7ICMPv6数据包处理1.echo请求和应答2.错误报文处理3.发送错误报文3.1超时差错3.2目的地不可达差错3.3需要分段差错3.4参数异常差错3.7ICMPv6数据包处理1.echo请求和应答处理echo请求:icmpv6_echo_reply()处理echo回应:ping_rcv()staticvoidicmpv6_ec......
  • 3.2 ICMPv4 报文和报文类型
    目录3.2ICMPv4报文和报文类型1.ICMPv4报头2.ICMPv4报文类型3.附录3.2ICMPv4报文和报文类型1.ICMPv4报头ICMPv4是基于IP协议的。所以在ICMPv4的报文外面,还有一层IP报文格式。ICMPv4报头structicmphdr由类型(8位)、代码(8位)、校验和(16位)和可变部分(32位)......
  • 3.4 ICMPv6 初始化
    3.4ICMPv6初始化1.ICMPv6简述ICMPv6除了跟ICMPv4一样负责错误处理和诊断之外,还负责邻居发现(NeighbourDiscoveryND)和组播侦听者发现(MulticastListenerDiscoverMLD)。邻居发现(ND)--ARP(IPV4)组播侦听者发现(MLD)--IGMP(IPV4)但是这两个功能会放在后面去......
  • GPT-3.5开放免费使用,这次OpenAI做到了真的open
    本周一,OpenAI宣布,部分地区的ChatGPT网站访问者现在无需登录即可使用人工智能助手。此前,该公司要求用户创建账户才能使用,即使是目前由GPT-3.5AI语言模型支持的免费版ChatGPT也是如此。01.GPT-3.5开放免登录使用众所周知,与ChatGPT收费版本中的GPT-4Turbo相比,GPT-3.5提供的信......
  • 如何查看java代码编写的soap请求报文头信息
    在浏览器中打开接口地址,点击浏览器中的插件查看接口点击具体方法之后可以看到请求报文头工具如下: ......
  • Gemini即将收费,GPT无需注册?GPT3.5白嫖和升级教程
    ......
  • 常见面试算法题-报文解压缩
    ■ 题目描述为了提升数据传输的效率,会对传输的报文进行压缩处理。输入一个压缩后的报文,请返回它解压后的原始报文。压缩规则:n[str],表示方括号内部的str正好重复n次。注意n为正整数(0<n<=100),str只包含小写英文字母,不考虑异常情况。输入描述:输入压缩后的报文:1)不考......
  • 13.5k star, 免费开源 Markdown 编辑器
    13.5kstar,免费开源Markdown编辑器分类 开源分享项目名:Editor.md--Markdown编辑器Github开源地址: https://github.com/pandao/editor.md在线测试地址: Editor.md-开源在线Markdown编辑器完整实例: HTMLPreview(markdowntohtml)-Editor.mdexamples......
  • Unity 3D脚本编程与游戏开发(3.5)
    6.2.8总结和拓展        本节利⽤Unity官⽅素材,以有限的篇幅解释了动画状态机的原理,以及动画制作中最基本但最重要的步骤。总的来看,⽬前的动画只做了4种状态——站⽴、⾛、跑和跳跃,还缺少下蹲、下蹲移动和落地缓冲等动作。好在这些动作只是对现有动作的平⾏扩展,想要......