前言
Internet控制报文协议ICMP(Inter Control Message Protocol) 是网络层的一个重要协议。ICP协议用来在网络设备之间传递各种差错和控制信息,它对于收集各种网络信息、诊断和排除各种网络故障具有至关重要的作用。
简单来说:ICMP协议是一个用于诊断网络故障很好的一个工具。
ICMP使用:
我们想要调用ICPM协议时,可以使用系统自带的ping命令 无论是Linux系统还是Windows系统、以及各种网络设备,都自带ping这个命令
当你使用ping这条命令时,若对方能与你正常通讯 且无防火墙等安全设备时,正常情况应该如下:
主机A使用ping命令调用ICMP协议向主机B进行通讯,这时候叫做 ICMP Echo Request
主机B收到主机A发来的ICMP通讯后,也会回个ICMP响应 这时候叫做 ICMP Echo Reply
至此,一次ICMP通讯就已完成
这是在抓包情况下,看到的ICMP包
可以发现一次请求,一次响应 因为仅仅只ping了一次
ICMP数据包格式:
在ICMP协议包中,有两个很重要的东西
- Type
- Type表示ICMP消息类型
- Code
- Code表示同一消息类型中不同信息
最常见的有这些:
类型 | 编码 | 描述 |
0 | 0 | Echo Reply |
3 | 0 | 网络不可达 |
3 | 1 | 主机不可达 |
3 | 2 | 协议不可达 |
3 | 3 | 端口不可达 |
5 | 0 | 重定向 |
8 | 0 | Echo Request |
在正常通讯过程中,我们会收到 0 0 这类型的回应,则代表通讯正常无任何问题
利用ICMP进行故障诊断:
请求超时
如果你在ping对方主机时,发现了回显的内容为 "请求超时" 那么代表对方存在,但是并未搭理你
这情况一般是由于对方开启了防火墙、或被安全设备拦截导致
也有可能是对方主机不在线 (这种情况是因为之前与对方有通讯,且mac地址表中有对方)
在抓包信息中,也能看到,只有icmp request 却没收到icmp reply
无法访问目标主机
如果你在ping对方主机时,发现了回显的内容为 "无法访问目标主机" 则代表没用任何一台机器在使用这个IP地址
也代表着没有获取到对方的MAC地址 因此无法收到任何回复
也有可能是没有路由
在这种情况下抓包,可以发现回应者是网关 即:网关告诉你,没用任何机器在使用这个IP
此时此刻的回应信息为 3 1
传输失败。常见故障。
当你ping对方时,得到的信息为 "传输失败。常见故障" 则大概率代表你的网关出了问题导致你无法与局域网外的网络世界互相通信
也有可能是没有设置网关的原因
此时此刻是无法抓倒任何包的
端口不可达
如果你在ping的过程中,发现了回应为 3 3 类型,那么代表对方端口不可达
标签:协议,通讯,网络层,ping,网络,对方,主机,ICMP From: https://www.cnblogs.com/kakureru/p/17715944.html