ICMP

Internet Control Message Protocol,由RCF定义的一个网络层协议,用于报告IP数据包传递过程中发生的错误、失败等信息,提供网络诊断功能。

由于IP是尽力传输协议,其提供的数据传送服务是不可靠的,而且无法提供相反诊断信息,而ICMP正是因此诞生。

ICMP可分为梁总消息类型:差错消息和查询消息。

8种ICMP包类型

icmp包的request 0800 和reply的0000 icmp包类型_目的地址

 

 
常用4种介绍:
(1)Destination Unreachable 目的不可达-----
《1》目的主机可能不存在或者关机;
《2》发送或提供的路由无法实现;
《3》设定了不分段的包太大而不能封装于帧中;

(2)Echo Request(type=8) 和 Echo Reply(type=0)
日常我们ping经常使用的来回消息类型;

(3)TimeExceeded:当IP包中的TTL字段减到0或分片重组定时器到期,此包或任何为未重组的分片将从网络中被删除,删除分组的路由器接着向源发送一个Time Exceeded下次,说明分组未被投递。

(我的理解:根据TTL的原理,每经过一个节点,设备收到TTL=0的包,回源主机一个ICMP TYPE=11的time exceeded包)


以及不常用的(统一截图)

icmp包的request 0800 和reply的0000 icmp包类型_网络层_02

 

 

以下介绍ICMP的常用工具:


ping------------------------------------

ping是ICMP的一个最常见的应用,主机通过发送ICMP Echo Request而目的主机回ICMP Echo Reply消息。

假设某个中间设备没有到达目的网络的路由,便会向源主机返回一条ICMP Destinaion Unreachable,告知源主机不可达;如果中间网络异常,源主机没有收到中间路由返回的des unreable消息,因源主机没有收到任何回包而提示目的地址不可达或超时;

icmp包的request 0800 和reply的0000 icmp包类型_IP_03

 

 



tracert--------------

原理:发送一个带有特定TTL的值,通过数据包转发每一条使TTL减一的原理。如果TTL值为0则设备会丢弃这个数据包,并向源主机发回一个ICMP超时消息报告错误。

工作原理:

《1》RTA发送一个TTL=1的udp报文,目的地址为RTC;

《2》RTB收到数据包后,TTL-1=0,于是RTB回一个ttl-exceeded报文给RTA,这个报文含有第一跳的地址。这样RTA就得到了第一跳的地址;

《3》RTA发送一个TTL=2的udp报文,目的地址为RTC;

《4》报文到RTB后,ttl-1=1,然后丢给RTC。RTC收到后,ttl-1=0,由于RTC为目的地址,且ttl=0,RTC将回一个ttl-exceeded报文给RTA,里面包含RTC的地址。

icmp包的request 0800 和reply的0000 icmp包类型_网络层_04

 

 

icmp包的request 0800 和reply的0000 icmp包类型_网络层_05