ICMP协议:
ICMP是一种验证网络设置是否正确、能否预期正常工作、出了问题能够制止问题蔓延扩散的协议。负责IP相关的设置。主要提供的功能:功能 |
1、确认IP包是否成功送达目标地址 |
2、通知在发送过程中,IP包被丢弃的具体原因 |
3、改善网络设置 |
4、网络的诊断 |
应用:
在IP通信中,如果某个IP包因为某种原因未能到达目标地址,那么这个具体原因就是ICMP负责通知。如下图:在ICMP中,包以明文的形式通过IP进行传输ICMP消息分类:
分类 | 说明 |
错误消息 | 通知出错原因 |
查询消息 | 用于诊断 |
常见ICMP消息:
1、目标不可达消息:
IP路由器无法将IP数据包发送到目标地址,就会给发送端主机返回该消息(Destination Unreachable Message,该消息包含一些具体原因说明),通常都是没联网导致。2、重定向消息:
如果路由器发现发送端主机使用了次优的路径发送数据,那么路由器就会返回一个ICMP重定向消息(ICMP Redirect Message)给主机,该消息包含最合适路由信息和源数据。3、超时消息:
IP包的TTL(Time To live,生命周期,防止包无线循环转发)字段,一旦因为TTL=0,IP包被丢弃时;IP路由器就会发送ICMP超时消息(ICMP Time Exceeded Message)给发送端主机,通知该包丢弃了。 其中traceroute应用就是利用这个消息,来展示由执行程序的主机到目标主机之前经历多少个路由器。通过IP包的生存期限从1开始按照顺序递增的同时发送UDP包,强制接收ICMP超时消息。 这样可以将所有路由器的IP地址 逐一呈现 ,以便诊断网络问题节点。4、回应消息:
用于进行通信的主机或路由器之间、判断所发送的数据包是否已经成功到达对端的一种消息。可以向对端主机发送回送请求的消息(ICMP Echo Request Message),也可以接收对端发回来的应答消息(ICMP Echo Reply Message),ping命令就是利用这个消息实现。其他ICMP消息:
1、原点抑制消息:
当路由器向低速线路发送数据时,其发送队列的残存变为0而无法发送,那么可以向IP包的源地址发送一个ICMP原点抑制(ICMP Source Quench Message)消息。这样收到该消息的额主机,就可以知道整个线路的某一处发生了拥堵情况,进而打开IP包的传输间隔。 不过这个ICMP消息可能会引起不公平网络通信,一般不被使用。2、路由器探索消息:
主要用于发现与自己相连网络中的路由器。一台主机发出ICMP路由器请求(Router Solicitation)。路由器返回ICMP路由器公告消息响应(ICMP address MAsk Reply)3、地址掩码消息:
主要用于主机或路由器想要了解子网掩码的情况。 向目标主机或路由器发送ICMP地址掩码请求消息(ICMP Address Mask Request),接收到该消息的设备就会响应ICMP地址掩码应答消息(ICMP Address Mask Reply),以此来获取子网掩码信息。ICMPv6协议:
在IPv6通信中,离不开ICMPv6。因为ICMP的作用域扩大了,从ARP转为ICMP的邻居探索消息(Neighbor Discovery)