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

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

相关文章
|
8天前
|
负载均衡 网络协议 算法
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
这网络层就像搭积木一样,上层协议都是基于下层协议搭出来的。不管是ping(用了ICMP协议)还是tcp本质上都是基于网络层IP协议的数据包,而到了物理层,都是二进制01串,都走网卡发出去了。 如果网络环境没发生变化,目的地又一样,那按道理说他们走的网络路径应该是一样的,什么情况下会不同呢? 我们就从路由这个话题聊起吧。
29 4
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
|
9天前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
80 20
|
1天前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法
|
1天前
|
域名解析 网络协议 关系型数据库
【网络原理】——带你认识IP~(长文~实在不知道取啥标题了)
IP协议详解,IP协议管理地址(NAT机制),IP地址分类、组成、特殊IP地址,MAC地址,数据帧格式,DNS域名解析系统
|
1天前
|
存储 JSON 缓存
【网络原理】——HTTP请求头中的属性
HTTP请求头,HOST、Content-Agent、Content-Type、User-Agent、Referer、Cookie。
|
1月前
|
Linux iOS开发 网络架构
如何使用 Ping 命令监测网络丢包情况?
如何使用 Ping 命令监测网络丢包情况?
274 48
|
1天前
|
安全 算法 网络协议
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密
|
1天前
|
XML JSON 网络协议
【网络原理】——拥塞控制,延时/捎带应答,面向字节流,异常情况
拥塞控制,延时应答,捎带应答,面向字节流(粘包问题),异常情况(心跳包)
|
4天前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
27 1
|
1天前
|
网络协议 算法 Java
【JavaEE】——初始网络原理
局域网,广域网,局域网连接方式,交换机,集线器,路由器,网络通信,五元组(源IP,源端口,目的IP,目的端口,协议),协议分层,TCP/IP五层网络协议,封装和分用,交换机和路由器的封装和分用

热门文章

最新文章