计算机网络——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

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

相关文章
|
4天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
17 2
|
25天前
|
网络协议 安全 5G
网络与通信原理
【10月更文挑战第14天】网络与通信原理涉及众多方面的知识,从信号处理到网络协议,从有线通信到无线通信,从差错控制到通信安全等。深入理解这些原理对于设计、构建和维护各种通信系统至关重要。随着技术的不断发展,网络与通信原理也在不断演进和完善,为我们的生活和工作带来了更多的便利和创新。
62 3
|
16天前
|
域名解析 网络协议 安全
|
21天前
|
网络协议 安全 网络安全
|
22天前
|
运维 监控 网络协议
|
4天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
21 3
|
6天前
|
网络协议 Linux
使用nmcli命令设置IP地址并排查网络故障
nmcli 是一个功能强大的网络管理工具,通过它可以轻松配置IP地址、网关和DNS,同时也能快速排查网络故障。通过正确使用nmcli命令,可以确保网络配置的准确性和稳定性,提高系统管理的效率。希望本文提供的详细步骤和示例能够帮助您更好地掌握nmcli的使用方法,并有效解决实际工作中的网络问题。
13 2
|
7天前
|
运维 物联网 网络虚拟化
网络功能虚拟化(NFV):定义、原理及应用前景
网络功能虚拟化(NFV):定义、原理及应用前景
23 3
|
7天前
|
网络虚拟化 数据安全/隐私保护 数据中心
对比了思科和华为网络设备的基本配置、接口配置、VLAN配置、路由配置、访问控制列表配置及其他重要命令
本文对比了思科和华为网络设备的基本配置、接口配置、VLAN配置、路由配置、访问控制列表配置及其他重要命令,帮助网络工程师更好地理解和使用这两个品牌的产品。通过详细对比,展示了两者的相似之处和差异,强调了持续学习的重要性。
20 2
|
11天前
|
缓存 弹性计算 运维
网络管理利器:掌握常用的CMD命令
本文介绍了常用的网络CMD命令及其用法,包括`ping`、`ipconfig`、`tracert`、`nslookup`、`netstat`、`route`、`telnet`、`ftp`、`netsh`、`arp`、`nbtstat`、`hostname`、`systeminfo`、`ipconfig /flushdns`和`tasklist`。这些命令在日常的网络管理和故障排查中非常实用,帮助你轻松进行网络诊断、配置和监控。