Internet控制消息协议ICMP(Internet Control Message Protocol)是网络层的一个重要协议。ICMP协议用来在网络设备间传递各种差错和控制信息,并对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。
ICMP重定向
如图所示,当主机A去访问服务器A时:
访问网关,发现路由器和主机A网段一致,所以主机A会先去访问路由器B,然后路由器B发现主机A要访问的是服务器A。然后路由器B会向主机A发送一个ICMP的重定向报文,告诉主机A下次访问服务器A的时候,不需要将报文发送给路由去B,直接发送给路由去A,它会帮主机A转发。
1.重定向报文由路由器产生
2.由主机处理重定向报文
3.重定向报文只针对某些网络重定向
ICMP差错检测
当网络设备无法访问目标时,会自动发送ICMP目的不可达报文到发送端设备。
ICMP数据包格式
Type表示ICMP消息类型,Code表示同一消息类型中的不同信息。
ICMP消息类型和编码类型
ICMP应用
ping
如图所示,底层环境已通,从PC1pingPC2:
此时将AR2的G0/0/1接口down掉,再次从PC1pingPC2
tracert
将环境中down掉的接口重新打开
使用tracert命令再次请求PC2,显示如下
如图所示,tracert会显示数据包在网络传输过程中所经过的每一跳
原理:
PC1发送一个TTL值为1的UDP报文,当报文到达AR1的时候,AR1会给PC1回复一个ICMP超时报文,此时PC1就知道该UDP已经到达AR1;PC2再次发送一个TTL为2的UDP报文,当报文到达AR2时,AR2回回复一个OCMP超时报文,PC1得知该UDP报文已经到达AR2,依次类推,直到TTL值足够到达PC2时结束。
【注意】每次发送UDP时都会发送三个UDP报文,由图中的信息也可得知:16ms 15ms <1ms