前面我们学习了IPv6的基础概念以及IPv6地址的格式与分类,在IPv4中我们通过ARP、广播、ICMP进行地址冲突检测、网络连通性,但是在IPv6中是没有广播和ARP的,都是通过ICMPv6来实现其功能,所以这里我们需要了解下ICMPv6。
一、ICMP协议
ICMP(Internet Control Message Protocol)是互联网控制消息协议,它是TCP/IP协议族中一个重要的网络层协议,主要负责在网络设备(如主机、路由器)之间传递控制消息。
ICMP协议用来在网络设备间传递各种差错和控制信息,对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。
ICMP消息封装在IP报文中,IP报文头部Protocol值为1时表示ICMP协议。ICMP消息的格式取决于Type和Code字段,其中Type字段为消息类型,Code字段包含该消息类型的具体参数。校验和字段用于检查消息是否完整。
1.1 ICMP差错控制
ICMP的一个典型应用是Ping。Ping是检测网络连通性的常用工具,同时也能够收集其他相关信息。用户可以在Ping命令中指定不同参数,如ICMP报文长度、发送的ICMP报文个数、等待回复响应的超时时间等,设备根据配置的参数来构造并发送ICMP报文,进行Ping测试。
简单说就是发送(8,0)的echo request,然后目的主机发送(0,0)的echo reply报文代表网络连通性正常。
1.2 ICMP错误报告
ICMP定义了各种错误消息,用于诊断网络连接性问题;根据这些错误消息,源设备可以判断出数据传输失败的原因。如:当网络设备无法访问目标网络时,会自动发送ICMP目的不可达报文到发送端设备。
功能:Tracert Tracert基于报文头中的TTL值来逐跳跟踪报文的转发路径。Tracert是检测网络丢包和时延的有效手段,同时可以帮助管理员发现网络中的路由环路。
ICMP的另一个典型应用是Tracert。Tracert基于报文头中的TTL值来逐跳跟踪报文的转发路径。为了跟踪到达某特定目的地址的路径,源端首先将报文的TTL值设置为1。该报文到达第一个节点后,TTL超时,于是该节点向源端发送TTL超时消息,消息中携带时间戳。然后源端将报文的TTL值设置为2,报文到达第二个节点后超时,该节点同样返回TTL超时消息,以此类推,直到报文到达目的地。这样,源端根据返回的报文中的信息可以跟踪到报文经过的每一个节点,并根据时间戳信息计算往返时间。
1.3 ICMP重定向
ICMP重定向报文是ICMP控制报文中的一种。在特定的情况下,当路由器检测到一台机器使用非最优路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。
ICMP重定向过程:
-
主机A希望发送报文到服务器A,于是根据配置的默认网关地址向网关RTB发送报文。 -
网关RTB收到报文后,检查报文信息,发现报文应该转发到与源主机在同一网段的另一个网关设备RTA,此转发路径是更优的路径,所以RTB会向主机发送一个Redirect消息,通知主机直接向另一个网关RTA发送该报文。 -
主机收到Redirect消息后,会向RTA发送报文,然后RTA会将该报文再转发给服务器A。
二、ICMPv6协议
ICMPv6(Internet Control Message Protocol version 6)是专为IPv6网络设计的控制消息协议,作为IPv6协议栈的一个重要组成部分,它继承了ICMPv4的基本功能,并针对IPv6的新特性进行了扩展和优化。
作用与用途:
-
网络诊断与故障检测: 类似于ICMPv4,ICMPv6支持ping6命令来测试网络连通性,通过Echo Request/Reply报文进行双向确认。traceroute6工具则利用ICMPv6消息来追踪数据包的路由路径。
-
错误报告与通知: 当IPv6数据包在传输过程中遇到问题时,ICMPv6发送差错报文通知发送方。这些报文类型包括Destination Unreachable、Packet Too Big、Time Exceeded、Parameter Problem等,对应不同的错误情况。
-
网络配置与维护: ICMPv6在IPv6环境中承担了更多的网络配置和维护任务,尤其是通过邻居发现协议(Neighbor Discovery Protocol, NDP)实现的功能,包括:
-
地址解析(替代IPv4 ARP): 使用Neighbor Solicitation(NS,类型135)和Neighbor Advertisement(NA,类型136)报文实现节点间地址解析。 -
重复地址检测(DAD): 新节点通过发送NS报文验证其拟使用的IPv6地址是否唯一。 -
路由器发现与选择: 节点通过Router Solicitation(RS,类型133)和Router Advertisement(RA,类型134)报文发现并选择默认路由器。 -
前缀发现与状态更新: RA报文携带网络前缀信息,使节点能自动配置IPv6地址,并了解前缀变化情况。 -
重定向: 路由器发送Redirect报文(类型137)指导节点使用更优的下一跳地址。
-
ICMPv6与IPv6紧密集成,是IPv6协议栈的标准组件,用于补充和增强IPv6协议的功能。ICMPv6位于网络层(第三层),与IPv6协议直接交互,为上层协议(如TCP、UDP)提供网络状况反馈和诊断服务。
2.1 ICMPv6报文
-
ICMPv6报文载荷由ICMPv6报文类型决定,因报文类型的不同而不同。 -
Type:表明消息的类型。 -
Code:表示消息类型的细分。 -
Checksum:表示ICMPv6报文的校验和。
ICMPv6报文分类两类:差错消息和信息消息
2.2 ICMPv6-Path MTU发现
在IPv6中,中间转发设备不对报文进行分片而是在源设备进行分片,那源设备怎样知道路径上的MTU是多少呢?这里通过Path MTU来检测。
简单就是需要获取路径上接口的最小MTU,然后在源设备进行分片。
2.3 ICMPv6-Ping应用
通过发送(128,0)echo request和(129,0)echo reply报文进行联通性测试。
上面的是ICMPv6的基本报文类型,除了上面的还有一些专门为了IPv6实现功能的报文类型下次继续。
总结:ICMP协议用来在网络设备间传递各种差错和控制信息,对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。常见的如:Ping、Tracertroute、重定向等等。ICMPv6是专为IPv6网络设计的控制消息协议,作为IPv6协议栈的一个重要组成部分,它继承了ICMPv4的基本功能,并针对IPv6的新特性进行了扩展和优化。除了支持ICMP的功能还扩展了一些报文用以支持IPv6如NDP、地址解析、邻居发现等。
如果对文章感兴趣欢迎微信搜索公众号:不喜欢热闹的孩子
本文由 mdnice 多平台发布