个人理解,
1. ICMP是同IP协议一样工作在ISO模型的网络层, 它的全称是: Internet Control Message Protocal.
2. ICMP仅能够用于故障隔离而不能用于错误纠正。。ICMP报文还能用于故障检测,排除和优化网络性能。
ICMP的标准定义在RFC792中。
ICMP报文不能直接发给网络借口层进行传输。它必须被封装在IP数据报中,然后发往下一层。IP数据报中的数据部分由ICMP报文组成。当一个ICMP报文通过IP数据报进行传输时,IP报头的协议字段必须设置为1。
3. 下面是一些关于ICMP的内容:
-ICMP报告发生在数据传输时的错误。但不负责由此而引发的问题。
-当携带有ICMP报文的IP数据遇到问题时,ICMP不报告错误。
-ICMP报文总是只报告数据报零分段的问题。
-ICMP报文总是被重定向到那些发送数据的主机上,而不是中间设备上。
-对于含有多播地址或者像127.0.0.1这样的特殊地址的数据报将不会产生ICMP报文。
4. ICMP报文格式
ICMP所报告的报文被分成两类:错误报文和查询报文。
错误报文用来报告网络中存在的问题;而查询报文则用来排除网络故障。
A ,错误报文
类型 代码 校验和
———————————————-——
未使用
—————————————————
internet报头+原始数据包的前64位
ICMP报文格式中的 类型字段给出了错误报文的类型。例如,目标不可达,重定向,源抑制,超时,参数问题等。
B,查询报文
最常用的 查询报文就是回送请求(Echo Request),回送应答(Echo Reply),时间戳(Time Stamp Request)和时间戳应答(Time Stamp Reply)。
ICMP还可以生成一些其他报文,比如地址掩码请求(Address Mask Request)和地址掩码应答(Address Mask Reply)
我们使用一个ICMPECHO数据包来探测主机地址是否存活(当然在主机没有被配置为过滤ICMP形式),通过简单的发送一个ICMPECHO(Type 8)数据包到目标主机,如果ICMPECHOReply(ICMPtype0)数据包接受到,说明主机是存活状态。 如果没有就可以初步判断主机没有在线或者使用了某些过滤设备过滤了ICMP的REPLY。这种机制就是我们通常所用的ping命令来检测目标主机是否可以ping到. |