计算机网络——ping命令过程的详解、原理

简介: 计算机网络——ping命令过程的详解、原理

一、ping命令是用来做什么的?

ping命令是测试网络是否畅通的工具。用于测试网络连接的程序。

ping发送一个ICMP;回声请求消息给目的地并报告是否收到所有希望的icmp echo(ICMP回声应答)。

1、ICMP是什么呢?

ICMP协议(internet control message protocol)因特网控制消息协议的缩写。它是tcp、ip协议的一个子协议,用于在ip主机、路由器之间传递控制消息。

ping命令通常用来作为网络可用性的检查。ping命令可以对一个网络地址发送测试数据包。看该网络地址是否有响应并统计响应时间,以此来测试网络。

2、ping命令和icmp的关系

ping命令发送数据使用的是ICMP协议。执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

二、ping命令的使用

ping + 目标主机:用来测试本机与目标主机之间是否联通、联通速度如何、稳定性如何。

ping [参数选项] [目标主机]

参数选项:

-c 发包的次数 count

[-w deadline] 多少时间内必须完成 期限

[-W timeout] 超过多少时间就停止  超时

[-i interval] 包和包之间的时间间隔 间隔

ping 同一网段里面的其他IP地址:

[root@nginx-kafka01 python]# ping 192.168.2.43
PING 192.168.2.43 (192.168.2.43) 56(84) bytes of data.
64 bytes from 192.168.2.43: icmp_seq=1 ttl=64 time=6.82 ms
64 bytes from 192.168.2.43: icmp_seq=2 ttl=64 time=3.13 ms
64 bytes from 192.168.2.43: icmp_seq=3 ttl=64 time=10.4 ms
64 bytes from 192.168.2.43: icmp_seq=4 ttl=64 time=4.58 ms
64 bytes from 192.168.2.43: icmp_seq=5 ttl=64 time=3.95 ms
^C
--- 192.168.2.43 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4010ms
rtt min/avg/max/mdev = 3.132/5.797/10.498/2.651 ms

ping外网:测试能不能进行上网:

[root@nginx-kafka01 python]# ping www.bai.com
PING parking.nodes.gz.com (121.201.112.137) 56(84) bytes of data.
64 bytes from 121.201.112.137 (121.201.112.137): icmp_seq=1 ttl=51 time=19.5 ms
64 bytes from 121.201.112.137 (121.201.112.137): icmp_seq=2 ttl=51 time=17.9 ms
64 bytes from 121.201.112.137 (121.201.112.137): icmp_seq=3 ttl=51 time=22.1 ms
64 bytes from 121.201.112.137 (121.201.112.137): icmp_seq=4 ttl=51 time=19.1 ms
64 bytes from 121.201.112.137 (121.201.112.137): icmp_seq=5 ttl=51 time=18.8 ms
64 bytes from 121.201.112.137 (121.201.112.137): icmp_seq=6 ttl=51 time=18.6 ms
64 bytes from 121.201.112.137 (121.201.112.137): icmp_seq=7 ttl=51 time=17.6 ms
64 bytes from 121.201.112.137 (121.201.112.137): icmp_seq=8 ttl=51 time=19.0 ms
64 bytes from 121.201.112.137 (121.201.112.137): icmp_seq=9 ttl=51 time=19.4 ms

三、ping过程的原理

ping过程的详解

       1.如果是域名,先进行域名解析到具体的一个IP

       2.将要ping的IP地址和自己的子网掩码进行与运算,得出相应的网段号

       3.然后到自己的电脑里的路由表里查询是否有到这个网段的路由,如果没有就走默认路由,会有下一跳地址

       4.查看本机arp缓存表里面是否有下一跳地址的mac地址,如果有就直接封装,如果没有就发arp广播获得下一跳地址的mac地址

       5.得到了mac地址后,封装好数据,走物理层(网线)送出数据

举例说明:本机IP:192.168.0.237/24,ping 192.168.90.1的过程:

       1.拿目的IP192.168.90.1和自己的子网掩码进行与运算,得到目的网段192.168.90.0

       2.查看本机的路由表,是否有到达这个网段的路由,如果没有就走默认路由,下一跳地址为192.168.0.1

       3.查看本机arp缓存表里是否有下一跳地址192.168.0.1的Mac地址,如果有就直接封装帧,如果没有,就发arp广播获得192.168.0.1的Mac地址

       4.得到了Mac地址后,封装好数据,走物理层送出数据。

1、ping的是相同网段

从封装的角度讲:

使用A机器去 ping B机器

