蓝盟系统集成,当你做“ping”时,你知道这背后的逻辑吗?

发布者:上海IT外包 发布时间:2019/4/17 13:23:50来源:www.linemore.com

      当我们发现网络故障,大家都知道ping和收看网络。
  所以,你知道什么是背后的“ping”命令的逻辑是什么?你知道它是如何实现的吗?
  一,“ping”命令的作用和原理?
  简单来说,“ping”用于检测本地设备是否可供网络上的其他主机访问。如果两台主机都无法ping通,则两台主机无法建立连接。 Ping是定位网络的重要手段。
  ping命令根据ICMP协议工作。 ICMP称为Internet控制消息协议。 ping命令发送ICMP回应请求到目标主机,并且等待目标主机返回一个应答报文。因为ICMP协议要求目标主机在收到消息后向发起主机返回ICMP响应消息。如果源主机接收到的一定时间内主机目的地的响应,它表示可以在两个主机之间访问网络。
  举一个例子来描述“ping”命令的工作过程:
  假设有两台主机,主机A(192.168.0.1)和主机B(192.168.0.2)。现在,我们要检查你是否可以访问主机A和主机B之间的网络。然后我们在主机A输入命令:ping 192.168。 0.2
  在这一点上,ping命令将建立在ICMP主机A(该包的内容将在后面描述)的请求分组,然后ICMP协议将通过分组和目的地IP(192.168.0.2)和其它信息,以ICMP协议。 IP层协议。
  获取信息后,IP层协议在源地址(即本地IP)和目的地址(即目的IP:192.168.0.2)上构建IP地址以及其他一些信息控制。
  一旦构建了IP数据包,这还不够。您必须添加MAC地址。因此,您必须通过ARP分配表找到与目标IP对应的MAC地址。当获得目的地主机的MAC地址和本地MAC时,它们被传送到数据链路层,组装在数据帧中并根据以太网介质访问规则发送。
  当主机B接收到该数据帧时,它将首先验证其目的地MAC地址是否是本地的。如果收到它,它将在收到数据帧后验证数据帧,并删除数据帧中的IP数据包。在提供机器的IP层协议然后检查IP层协议之后,移除ICMP分组并将其发送到ICMP协议。当还处理该步骤时,构造ICMP响应分组并将其发送回主机。一如果主机A在一段时间内收到响应数据包,则表明主机B可以访问该网络。如果没有收到,则网络不可用。除了监视可访问性之外,响应时间和开始时间之间的差异也可用于计算数据包的延迟时间。
  通过ping过程,ICMP协议是此过程的基础,这非常重要,因此我将在下面详细解释ICMP协议。
  第二,什么是“ICCMP”?
  我们知道ping命令基于ICMP协议。然后我们观察下图,我们知道ICMP协议是由IP协议发送的,即ICMP数据包封装在IP数据包中。
  IP协议是不可靠且无连接的分组协议。它不保证必须交付数据。因此,我们必须确保通过其他模块发送数据以帮助实施。这是ICMP协议。
  当发送的IP数据包发送异常时,ICMP将异常信息封装在数据包中,然后将其返回给发起主机。
  可以删除上面的图片并进一步查看:
  继续调整ICMP协议模块:
  从图中可以看出,ICMP数据包由8位类型字段和8位代码字段以及16位验证字段和选项数据组成。
  ICMP协议大致可分为两类:
  查询消息的类型
  错误消息的类型
  查询消息类型:
  查询消息主要适用于:ping查询,子网掩码查询,时间戳查询等。
  上面提到的ping命令进程实际上对应于ICMP协议查询消息类型的使用。当主机A构造ICMP请求包时,其ICMP类型字段使用8(环回请求)。当主机B构造ICMP echo数据包时,其ICMP类型字段使用0(环回响应)。有关更多类型值,请参阅上表。
  要了解查询消息的类型,请参阅本文开头的ping过程。我不会在这里详述。
  错误消息的类型:
  主要在数据传输错误发送时生成错误消息。
  它包括无法实现的目标(网络不可达,主机不可达,无法实现的协议,端口无法实现的,片段等),超时,参数问题,重定向(重定向网络,主机重定向等)。
  错误消息通常包含导致错误的IP数据包的第一个片段的IP头,以及片段的数据部分的前8个字节。
  当在一个IP分组的传输错误(例如,主机是不可用)时,ICMP协议将向前它打包错误消息,然后向源主机,从而使源主机知道做什么。
  是否可以在发现错误时使用错误消息类型?不一定Traceroute是一个例外,它是用于检测源主机和目标主机之间路由的常用工具。 Traceroute的原理是使用ICMP规则创建一些不正确的事件,然后根据不正确的事件评估网络的路由。
  具体重点是:
  Traceroute设置一个特殊的TTL值来跟踪源主机和目标主机之间的路由数。首先,它将TTL=1的UDP数据包发送到目标主机。一旦数据包在路上找到路由器,TTL就变为0(TTL规则为1减去每个路由器),因为TTL=0.因此,路由器将丢弃数据包然后生成ICMP数据包源主机上的错误类型(超时),即错误包。此时,始发主机从第一路由节点获得IP和相关信息。
  然后,始发主机将具有TTL=2的UDP分组发送到目的主机,并经历前一过程以知道第二路由节点的IP和耗时信息。
  Traceroute可以反复获取从主机A到主机B的所有路由器的信息。
  但是存在一个问题,即如果数据包到达目标主机,即使目标主机收到TTL值为1的IP数据包,它也不会丢弃该数据包,也不会生成超时ICMP返回。包,因为包已到达目的地。那么,我们如何确定数据包是否已到达目标主机?
  Traceroute方法是设置当始发主机将UDP数据包发送到目标主机时无法达到的目标端口号(例如,端口号大于30,000),然后当数据包实际到达时到目标主机,目标主机发现没有相应的端口号,因此将“无法访问端口”错误的ICMP数据包返回给原始主机。
  您可以看到Traceroute的原理非常复杂和有趣。

 

上海IT外包服务网 链接:http://www.linemore.com

>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部