icmp协议功能是什么

icmp协议功能是什么,第1张

  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协议功能是什么,icmp协议功能是什么,第2张

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

  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.比如下面的网络:

  icmp协议功能是什么,icmp协议功能是什么,第3张

  假如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地址。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2705420.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-16
下一篇 2022-08-16

发表评论

登录后才能评论

评论列表(0条)

保存