(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
它是位于网络层的一个协议,可以用来传递差错、控制、查询等信息。
有几大功能:
1.ICMP重定向,比如你有路由A,路由B,你要访问路由A盘路上的服务器A,但是的你的默认网关配置的路由B。报文就问先到路由B,B看你访问的是服务器A,它就转给了路由A(此时访问路径:pc >>RT-B >> RT-A>>Server- A),然后RT- B告诉主机你有更短的路径可以直接访问服务器A,发送了个redirect消息,主机收到后以后默认就走路由A去访问服务器A了(重定向默认路径:pc>>RT-A>>Server-A)。
2.差错检测,ICMP Echo消息常用于诊断源和目的地之间的网络连通性,比如用Request向csdn请求,csdn收到后用Reply回复。
3. 错误报告,比如ping csdn是有返回信息的,再随便ping一个不存在的地址就提示unknown host了。
ICMP消息类型和编码类型
排查故障最常用的就是ping和tracert命令了,我这里是Mac的终端(Linux)用的是traceroute。命令不限于电脑端,各大路由厂商思科、华为、华三等等路由交换设备通用。
ping命令检测网络连通性
monster@chuanfudembp ~ % ping www.csdn.net
PING r3lzca9monbh9slnohm4wwh32vxfadus.yundunwaf4.com (60.205.172.2): 56 data bytes
64 bytes from 60.205.172.2: icmp_seq=0 ttl=42 time=44.406 ms
64 bytes from 60.205.172.2: icmp_seq=1 ttl=42 time=45.495 ms
64 bytes from 60.205.172.2: icmp_seq=2 ttl=42 time=44.948 ms
64 bytes from 60.205.172.2: icmp_seq=3 ttl=42 time=45.119 ms
64 bytes from 60.205.172.2: icmp_seq=4 ttl=42 time=45.025 ms
64 bytes from 60.205.172.2: icmp_seq=5 ttl=42 time=45.246 ms
tracert命令追踪源到端的每个节点的路由路径