加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

当你「ping 一下」的时候,你知道它背后的逻辑吗?

发布时间:2019-04-16 13:23:13 所属栏目:教程 来源:奎哥
导读:我们在碰着收集不通的环境,各人都知道去 ping 一下,看一下收集状况。 那你知道「ping」呼吁背后的逻辑是什么吗?知道它是怎样实现的吗? 一、「ping」呼吁的浸染和道理? 简朴来说,「ping」是用来探测本机与收集中另一主机之间是否可达的呼吁,假如两台主
副问题[/!--empirenews.page--]

当你「ping 一下」的时辰,你知道它背后的逻辑吗?

我们在碰着收集不通的环境,各人都知道去 ping 一下,看一下收集状况。

那你知道「ping」呼吁背后的逻辑是什么吗?知道它是怎样实现的吗?

一、「ping」呼吁的浸染和道理?

简朴来说,「ping」是用来探测本机与收集中另一主机之间是否可达的呼吁,假如两台主机之间ping不通,则表白这两台主机不能成立起毗连。ping是定位收集通不通的一个重要本领。

ping 呼吁是基于 ICMP 协议来事变的,「 ICMP 」全称为 Internet 节制报文协议( Internet Control Message Protocol)。ping 呼吁会发送一份ICMP回显哀求报文给方针主机,并守候方针主机返回ICMP回显应答。由于ICMP协议会要求方针主机在收到动静之后,必需返回ICMP应答动静给源主机,假如源主机在一按时刻内收到了方针主机的应答,则表白两台主机之间收集是可达的。

举一个例子来描写「ping」呼吁的事变进程:

  1. 假设有两个主机,主机A(192.168.0.1)和主机B(192.168.0.2),此刻我们要监测主机A和主机B之间收集是否可达,那么我们在主机A上输入呼吁:ping 192.168.0.2
  2. 此时,ping呼吁会在主机A上构建一个 ICMP的哀求数据包(数据包里的内容后头再详述),然后 ICMP协议会将这个数据包以及方针IP(192.168.0.2)等信息一同交给IP层协议。
  3. IP层协议获得这些信息后,将源地点(即本机IP)、方针地点(即方针IP:192.168.0.2)、再加上一些其余的节制信息,构建成一个IP数据包。
  4. IP数据包构建完成后,还不足,还必要加上MAC地点,因此,还必要通过ARP映射表找出方针IP所对应的MAC地点。当拿到了方针主机的MAC地点和本机MAC后,一并交给数据链路层,组装成一个数据帧,依据以太网的介质会见法则,将它们传送出出去。
  5. 当主机B收到这个数据帧之后,会起首搜查它的方针MAC地点是不是本机,假如是就吸取下来处理赏罚,吸取之后会搜查这个数据帧,将数据帧中的IP数据包取出来,交给本机的IP层协议,然后IP层协议搜查完之后,再将ICMP数据包取出来交给ICMP协议处理赏罚,当这一步也处理赏罚完成之后,就会构建一个ICMP应答数据包,回发给主机A
  6. 在必然的时刻内,假如主机A收到了应答包,则声名它与主机B之间收集可达,假如没有收到,则声名收集不行达。除了监测是否可达以外,还可以操作应答时刻和提倡时刻之间的差值,计较出数据包的耽误耗时。

通过ping的流程可以发明,ICMP协议是这个进程的基本,长短常重要的,因此下面就把ICMP协议再具体表明一下。

二、什么是「 ICMP 」?

我们知道,ping呼吁是基于ICMP协议来实现的。那么我们再来看下图,就大白了ICMP协议又是通过IP协议来发送的,即ICMP报文是封装在IP包中。

IP协议是一种无毗连的,不行靠的数据包协议,它并不能担保数据必然被送达,那么我们要担保数据送到就必要通过其余模块来帮忙实现,这里就引入的是ICMP协议。

当传送的IP数据包发送非常的时辰,ICMP就会将非常信息封装在包内,然后回传给源主机。

将上图再细拆一下可见:

继承将ICMP协议模块细拆:

由图可知,ICMP数据包由8bit的范例字段和8bit的代码字段以及16bit的校验字段再加上选项数据构成。

ICMP协议大抵可分为两类:

  • 查询报文范例
  • 过错报文范例

查询报文范例:

查询报文首要应用于:ping查询、子网掩码查询、时刻戳查询等等。

上面讲到的ping呼吁的流程着实就对应ICMP协议查询报文范例的一种行使。在主机A构建ICMP哀求数据包的时辰,其ICMP的范例字段中行使的是 8 (回送哀求),当主机B构建ICMP应答包的时辰,其ICMP范例字段就行使的是 0 (回送应答),更多范例值参考上表。

对 查询报文范例 的领略可参考一下文章最开始讲的ping流程,这里就不做赘述。

过错报文范例:

过错报文首要发生于当数据传送发送错误的时辰。

它包罗:方针不行达(收集不行达、主机不行达、协议不行达、端口不行达、榨取分片等)、超时、参数题目、重定向(收集重定向、主机重定向等)等等。

过错报文凡是包括了引起错误的IP数据包的第一个分片的IP首部,加上该分片数据部门的前8个字节。

当传送IP数据包产生错误的时辰(譬喻 主机不行达),ICMP协议就会把错误信息封包,然后传送回源主机,那么源主机就知道该怎么处理赏罚了。

那是不是只有碰着错误的时辰才气行使 过错报文范例 呢?也不必然。

Traceroute 就是一个破例,Traceroute是用来侦测源主机到方针主机之间所颠末路由环境的常用器材。Traceroute 的道理就是操作ICMP的法则,制造一些错误的变乱出来,然后按照错误的变乱来评估收集路由环境。

详细做法就是:

Traceroute会配置非凡的TTL值,来追踪源主机和方针主机之间的路由数。起首它给方针主机发送一个 TTL=1 的UDP数据包,那么这个数据包一旦在路上碰着一个路由器,TTL就酿成了0(TTL法则是每颠末一个路由器城市减1),由于TTL=0了,以是路由器就会把这个数据包丢掉,然后发生一个错误范例(超时)的ICMP数据包回发给源主机,也就是过错包。这个时辰源主机就拿到了第一个路由节点的IP和相干信息了。

接着,源主机再给方针主机发一个 TTL=2 的UDP数据包,仍旧上述流程走一遍,就知道第二个路由节点的IP和耗时环境等信息了。

云云重复举办,Traceroute就可以拿到从主机A到主机B之间全部路由器的信息了。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读