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

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

相关文章
|
3天前
|
XML JSON 安全
Base64编码原理与在网络传输中的应用
Base64编码原理与在网络传输中的应用
|
2天前
|
XML JSON 安全
Base64编码原理与在网络传输中的应用
Base64编码原理与在网络传输中的应用
|
2天前
|
网络协议 数据安全/隐私保护 网络架构
计算机网络基础概念与网络通信原理
计算机网络基础概念与网络通信原理
|
2天前
|
监控 网络协议 安全
Linux基本指令之网络通信命令
Linux基本指令之网络通信命令
|
3天前
|
网络协议 数据安全/隐私保护 网络架构
计算机网络基础概念与网络通信原理
计算机网络基础概念与网络通信原理
|
4天前
|
监控 安全 网络协议
TELNET命令在网络管理中的常见用法和实战案例
TELNET命令在网络管理中的常见用法和实战案例
|
1月前
|
算法 网络架构
计算机网络: 点对点协议 PPP
计算机网络: 点对点协议 PPP
20 0
|
14天前
|
机器学习/深度学习 网络协议 网络性能优化
[计算机网络]深度学习传输层TCP协议
[计算机网络]深度学习传输层TCP协议
24 1
|
2天前
|
缓存 网络协议 网络性能优化
计算机网络—传输层-tcp、udp协议详解
计算机网络—传输层-tcp、udp协议详解
|
28天前
|
网络协议 C语言 网络架构
计算机网络——数据链路层-点对点协议(组成部分、PPP帧格式、透明传输、差错检测、工作状态)
计算机网络——数据链路层-点对点协议(组成部分、PPP帧格式、透明传输、差错检测、工作状态)
75 7