ICMP/ICMPv6:信报控制协议(ICMP/ICMPv6:Internet Control Message PRotocol)
Internet 控制信息协议(ICMP)是 ip 组的一个完整部分。IP 包中发送的 ICMP 信息主要用于涉及网络操作或错误操作的不可达信息。ICMP 包发送是不可靠的,所以主机不能依靠接收 ICMP 包解决任何网络问题。ICMP 的主要功能如下:
通告网络错误。比如,主机或整个网络部分由于某些失败类型是不可达的。与端口号对应的没有接受人的 TCP 或 UDP 包途径 ICMP 报告。
通告网络拥塞。当路由器缓存太多包,由于传输速度无法达到它们的接收速度,将会生成ICMP 源结束信息。针对发送者,这些信息将会导致传输速度降低。当然,ICMP 源结束信息的生成也将引起更多的网络拥塞,所以使用起来较为保守。
协助解决故障。ICMP 支持 Echo 功能,即在两个主机间一个往返路径上发送一个包。Ping 是一种基于这种特性的通用网络治理工具,它将传输一系列的包,测量平均往返次数并计算消耗百分比。
通告超时。假如一个 IP 包的 TTL 域降低到零,路由器就会放弃包,这时会生成一个 ICMP 包通告这一事实。路由跟踪器是一件通过 TTL 小值发送包及监视 ICMP 超时通告转换网络路由器的工具。
ICMP 在 IPv6 定义中重新修订。此外,在 ICMPV6 中 IPv4 组成员协议(IGMP)的多点传送控制功能重装成一体。
协议结构
Type ― 错误消息或信息消息。错误消息可能是不可获得目标文件,数据包太大,超时,参数问题等。可能的信息消息有:Echo Request、Echo Reply、Group Membership Query、Group Membership Report、Group Membership RedUCtion。
Code ― 每种消息类型具有多种不同代码。不可获得目标文件正式这样一个例子,即其中可能的消息是:目标文件没有路由,禁止与目标文件的通信,非邻居,不可获得地址,不可获得端口。具体细节请参照相关标准。
Checksum ― 计算校验和时,Checksum 字段设置为0。
Identifier ― 帮助匹配 Requests/Replies 的标识符,值可能为0。
Sequence Number ― 帮助匹配 Requests/Replies 的序列号,值可能为0。
Address Mask ― 32位掩码地址。