A:192.168.10.1

B:192.168.10.2

1、应用层--》数据,随机产生数据 假设是32个字节的数据

2、传输层---没有涉及端口号

3、网络层 ping --》icmp协议 --中requests请求包和reply包

icmp协议封装的头部信息中没有没有源地址和目的地址

4、ip协议:ip头部中有,封装成帧,里面有源ip(10.1)和目的ip(10.2)

                                                                         10.1             10.2

5、帧的封装:源mac 和目的mac

自己 发arp广播得到192.168.10.2的mac地址

6、比特流

2、使用 Cisco实验拓扑图来演示这个原理:

步骤是:

1、画拓扑图

2、配置ip地址

3、测试

我们先在这个实验中添加两台pc机,和一个交换机,并配置好ip地址:

先配置pc1和pc5的ip地址分别为:192.168.10.1、192.168.10.2。

配置好ip地址并写好子网掩码、网关。

pc5的配置也是如同pc1一样,网关和子网掩码一样(因为是同一网段的)。

配置好了之后进行测试:使用pc1进行ping测试,ping pc机5:

以下是ping成功的显示结果:两个ip之间能够互相ping,都能ping通。

PC>ping 192.168.10.2
Pinging 192.168.10.2 with 32 bytes of data:
Reply from 192.168.10.2: bytes=32 time=8ms TTL=255
Reply from 192.168.10.2: bytes=32 time=15ms TTL=255
Reply from 192.168.10.2: bytes=32 time=15ms TTL=255
Reply from 192.168.10.2: bytes=32 time=15ms TTL=255
Ping statistics for 192.168.10.2:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 8ms, Maximum = 15ms, Average = 13ms
PC>ping 192.168.10.1
Pinging 192.168.10.1 with 32 bytes of data:
Reply from 192.168.10.1: bytes=32 time=18ms TTL=128
Reply from 192.168.10.1: bytes=32 time=15ms TTL=128
Reply from 192.168.10.1: bytes=32 time=16ms TTL=128
Reply from 192.168.10.1: bytes=32 time=13ms TTL=128
Ping statistics for 192.168.10.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 13ms, Maximum = 18ms, Average = 15ms

3、ping不同网段之间的ip

A:192.168.20.1

B:192.168.30.1

从封装的角度讲:

1、封装icmp数据和ip包数据

2、先拿目的ip和自己的子网掩码进行与运算得到目标网段是192.168.30.0,然后去查询自己路由表

直连路由:192.168.20.0 ens33

默认路由:192.168.20.254

ip包的封装:

源192.168.20.1 目的ip:192.168.30.1

3、走默认路由,下一跳地址是192.168.20.254

帧:源mac:自己 目的mac:192.168.20.254的mac地址

4、发arp广播得到20.254的mac地址(此时的mac地址是网关)

5、封装帧

6、比特流

通过交换机发送数据,因为交换机只看mac地址。

ip地址在整个互联网里使用,mac地址在局域网里使用。

先到交换机再到路由器。交换机查看mac地址表。

4、使用 Cisco实验拓扑图验证这个原理

1、首先先准备好两台路由器,四台pc机(可以根据自己需要自行选择),两台交换机。画好拓扑图。

2、 先给pc机配置好ip地址、网关:配置流程如上面的一样。

记得一定要配置好网关。如果没有配置pc机,当需要路由去ping跨网段的ip地址是ping的不同的,因为没有网关,ip地址不知道要把数据包发送到哪里,在pc机里面添加网关,就是做配置,就是配置一条默认路由。当路由器在路由表中找不到目标网络的路由条目时,路由器把请求转发到默认路由接口。

就是比如上图中192.168.10.1去ping192.168.10.2,如果192.168.10.2没有配置网关,使用192.168.10.1去ping192.168.10.2能够ping通,但是不能上网,这是因为PC与RTA直连,ping命令使用的的ICMP报文这是属于IP层的报文不会使用到路由表查询,使用ARP寻路到达目标。

192.168.10.2中没有配置网关:

使用192.168.10.2去ping 192.168.10.1能ping通:

而使用192.168.10.2去ping路由器上的Fa0/1口的192.168.30.2接口上的ip地址是不能ping通的,原理是如上图所说的。

继续进入主题:

然后给router 0的Fa0/0口配置ip地址为:192.168.30.1,Fa0/1口为:192.168.20.3

router 1的ip地址设置为:Fa0/0口为:192.168.10.3,Fa0/1口为:192.168.30.2。

配置流程为:

