icmp协议的应用

icmp协议的应用,第1张

  ICMP协议的应用

  要使用该协议,我们可以进行相应的ICMP设置,比如在Windows XP中,首先打开“网络连接”,右键单击启用Internet连接防火墙的“网络连接”,选择“属性”打开属性窗口。接着,选择“高级”选项卡,单击右下角“设置”按钮。然后,在高级设置窗口中选择“ICMP”选项卡,在其中可以进行相应的设置,包括允许传入的回显请求等。

  我们在网络中经常会使用到ICMP协议,只不过我们觉察不到而已。比如我们经常使用的用于检查网络通不通的Ping命令,这个“Ping”的过程实际上是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。

  ICMP应用之ping

  ping是一个用来查询网络通不通的一个工具,是系统自带的,运行于内核,调用ICMP协议。

  ping的工作原理:ping通过调用echo来发送请求,通过是否收到echo-reply来查询网络层的连通性。ping的结果会给出传送的时间和TTL的数据,还可以查看主机到目的主机的路由。这是因为ICMP的ping请求数据报在每经过一个路由器的时候,路由器就会把自己的IP地址放到该数据包中,而目的主机则会把这个IP列表复制到ICMP数据包中发回给主机。但是,IP头能记录的路由列表非常有限,如果要观看完整的路由信息,就要用到traceroute工具了。

  icmp协议的应用,ICMP协议的应用,第2张

  ICMP应用之traceroute

  traceroute是用来侦测主机到目的主机所经路由情况的工具,可以获取到所经路由器的IP地址。

  traceroute的工作原理:它收到目的主机的IP后,首先给目的主机发送一个TTL=1的UDP数据包,而经过的第一个路由器收到这个数据包以后,就自动将TTL减1.而TTL变为0以后,路由器就把这个包给抛弃了,并同时产生一个主机不可达的ICMP数据包给主机。主机收到这个数据包以后就发送一个TTL=2的数据包给主机,然后刺激第二个路由器给主机发送ICMP数据包,如此反复直到到达目的主机。这样,traceroute就拿到了所有的路由器IP,从而避免了IP头只能记录有限的路由IP 的问题。

  怎么知道UDP到没到达目的主机呢?这就涉及一个技巧的问题,TCP和UDP协议有一个端口号定义,而普通的网络程序只监控少数的几个号码较 小的端口,比如说80,比如说23,等等。而traceroute发送的是端口号》30000(真变态)的UDP报,所以到达目的主机的时候,目的主机只能发送一个端口不可达的ICMP数据报给主机。主机接到这个报告以后就知道,主机到了,所以,说Traceroute是一个骗子一点也不为过

  icmp协议的应用,ICMP协议的应用,第3张

  traceroute的另外一个作用是确定路径MTU。要做的就是发送分组,并设置“不分片”标志。发送的第一个分组的长度正好与出口MTU相等,每次收到ICMP“不能分片”差错时就减小分组的长度。

  产生ICMP不可达的3种情况:

  TTL为0,端口不可达(找不到对应的端口号),IP需要分片却设置了不分片的标志。

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存