0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ping命令的作用和原理是什么?

华为开发者社区 来源:华为云社区 作者:云小萌 2021-03-18 17:21 次阅读

在测试和部署网络通信应用时,我们经常会遇到网络不通的问题。一般都会想到ping一下。那么ping命令的作用和原理到底是什么呢?

ping 命令是基于 ICMP 协议来工作的,要明白ping, 先了解下ICMP协议吧~

ICMP协议

ICMP全称为互联网控制报文协议(Internet Control Message Protocol)。那么具体是怎么“控制”的呢?

在复杂的网络传输环境里,数据包常常会遇到各种问题导致传输失败。网络层的IP协议是一种无连接的,不可靠的数据包协议,它并不能保证数据一定被送达,因此,我们需要其它的协议,在数据包传发送异常时,能将异常信息传回来,这样才可以调整传输策略,以此来控制整个局面。

ICMP协议格式

ICMP 协议是通过IP协议来发送的,报文封装在 IP 包里面。如下:

ICMP报文格式:

ICMP数据包由8bit的类型字段和8bit的代码字段以及16bit的校验字段再加上选项数据组成。ICMP报文大致分为两类:查询报文类型和差错报文类型。

查询报文类型

查询报文主要应用于ping查询、子网掩码查询、时间戳查询等。ping命令其实就是对ICMP协议查询报文类型的使用。

主机A ping 主机B时,ping命令在主机A构建ICMP请求数据包时,ICMP的类型字段为8(回送请求),当主机B构建ICMP请求数据包时,ICMP的类型字段为0(回送应答)。如果主机A在一定时间内收到了主机B的应答,则表明两台主机之间网络是可达的。

差错报文类型

差错报文主要产生于数据传送发送错误的时候,包括:目标不可达(网络不可达、主机不可达、协议不可达、端口不可达、禁止分片等)、超时、参数问题、重定向(网络重定向、主机重定向等)等。

IP 路由器无法将 IP 数据包发送给目标地址时,会给发送端主机返回一个目标不可达的 ICMP 消息,并在这个消息中显示不可达的具体原因,原因记录在 ICMP 包头的代码字段。

ping命令的工作过程

举一个例子来描述「ping」命令的工作过程:

假设有两个主机,主机A(192.168.0.1)和主机B(192.168.0.2),现在我们要监测主机A和主机B之间网络是否可达,在主机A上输入命令:ping 192.168.0.2

1.发送端主机构建ICMP请求数据包。ping命令会在主机A上构建一个 ICMP的请求数据包。数据包包含多个字段,主要的有类型和序号。类型:在请求数据包中,类型字段为8;序号:主要用于区分连续 ping 的时候发出的多个数据包。

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

2.IP层构建IP数据包。ICMP协议会将这个数据包以及目标IP(192.168.0.2)等信息一同交给IP层协议。IP层协议得到这些信息后,将源地址(即本机IP)、目标地址(即目标IP:192.168.0.2)、再加上一些其它的控制信息,构建成一个IP数据包。

3.加入MAC地址。需要通过ARP映射表找出目标IP(192.168.0.2)所对应的MAC地址。当拿到了目标主机的MAC地址和本机MAC后,一并交给数据链路层,组装成一个数据帧,依据以太网的介质访问规则,将它们传送出出去。

主机B收到数据帧后,进行如下步骤:

1.检查MAC地址,丢弃或接收,提取IP数据包。当主机B收到这个数据帧之后,会首先检查它的目标MAC地址是不是本机,如果是就接收下来处理,接收之后会检查这个数据帧,将数据帧中的IP数据包取出来,交给本机的IP层协议。

2.IP层检查IP。IP层协议检查完之后,再将ICMP数据包取出来交给ICMP协议处理。

3.构建ICMP应答包。应答包的类型字段为 0,序号为接收到的请求数据包中的序号。

4.应答数据包回发给主机A。

在一定的时间内,如果主机A收到了应答包,则说明它与主机B之间网络可达,如果没有收到,则说明网络不可达。除了监测是否可达以外,还可以利用应答时间和发起时间之间的差值,计算出数据包的延迟耗时。

课堂练习

关于ICMP协议与ping命令如何工作我们已经了解了,那对于我们在云上搭建的应用,如何测试弹性云服务器间的通信状况呢?

回忆一下,弹性云服务器数据流量的进出是需要遵守安全组规则的,没有安全组规则的允许,谁都不能访问。

那我们就可以在安全组中添加放通ICMP协议的安全组规则,允许其他云服务器通过 ICMP 协议访问该云服务器,进而实现通过ping命令来测试弹性云服务器间的通信状况了。

安全组规则配置如下:

原文标题:爆文速递| 网络好不好,ping一下就知道

文章出处:【微信公众号:华为开发者社区】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信
    +关注

    关注

    18

    文章

    5706

    浏览量

    134407
  • Ping
    +关注

    关注

    0

    文章

    66

    浏览量

    15806

原文标题:爆文速递| 网络好不好,ping一下就知道

