当前位置:网站首页 > Haskell函数式编程 > 正文

icmp报文格式(icmpv6报文格式)



ICMPv6全称互联网控制信息协议版本六。为了与IPv6配套使用而开发的互联网控制信息协议。与IPv4一样,IPv6也需要使用ICMP,旧版本的ICMP不能满足IPv6全部要求,因此开发了新版本的ICMP,称为ICMPv6。

1、通告网络错误

比如,某台主机或整个网络由于某些故障不可达。如果有指向某个端口号的TCP或UDP包没有指明接受端,这将由ICMP报告。

2、通告网络拥塞

当路由器缓存太多包,由于传输速度无法达到它们的接收速度,将会生成“ ICMP 源结束”信息。对于发送者,这些信息将会导致传输速度降低。当然,更多的 ICMP 源结束信息的生成也将引起更多的网络拥塞,所以使用起来较为保守。

3、协助解决故障

ICMP支持Echo功能,即在两个主机间一个往返路径上发送一个包。Ping是一种基于这种特性的通用网络管理工具,它将传输一系列的包,测量平均往返次数并计算丢失百分比。

4、通告超时

如果一个IP包的TTL降低到零,路由器就会丢弃此包,这时会生成一个 ICMP 包通告这一事实。TraceRoute是一个工具,它通过发送小TTL值的包及监视ICMP超时通告可以显示网络路由。

本文件描述了一组在ICMPv6(Internet Control Message Protocol)中使用的控制消息格式ICMPv6 是互联网控制消息协议(Internet Control Message Protocol)的 IPv6 版本。

通用格式

IPv6 首部和零个或多个 IPv6 扩展首部位于每个 ICMPv6 消息之前。ICMP6 首部由其值为58 的Next Header 值标识,Next Header 位于紧靠 ICMPv6 首部的前一个首部中。(这与用于标识ICMPv4 的值不同)

请求报文

回应报文

报文TYPE

因为IPv6的扩展头长度任意,不像IPv4有40字节的限制,所以需要PTB错文报文进行限制

组播侦听发现协议MLD

    组播侦听发现协议MLD用于IPv6组播中的组成员管理,其基本原理和功能与IGMP相似。MLD的目的是使能每个IPv6路由器发现在其直连网络上的组播侦听者(即希望接收组播数据的节点)的存在,并且能明确发现这些邻居节点所感兴趣的组播地址。然后提供这些消息给路由器所使用的组播路由协议,以确保组播数据转发至存在接收者的所有链接,IGMP是专门服务区IPV4的,并不支持拓展,所以开发出来了一个新的组播协议MLD专门服务于IPV6

    组播协议是运行于组播模型中最后一跳路由器和接收者之间的,用于建立和维护组播组成员之间的关系

    如果路由器有不止一个接口在同一网络上,它只需要在其中一个接口上运行此协议。另一方面,对侦听者来说,则必须在所有接口运行此协议以便上层协议从接口接收所需要的组播数据

Tips:

MLD使用ICMP来携带消息所有的MLD报文被限制在本地链路上,跳数为1

MLD用于IPv6路由器在其直连网段上发现组播侦听者

路由器通过MLD协议,可以了解到在自己的直连网段上是否有组播组的侦听者,并在数据库里做相应记录。同时,路由器还维护与这些组播地址相联系的定时器信息

配置MLD的路由器使用IPv6单播链路本地地址作为源地址发送MLD报文

邻居发现协议

邻居发现协议是IPv6的一个关键协议,它组合了IPv4中的ARP、ICMP路由器发现和ICMP重定向等协议,并对它们作了改进。作为IPv6的基础性协议,NDP还提供了前缀发现、邻居不可达检测、重复地址监测、地址自动配置等功能。邻居发现协议主要包括两种格式的ICMP6报文:邻居请求NS(NeighborSolicitation)和邻居宣告NA(NeighborAdvertisement)。

当局域网中的两台主机A与B之问通信前,A必须首先获取B的MAC地址,主要步骤如下:

A以广播的方式向FE02::1发送一个ICMPv6NS消息,询问B的MAC地址。局域网中每个节点都能接收到该Ns请求,当一个节点接收到该Ns请求后,将目标MAC地址与自身MAC地址进行比较,如果不一致,则不应答;反之,如果所请求的MAC地址与自身MAC地址相等,则回应一个邻居宣告消息NA,表明自己就是所要请求的节点。本例中,在正常情况下,只有B回应NS请求,应答包中包含B的MAC地址。

首部检验和

Icmp中,首部检验和仅仅包含icmp头部

在icmpv6中,首部检验和的计算方式与icmp大有不同。首部检验和除了包括icmp头部还有:

Pseudo-header(伪头部)包含源ip,目标ip,有效载荷长度,next header(被假定为58)

ICMPv6需要额外保证源、目标ip、有效载荷的长度是为了安全需要,因为ipv6为了处理ip分组更快而不进行首部检查和。ipv4中首部检查和由路由器完成,耗时。舍去首部检查和,在数据链路层和传输层协议中执行检验操作能进一步提高速率和可靠性。



到此这篇icmp报文格式(icmpv6报文格式)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 汽车报文格式(汽车报文超时故障什么意思)2025-01-06 11:00:07
  • 如何锁表格(如何锁表格公式)2025-01-06 11:00:07
  • 怎么创建.py文件(怎样创建py格式文件)2025-01-06 11:00:07
  • 动态库存表自动进销存(动态出入库库存公式怎么输入)2025-01-06 11:00:07
  • sigmoid函数怎么读(sigmoid函数求导过程)2025-01-06 11:00:07
  • 窗口函数 max(窗口函数rank()和dense rank()的区别)2025-01-06 11:00:07
  • pcap文件格式(pcapng文件格式)2025-01-06 11:00:07
  • 工资支付方式有哪些(工资支付方式有哪些种)2025-01-06 11:00:07
  • pivot函数(pivot函数表格用法)2025-01-06 11:00:07
  • ifstream open函数(fopen和ifstream)2025-01-06 11:00:07
  • 全屏图片