×
家电数码 > 手机 > 详情

icmp协议功能是什么

发布时间:2020-05-25 发布时间:
|

  ICMP协议

  ICMP(Internet Control Message Protocol)是介于网络层和传输层的协议。它的主要功能是传输网络诊断信息。

  ICMP传输的信息可以分为两类,一类是错误信息,这一类信息可用来诊断网络故障。我们已经知道,IP协议的工作方式是”best effort”。如果IP包没有被传输到目的地,或者IP包发生错误,IP协议本身不会做进一步的努力。但是上游发送IP包的主机和接力的路由器并不知道下游发生了错误和故障,它们可能继续发送IP包。通过ICMP包,下游的的路由器和主机可以将错误信息汇报给上游,从而让上游的路由器和主机进行调整,需要主要的是,ICMP只提供特定类型的错误汇报,它不能帮助IP协议成为”可靠(reliable)”的协议。另一类信息是咨询性质的,比如某台计算机询问路径上的每个路由器都是谁,然后各个路由器同样用ICMP包回答。

  备注:ICMP基于IP协议,也就是说,一个ICMP包需要封装在IP包中,然后在互联网传送.ICMP是IP套装的必须部分,也就是说,任何一个支持IP协议的计算机,都要实现ICMP.

  ICMP包的结构:

  

  有点复杂,但是那是注释,内容不复杂,下面看我给大家一一道来:

  ICMP包都会有Type,Code,Checksum三部分.Type标识ICMP包的大的类型,而Code是一个Type之内细分小类型。针对不同的错误信息或者资讯信息,会有不同的Type和Code.从上面我们可以看出,ICMP支持的类型非常多,由多种多样的功能.Checksum 与IP协议的header Checksum相类似,但与IP协议中checksum只校验头部不同,这里的Checksum所校验的是整个ICMP包(包括头部和数据)

  余下的ICMP包格式根据不同的类型不同。另一方面,ICMP包通常是由某个IP包触发的。这个触发IP包的头部和一部分数据会被包含在ICMP包的数据部分。

  ICMP协议是实现ping命令和traceroute命令的基础。这两个工具常用于网络排错。

  常见的ICMP包类型

  回音(Echo)属于资讯信息.ping命令就是利用了该类型的ICMP包。当使用ping命令的时候,将向目标主机发送Echo-询问类型的ICMP包,而目标主机在接收到该ICMP包之后,会回复Echo-回答类型的ICMP包,并将询问ICMP包包含在数据部分.ping命令是我们进行网络排查的一个重要工具。例如一个IP地址可以通过ping命令收到回复,那么其他的网络协议通信方式也很有可能成功。

  源头冷却(source quench)属于错误消息。如果某个主机快速的向目的传送数据,而目的地主机没有匹配的处理能力,目的主机可以向出发主机发出给类型的ICMP包,提醒出发主机放慢发送速度。

  目的地无法到达(Destination Uncreachale)属于错误信息。如果一个路由器接收到一个没办法进一步接力的IP包,它会想出发主机发送该类型的ICMP包。比如当IP包到达最后一个路由器,路由器发现目的地主机down机,就会向出发主机发送目的地无法到达(Destinaton Unreacherable)类型的ICMP包。目的地无法到达还有其他可能的原因,比如不存在接力路径,比如不被接收的端口号等等。

  超时(Time Exceded)属于错误信息.IPV4中的Time to Live(TTL)和IPV6中的Hop Limit会随着经过的路由器而递减,当这个区域值减为0时,就认为该IP包超时(Time Exceeded).Time Exceeded就是TTL减为0时路由器发给出发地主机的ICMP包,通知它发生了超时错误。

  traceroute就利用了这种类型的ICMP包.traceroute命令用来发现IP接力路径上的各个路由器。它向目的地发送IP包,第一次的时候,将TTL设为1,引发第一个路由器的Time Exceeded错误。这样,第一个路由器恢复ICMP包,从而让出发主机知道途径的第一个路由器的信息。随后TTL被设置为2,,3,4.。。直到到达目的主机。这样,沿途的每个路由器都会向出发主机发送ICMP包来汇报错误.traceroute将ICMP包的信息打印在屏幕上,就是接力路径的信息了。

  重新定向(redirect)属于错误信息。当一个路由器收到一个IP包,对照其routing table,发现自己不应该受到该IP包,它会向出发主机发送重新定向类型的ICMP,提醒出发主机修改自己的routing table.比如下面的网络:

  

  假如145.1发送到145.15的IP包,结果被中间的路由器通过145.17的NIC收到。那么路由器就会发现,根据自己的routing table,这个IP包要原路返回。那么router就可以判断出145.1的routing table可能有问题。所以路由器会向145.1发送redirect类型的ICMP包。

  IPV6的Neighbor Discovery

  ARP协议用于发现周边的IP地址和MAC地址的对应。然而,ARP协议只用于IPV4,IPV6并不使用ARP协议.IPV6包通过邻居探索(ND,Neighbor Discovery)来实现ARp的功能.ND的工作方式与ARP类型,但它基于ICMP协议.ICMP包邮Neighbor Solicitatin 和Neighbor Advertisement类型。这两个类型分别对应ARP协议的询问和回复信息。

  ICMP协议的作用是什么?

  ICMP协议主要用来检测网络通信故障和实现链路追踪,最典型的应用就是PING和tracerooute。

  PING:

  通过发送回送请求报文和回送回答报文来检测源主机到目的主机的链路是否有问题,目的地是否可达,以及通信的延迟情况。

  traceroute:

  通过发送探测报文来获取链路地址信息。第一个探测报文TTL为1,到达第一个路由器时,TTL减1为0所以丢掉这个探测包,同时向源主机发回ICMP时间超过报文,这时源主机就获得了第一个路由器的IP地址;接着源主机发送第二个探测报文,TTL增1为2,到达第一个路由器TTL减1为1并转发探测包到第二个路由器,这时TTL减1为0,丢掉这个探测包并向源主机发回ICMP时间超过报文,源主机就获得了第二个路由器的IP地址;以此类推,直到探测报文到达traceroute的目的地,这时源主机就获得了到目的地的每一跳路由的IP地址。

  ICMP功能简介

  网际层的IP负责位于远程网络中的设备之间的数据交付,为了使IP提供这一数据传送服务,需要进行一些管理和维护工作,即IP层需要检测某些错误的条件,还要从虚网的其他结点获取信息。这一功能由Internet控制报文协议(ICMP)来提供,ICMP为内部IP层通信提供一个维护,诊断和测试框架。

  图1-1示出了一个典型的例子,设备A在向设备B发送数据时,路由器2检测到路由器4不可达,于是路由器2发送一个ICMP报文给源设备,告知问题所在。

  ICMP协议的主要功能

  ICMP的全称是 Internet Control Message Protocol 。从技术角度来说,ICMP就是一个“错误侦测与回报机制”,其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性﹐其功能主要有:

  侦测远端主机是否存在

  建立及维护路由资料

  重导数据传送路径

  数据流量控制

  ICMP在沟通之中,主要是通过不同类型的报文让主机或路由器识别不同的链路传输情况。常用的ICMP报文类型如下

  总结

  ICMP协议是IP协议的排错助手,它可以帮助人们及时发现IP通信中出现的故障。基于ICMP的ping和traceroute也构成了重要的网络诊断工具。然而需要注意的是,尽管ICMP的设计是出于好的意图,但ICMP却经常被黑客借用进行网络攻击,比如利用伪造的IP包引发大量的ICMP回复,并将这些ICMP包导向受害主机,从而形成DoS攻击。而redirect类型的ICMP包可以引起某个主机更改自己的routing table,所以也被用做攻击工具。许多站点选择忽视某些类型的ICMP包来提供自身的安全性.


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
美国陆军通信带宽需求及能力分析