文章出处:【微信号:Huawei_Developer,微信公众号:华为开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ping不存在的地址会咋样?ping和谁都不在一个网段的IP又会如何?

    ping不存在的地址会咋样?ping和谁都不在一个网段的IP又会如何? 当尝试ping一个不存在的地址时,会出现不同的结果,具体取决于网络配置和操作系统。以下是一些可能的情况: 1. 目标主机无响应
    的头像 发表于 02-04 11:21 496次阅读

    交换机物理连接不当导致无法ping通故障排除报告

    2023年12月20日,在对某银行大楼局域网进行维护时,发现某个楼层的所有计算机都无法访问互联网。工程师使用 ping 命令测试该楼层交换机的连通性,发现无法ping通。
    的头像 发表于 01-15 11:17 337次阅读
    交换机物理连接不当导致无法<b class='flag-5'>ping</b>通故障排除报告

    linux常用命令作用

    在Linux系统中,有许多常用的命令,它们可以用于管理文件、目录、进程等。以下是一些常用的命令及它们的作用: ls命令:列出当前目录下的所有文件和子目录。使用ls
    的头像 发表于 11-13 16:45 392次阅读

    cmd常用的九个命令及使用

    && 作用:将多个命令“连接”起来,一步运行多组命令 操作方法:&&是CMD里一项“命令连接”语句,直接放在要连接的命令行中间即
    的头像 发表于 10-26 09:52 597次阅读
    cmd常用的九个<b class='flag-5'>命令</b>及使用

    分享一个图形化PING测试工具

    gping能够以折线图的方式,实时展示 ping 的结果,支持 Windows、Linux 和 macOS 操作系统。并且支持多个目标同时Ping同时展示折线图方便对比。下面扩展一下ICMP及ICMP隧道。
    的头像 发表于 10-19 10:00 373次阅读
    分享一个图形化<b class='flag-5'>PING</b>测试工具

    Ping命令的基本用法

    当谈到网络故障排除工具时,Ping(Packet Internet Groper)是其中最常用和最基本的之一。
    的头像 发表于 10-17 13:58 1035次阅读

    关于rtthread ping的问题

    我现在调试双网口时,用电脑ping板子都能ping通,但是板子主动下发ping只能有一个发出来,就是先初始化哪个网口哪个就能发出来,后初始化的就不能发出ping的icmp报文,但是可以
    发表于 08-20 15:16

    如何使用ping命令测试网络摄像头连通性

    在做智能化弱电项目时,前端摄像头设备安装结束后,我们会对网络摄像头进行调试,调试过程中会遇到前端摄像头没有图像或者图像出来了画面卡顿的现象。我们会采用ping命令来测试网络的连通性和网络承载能力。
    的头像 发表于 08-19 09:48 6006次阅读
    如何使用<b class='flag-5'>ping</b><b class='flag-5'>命令</b>测试网络摄像头连通性

    linux高效运维命令的9个技巧有哪些

    你要是再拿出zabbix等网络监控的数据,这个时候就不太妥当了,zabbix的采集数据间隔你不可能设置成1秒钟1次吧?小编就遇到过这样的问题,结果我通过以下的命令进行了ping监控采集。
    发表于 07-25 10:06 192次阅读
    linux高效运维<b class='flag-5'>命令</b>的9个技巧有哪些

    Windows和Linux为什么可以彼此ping的通呢?

    为什么 VMware 会给我多创建了两个网络呢?Windows 和 Linux 为什么可以彼此 ping 的通呢
    的头像 发表于 07-07 09:39 990次阅读
    Windows和Linux为什么可以彼此<b class='flag-5'>ping</b>的通呢?

    ping通,但无法上网,看网络高手是如何解决?

    所谓的ip冲突,就是由于网络中出现了两个同样的ip地址,使网络很不稳定,有时能ping通,有时ping不通,造成了网络中总有几路设备无法连网,尤其是稍有规模的监控项目或者办公网络中,最容易发生。
    的头像 发表于 06-07 14:57 1.1w次阅读
    能<b class='flag-5'>ping</b>通,但无法上网,看网络高手是如何解决?

    你知道ping命令是如何工作的吗?

    我们用来测试一台机器与另一台机器的网络连通性一般会使用ping命令,那么你知道ping命令是如何工作的吗?ping
    的头像 发表于 05-31 11:40 698次阅读
    你知道<b class='flag-5'>ping</b><b class='flag-5'>命令</b>是如何工作的吗?

    【笔记】ping不通的原因有那些?

    Ping命令无法成功访问目标主机时,可能存在多种原因。以下是一些常见的导致Ping不通的问题,并对每个问题进行了分析和解释:1.请求超时:当Ping
    的头像 发表于 05-30 17:24 1.5w次阅读
    【笔记】<b class='flag-5'>ping</b>不通的原因有那些?

    将ESP8266与FTDI232一起使用,AT+PING不工作的原因?

    你好。我将 ESP8266 与 FTDI232 一起使用。我正在尝试 ping。但它不起作用。AT、AT+GMR、AT+CWLAP、AT+CWMODE、AT+CWJAP 运行良好。当我
    发表于 05-19 10:59

    PING命令还能这么用?

    今天和你聊聊PING命令。 一般来说,网工们通常会用它来直接ping ip地址,来测试网络的连通情况。 类似这种,ping ip地址或网关,然后pi
    的头像 发表于 05-18 16:43 717次阅读
    <b class='flag-5'>PING</b><b class='flag-5'>命令</b>还能这么用?