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

    文章

    5968

    浏览量

    135829
  • Ping
    +关注

    关注

    0

    文章

    69

    浏览量

    15950

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

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

收藏 人收藏

    评论

    相关推荐

    服务器ping不通但是http能请求成功是什么原因

    平时,我们想要知道,自己的机器到目的机器之间,网络通不通,一般会执行ping命令
    的头像 发表于 10-23 09:23 319次阅读
    服务器<b class='flag-5'>ping</b>不通但是http能请求成功是什么原因

    局域网ping不通的原因有哪些

    使用 ping 命令测试两台计算机之间的连接时,如果 ping 不通,可能存在多种原因。以下是一些可能导致局域网 ping 不通的原因: 1. 物理连接问题 物理连接问题通常是最容易发
    的头像 发表于 10-14 15:03 2574次阅读

    新加坡服务器的速度测试方法有哪些

    测试新加坡服务器的速度和性能是确保服务器能够满足业务需求的关键步骤。以下是一些常用的方法和工具: Ping测试: Ping命令是一种基本的网络诊断工具,用于测试与服务器的连接延迟和丢包率。在
    的头像 发表于 10-14 14:55 130次阅读

    常见的shell命令之网络相关命令

    netmask 255.255.255.0elf@ubuntu:~$ sudo ifconfig ens33 hw ether 22:22:22:22:22:223、ping网络通断检查命令命令
    发表于 08-20 09:50

    恒讯科技分析:如何测试海外静态IP服务的稳定性和速度?

    测试海外静态IP服务的稳定性和速度可以通过以下步骤进行: 1、选择测试工具:使用网络测试工具,如ping命令、traceroute(或 racert)、网络速度测试网站(例如
    的头像 发表于 08-14 14:58 289次阅读

    使用Python进行Ping测试

    在网络工程中,Ping测试是一种常用的网络诊断工具,用于检查网络连接的可达性和响应时间。Ping测试通过向目标主机发送ICMP(Internet Control Message Protocol
    的头像 发表于 08-12 17:56 436次阅读
    使用Python进行<b class='flag-5'>Ping</b>测试

    Ping测试在不同网段通信中的准确性

    不同网段之间的通信顺畅与否能影响网络的整体性能和业务的正常运行。Ping 测试作为一种常用的网络诊断工具,被广泛用于检测网络连接的可达性。然而,在没有三层交换路由功能的网络中,跨网段的 Ping 测试结果的不稳定给网络故障排查和性能评估带来了一定的挑战。
    的头像 发表于 07-31 16:15 253次阅读

    如何使用DTU Ping功能?

    DTUToolInstaller_V1.1.36 以后的版本支持Ping功能 配置工具链接DTU之后,首先确认DTU是否拨号成功、获得IP地址。之后拨号成功ping服务器地址才意义。有肯能服务器是禁ping的,也可以
    发表于 07-25 06:13

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-uboot常用命令-网络命令

    命令主要用于测试网络通信状态,设置好开发板IP和PC机IP之后,使用网线连接好开发板和PC机,使用ping命令: => ping 192.168.0.102 Using FEC
    发表于 07-19 16:24

    lscpu命令使用注意事项

    请注意,lscpu命令在不同的操作系统上可能会有一些差异,某些选项可能不可用。可以通过man lscpu命令或lscpu --help命令查看该命令的帮助文档和更多选项。
    发表于 03-14 11:39 750次阅读

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

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

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

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

    bootm命令的执行流程

    Bootm命令用来从memory启动内核,bootm命令的执行流程如下图所示。 在串口终端输入bootm命令后,执行do_bootm函数来完成相应的功能。Do_bootm函数首先
    的头像 发表于 12-04 17:33 1095次阅读
    bootm<b class='flag-5'>命令</b>的执行流程

    uboot命令的执行过程是什么

    U-boot是通过执行u-boot提供的命令来加载Linux内核的,其中 命令bootm的功能 即为从memory启动Linux内核映像文件。 在讲解bootm加载内核之前,先来看看u-boot中
    的头像 发表于 12-04 17:31 754次阅读

    Linux内核中Uboot命令处理

    完成。U-Boot在include/command.h中定义了一个非常重要的cmd_tbl_s结构体,它在命令的实现方面起着至关重要的作用。 struct cmd_tbl_s { char *name
    的头像 发表于 12-04 17:23 448次阅读