ICMP
Internet Control Message Protocol,由RCF定义的一个网络层协议,用于报告IP数据包传递过程中发生的错误、失败等信息,提供网络诊断功能。
由于IP是尽力传输协议,其提供的数据传送服务是不可靠的,而且无法提供相反诊断信息,而ICMP正是因此诞生。
ICMP可分为梁总消息类型:差错消息和查询消息。
8种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的常用工具:
ping------------------------------------
ping是ICMP的一个最常见的应用,主机通过发送ICMP Echo Request而目的主机回ICMP Echo Reply消息。
假设某个中间设备没有到达目的网络的路由,便会向源主机返回一条ICMP Destinaion Unreachable,告知源主机不可达;如果中间网络异常,源主机没有收到中间路由返回的des unreable消息,因源主机没有收到任何回包而提示目的地址不可达或超时;
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的地址。