什么是ping?

 PING的基本概念

PING (Packet Internet Grope),因特网包探索器,用于测试网络连接量的程序。

PING可以说是ICMP的最著名的应用,是TCP/IP协议的一部分。 利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。

工作原理: 本地主机向目的IP地址发送一个ICMP请求包,并要求目的主机回发给本主机一个相同大小的数据报,用来测试网络的连通性。

ICMP

这里提到了ICMP,那了解PING之前我们先了解  ICMP 

—— Internet Control Message Protocol,也就是互联⽹控制报⽂协议。

ICMP 主要的功能包括:确认 IP 包是否成功送达⽬标地址、报告发送过程中 IP 包被废弃的原因和改善⽹络设置等。

在 IP 通信中如果某个 IP 包因为某种原因未能达到⽬标地址,那么这个具体的原因将由 ICMP 负责通知。假如主机A需要向主机B发送消息,期间经过多个路由器,由于某种原因,最后一个路由器发送ARP请求来知道主机B   MAC地址,但是未能发现主机B。这个时候路由器会返回一个ICMP包。被主机A分解,得到反馈。这种消息与IP有关,ICMP 报⽂是封装在 IP 包⾥⾯,它⼯作在⽹络层,是 IP 协议的助⼿。

所以ICMP包头的类型字段分为

⼀类是⽤于诊断的查询消息,也就是「查询报⽂类型」

⼀类是通知出错原因的错误消息,也就是「差错报⽂类型」

什么是ping?_第1张图片

然后PING就是通过0和8的回送消息实现的,回送消息⽤于进⾏通信的主机或路由器之间,判断所发送的数据包是否已经成功到达对端的⼀种消息。

ICMP的使用还有很多内容,我这里就不提及。

 PING的发送和接收过程

一般情况下,我们使用PING是同一子网下,观察自己的主机和目标主机是否连通。

ping 命令执⾏的时候,源主机⾸先会构建⼀个 ICMP 回送请求消息数据包。

ICMP 数据包内包含多个字段,最重要的是两个:

  • 第⼀个是类型,对于回送请求消息⽽⾔该字段为 8;
  • 另外⼀个是序号,主要⽤于区分连续 ping 的时候发出的多个数据包。

每发出⼀个请求数据包,序号会⾃动加 1。为了能够计算往返时间 RTT,它会在报⽂的数据部分插⼊发送时间。

ICMP将这个数据包和目标IP地址交给IP层,封装成一个IP数据包。传输过程可能用到ARP协议找MAC地址。然后目标主机收到了,先给自己的IP层,再给ICMP协议,构建一个ICP回送响应消息数据包。当然这只是最简单的,同⼀个局域⽹⾥⾯的情况。如果跨⽹段的话,还会涉及⽹关的转发、路由器的转发等等。

你可能感兴趣的:(计算机网络学习,计算机网络)