翼度科技»论坛 云主机 LINUX 查看内容

3.5 ICMPv6 报文和报文类型

10

主题

10

帖子

30

积分

新手上路

Rank: 1

积分
30
目录

3.5 ICMPv6 报文和报文类型

1. ICMPv6 报头

ICMPv6的报头由 type(8bit)\  code(8bit)\  checksum(16bit) 和 可变数据组成,由于可变数据太多,这里暂不罗列,由具体协议展开。
  1. struct icmp6hdr {
  2.         __u8                icmp6_type;
  3.         __u8                icmp6_code;
  4.         __sum16                icmp6_cksum;
  5.         ...
  6. }
复制代码
在 ICMPv6 的消息分类中,Type字段的最高位为0时(0-127),表示错误消息,为1时(128-255),表示信息消息。ICMPv4 中则使用error字段来表示。
2. ICMPv6 报文类型

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

在 ICMPv6 中,没有像 ICMPv4 一样的数组icmp_pointers[]来注册各种消息的处理函数,而是使用一个大的 switch 来选择不同消息类型的处理函数。
TYPEID消息类型处理函数1ICMPV6_DEST_UNREACHicmpv6_notify2ICMPV6_PKT_TOOBIGicmpv6_notify3ICMPV6_TIME_EXCEEDicmpv6_notify4ICMPV6_PARAMPROBicmpv6_notify128ICMPV6_ECHO_REQUESTicmpv6_echo_reply129ICMPV6_ECHO_REPLYping_rcv130ICMPV6_MGM_QUERYigmp6_event_query131ICMPV6_MGM_REPORTigmp6_event_report132ICMPV6_MGM_REDUCTION--133NDISC_ROUTER_SOLICITATIONndisc_rcv134NDISC_ROUTER_ADVERTISEMENTndisc_rcv135NDISC_NEIGHBOUR_SOLICITATIONndisc_rcv136NDISC_NEIGHBOUR_ADVERTISEMENTndisc_rcv137NDISC_REDIRECTndisc_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() 所有邻居发现类函数都有这个函数处理。后文展开。

来源:https://www.cnblogs.com/kmist/p/18116019
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具