先扩展一下:路由器的作用是实现扩网段之间进行通信的。

然后可以从拓扑图中看出,我们的router 0直连路由的是20网段和30网段的,而router 1直连路由的是30网段和10网段的。

首先我们先测试192.168.20.2pc机去ping192.168.30.2路由器。

首先跨网段是ping不通的,所以我们需要添加一个静态路由。

路由的优先级是:

① 直连路由

② 静态路由

③动态路由

④ 默认路由

静态路由的添加顺序是:先添加你要到哪个网段去,然后填写子网掩码,最后再填写下一跳路由口的ip地址。

第一个network代表的是要去的目的网段ip:20网段的。

network:192.168.20.0

第二个mask是子网掩码。

mask:255.255.255.0

第三个next hop是指下一跳路由器的ip地址:192.168.30.1。

Next Hop:192.168.30.1

添加成功之后,就可以ping通:192.168.20.2pc  ping   192.168.30.2 pc机

然后我们再试试用192.168.10.2pc1机去ping 192.168.20.2pc2机,这个时候还需要对路由器0router0进行静态路由配置:

network:192.168.10.0

Mask:255.255.255.0

Next Hop:192.168.30.2

大体流程就是这样的,这个计算机网络原理是比较抽象,所以还得多加练习,需要多做实验。

相关文章
|
2月前
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic,深度学习探索者。深耕TensorFlow与PyTorch,分享框架对比、性能优化与实战经验,助力技术进阶。
|
4月前
|
负载均衡 网络协议 Linux
网络ping不通到底有多少原因?一文搞明白!
网络ping不通是网络中出现频率最高的故障之一,同时也是最让人抓狂的故障,谁没遇到过?今天就和你细说下ping不通的原因,看看能不能和你遇到的情况对上号。
1668 0
|
5月前
|
JSON 监控 API
在线网络PING接口检测服务器连通状态免费API教程
接口盒子提供免费PING检测API,可测试域名或IP的连通性与响应速度,支持指定地域节点,适用于服务器运维和网络监控。
|
2月前
|
监控 负载均衡 安全
WebSocket网络编程深度实践:从协议原理到生产级应用
蒋星熠Jaxonic,技术宇宙中的星际旅人,以代码为舟、算法为帆,探索实时通信的无限可能。本文深入解析WebSocket协议原理、工程实践与架构设计,涵盖握手机制、心跳保活、集群部署、安全防护等核心内容,结合代码示例与架构图,助你构建稳定高效的实时应用,在二进制星河中谱写极客诗篇。
WebSocket网络编程深度实践:从协议原理到生产级应用
|
8月前
|
机器学习/深度学习 存储 算法
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
反向传播算法虽是深度学习基石,但面临内存消耗大和并行扩展受限的问题。近期,牛津大学等机构提出NoProp方法,通过扩散模型概念,将训练重塑为分层去噪任务,无需全局前向或反向传播。NoProp包含三种变体(DT、CT、FM),具备低内存占用与高效训练优势,在CIFAR-10等数据集上达到与传统方法相当的性能。其层间解耦特性支持分布式并行训练,为无梯度深度学习提供了新方向。
317 1
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
|
3月前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
406 11
|
3月前
|
Shell 开发工具 git
使用代理访问网络各项命令总结
工作中常需设置代理,容易导致环境混乱。本文总结了 SourceTree 无法拉取代码的问题,排查了环境变量、Git 全局配置及系统代理设置,最终通过清除 Git 代理配置解决。内容涵盖排查步骤、命令整理及脚本处理,帮助快速定位并解决代理相关网络问题。
196 3
|
3月前
|
机器学习/深度学习 算法 搜索推荐
从零开始构建图注意力网络:GAT算法原理与数值实现详解
本文详细解析了图注意力网络(GAT)的算法原理和实现过程。GAT通过引入注意力机制解决了图卷积网络(GCN)中所有邻居节点贡献相等的局限性,让模型能够自动学习不同邻居的重要性权重。
504 0
从零开始构建图注意力网络:GAT算法原理与数值实现详解
|
3月前
|
安全 测试技术 虚拟化
VMware-三种网络模式原理
本文介绍了虚拟机三种常见网络模式(桥接模式、NAT模式、仅主机模式)的工作原理与适用场景。桥接模式让虚拟机如同独立设备接入局域网;NAT模式共享主机IP,适合大多数WiFi环境;仅主机模式则构建封闭的内部网络,适用于测试环境。内容简明易懂,便于理解不同模式的优缺点与应用场景。
418 0