简单PING后的复杂旅程(复杂过后的简单)
nanshan 2024-10-18 07:28 11 浏览 0 评论
ping 命令是一种用于测试网络连通性的工具,它可以发送一系列的数据包到指定的 IP 地址,并接收对方的响应。我们将介绍 ping 命令的工作原理,以及它在网络诊断中的作用。
输入 ping IP后,敲回车,然后发生了什么?
ping 命令的执行过程可以分为以下几个步骤:
1. IP 的路由表查询。当我们输入 ping IP 后,操作系统会首先查询本机的路由表,以确定目标 IP 地址所属的网络段和子网掩码。路由表是一种存储了本机与其他网络之间的连接信息的数据结构,它可以由操作系统自动配置,也可以由用户手动添加或修改。
2. 根据路由表的规则,选择合适的目标出口 IP。如果目标 IP 地址与本机在同一个网络段内,那么目标出口 IP 就是目标 IP 本身;如果目标 IP 地址与本机不在同一个网络段内,那么目标出口 IP 就是本机所连接的路由器的 IP 地址。这样,我们就可以确定数据包应该发送到哪个设备。
3. 传输层打包。ping 命令使用的是 ICMP(Internet Control Message Protocol)协议,它是一种用于传递网络控制信息的协议,比如错误报告、请求和回应等。ICMP 协议属于传输层,它会在数据包中添加一个 ICMP 头部,用于存储一些控制信息,比如类型、代码、校验和、标识符、序列号等。ICMP 头部后面是 ICMP 数据部分,它通常包含了发送时间戳和一些填充字节。
4. 链路层打包。在传输层打包完成后,数据包还需要经过链路层的封装,以便在物理介质上进行传输。链路层会在数据包前后分别添加一个 MAC(Media Access Control)头部和尾部,用于存储一些链路控制信息,比如源 MAC 地址、目标 MAC 地址、类型、校验和等。MAC 地址是一种用于唯一标识网络设备的地址,它由厂商分配给每个设备,并且不会改变。
5. ARP 对 MAC 的寻址。在链路层打包完成后,数据包就准备好了发送到目标出口 IP 对应的设备。但是,在发送之前,还需要知道目标出口 IP 对应的 MAC 地址是什么。这就需要使用 ARP(Address Resolution Protocol)协议,它是一种用于解析 IP 地址和 MAC 地址之间对应关系的协议。ARP 协议的工作原理是这样的:首先,发送方会广播一个 ARP 请求报文,询问谁拥有目标出口 IP 地址;然后,拥有该 IP 地址的设备会回复一个 ARP 应答报文,告诉发送方自己的 MAC 地址;最后,发送方会缓存这个对应关系,并将数据包发送给目标 MAC 地址。
6. 通过物理层把数据包发送到路由器。在得到目标 MAC 地址后,数据包就可以通过物理层进行传输了。物理层负责将数据包转换为电信号或光信号,并通过网线或光纤等介质发送给目标设备。如果目标设备是路由器,那么数据包就到达了下一个跳点(hop);如果目标设备是目标主机,那么数据包就到达了最终目的地。
7. 路由器收到数据包,反向解包,再根据路由器的路由表,选择下个目标出口 IP。如果数据包到达了路由器,那么路由器会首先对数据包进行反向解包,即去掉 MAC 头部和尾部,然后检查 IP 头部中的目标 IP 地址。接着,路由器会查询自己的路由表,以确定下一个跳点的 IP 地址。路由器的路由表是一种存储了路由器与其他网络之间的连接信息的数据结构,它可以由路由协议自动配置,也可以由用户手动添加或修改。如果路由器找到了匹配的路由表项,那么它会将数据包转发给下一个跳点;如果没有找到匹配的路由表项,那么它会丢弃数据包,并发送一个 ICMP 目的不可达报文给发送方。
8. 目标主机收到数据包,反向解包,返回响应。如果数据包到达了目标主机,那么目标主机也会对数据包进行反向解包,即去掉 MAC 头部和尾部,然后检查 IP 头部中的目标 IP 地址是否与自己一致。如果一致,那么目标主机会继续解析 ICMP 头部和数据部分,并根据 ICMP 类型和代码判断是不是一个 ping 请求。如果是一个 ping 请求,那么目标主机会生成一个 ping 响应,并将 ICMP 类型改为 0(回显应答),并将 ICMP 数据部分原样返回给发送方。然后,目标主机会重新打包数据包,并发送给发送方。
9. 发送方收到响应,计算往返时间。当发送方收到目标主机的响应后,它会对响应进行反向解包,并根据 ICMP 类型和代码判断是不是一个 ping 响应。如果是一个 ping 响应,那么发送方会从 ICMP 数据部分中提取出发送时间戳,并与当前时间戳相减,得到往返时间(Round-Trip Time, RTT)。RTT 是一种衡量网络延迟的指标,它表示从发送方发送数据包到收到响应所经历的时间。RTT 越小,说明网络越快;RTT 越大,说明网络越慢。
以上就是 ping 命令的工作原理和执行过程的简要介绍。通过 ping 命令,我们可以测试网络设备之间的连通性和可达性,以及网络延迟和丢包率等性能指标。
相关推荐
- 服务器数据恢复—Raid5数据灾难不用愁,Raid5数据恢复原理了解下
-
Raid5数据恢复算法原理:分布式奇偶校验的独立磁盘结构(被称之为raid5)的数据恢复有一个“奇偶校验”的概念。可以简单的理解为二进制运算中的“异或运算”,通常使用的标识是xor。运算规则:若二者值...
- 服务器数据恢复—多次异常断电导致服务器raid不可用的数据恢复
-
服务器数据恢复环境&故障:由于机房多次断电导致一台服务器中raid阵列信息丢失。该阵列中存放的是文档,上层安装的是Windowsserver操作系统,没有配置ups。因为服务器异常断电重启后,rai...
- 服务器数据恢复-V7000存储更换磁盘数据同步失败的数据恢复案例
-
服务器数据恢复环境:P740+AIX+Sybase+V7000存储,存储阵列柜上共12块SAS机械硬盘(其中一块为热备盘)。服务器故障:存储阵列柜中有磁盘出现故障,工作人员发现后更换磁盘,新更换的磁盘...
- 「服务器数据恢复」重装系统导致XFS文件系统分区丢失的数据恢复
-
服务器数据恢复环境:DellPowerVault系列磁盘柜;用RAID卡创建的一组RAID5;分配一个LUN。服务器故障:在Linux系统层面对LUN进行分区,划分sdc1和sdc2两个分区。将sd...
- 服务器数据恢复-ESXi虚拟机被误删的数据恢复案例
-
服务器数据恢复环境:一台服务器安装的ESXi虚拟化系统,该虚拟化系统连接了多个LUN,其中一个LUN上运行了数台虚拟机,虚拟机安装WindowsServer操作系统。服务器故障&分析:管理员因误操作...
- 「服务器数据恢复」Raid5阵列两块硬盘亮黄灯掉线的数据恢复案例
-
服务器数据恢复环境:HPStorageWorks某型号存储;虚拟化平台为vmwareexsi;10块磁盘组成raid5(有1块热备盘)。服务器故障:raid5阵列中两块硬盘指示灯变黄掉线,无法读取...
- 服务器数据恢复—基于oracle数据库的SAP数据恢复案例
-
服务器存储数据恢复环境:某品牌服务器存储中有一组由6块SAS硬盘组建的RAID5阵列,其中有1块硬盘作为热备盘使用。上层划分若干lun,存放Oracle数据库数据。服务器存储故障&分析:该RAID5阵...
- 「服务器虚拟化数据恢复」Xen Server环境下数据库数据恢复案例
-
服务器虚拟化数据恢复环境:Dell某型号服务器;数块STAT硬盘通过raid卡组建的RAID10;XenServer服务器虚拟化系统;故障虚拟机操作系统:WindowsServer,部署Web服务...
- 服务器数据恢复—RAID故障导致oracle无法启动的数据恢复案例
-
服务器数据恢复环境:某品牌服务器中有一组由4块SAS磁盘做的RAID5磁盘阵列。该服务器操作系统为windowsserver,运行了一个单节点Oracle,数据存储为文件系统,无归档。该oracle...
- 服务器数据恢复—服务器磁盘阵列常见故障表现&解决方案
-
RAID(磁盘阵列)是一种将多块物理硬盘整合成一个虚拟存储的技术,raid模块相当于一个存储管理的中间层,上层接收并执行操作系统及文件系统的数据读写指令,下层管理数据在各个物理硬盘上的存储及读写。相对...
- 「服务器数据恢复」IBM某型号服务器RAID5磁盘阵列数据恢复案例
-
服务器数据恢复环境:IBM某型号服务器;5块SAS硬盘组成RAID5磁盘阵列;存储划分为1个LUN和3个分区:第一个分区存放windowsserver系统,第二个分区存放SQLServer数据库,...
- 服务器数据恢复—Zfs文件系统下误删除文件如何恢复数据?
-
服务器故障:一台zfs文件系统服务器,管理员误操作删除服务器上的数据。服务器数据恢复过程:1、将故障服务器所有磁盘编号后取出,硬件工程师检测所有硬盘后没有发现有磁盘存在硬件故障。以只读方式将全部磁盘做...
- 服务器数据恢复—Linux+raid5服务器数据恢复案例
-
服务器数据恢复环境:某品牌linux操作系统服务器,服务器中有4块SAS接口硬盘组建一组raid5阵列。服务器中存放的数据有数据库、办公文档、代码文件等。服务器故障&检测:服务器在运行过程中突然瘫痪,...
- 服务器数据恢复—Sql Server数据库数据恢复案例
-
服务器数据恢复环境:一台安装windowsserver操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。在windows服务器内装有SqlServer数据库。存储空间LU...
- 服务器数据恢复—阿里云ECS网站服务器数据恢复案例
-
云服务器数据恢复环境:阿里云ECS网站服务器,linux操作系统+mysql数据库。云服务器故障:在执行数据库版本更新测试时,在生产库误执行了本来应该在测试库执行的sql脚本,导致生产库部分表被tru...
你 发表评论:
欢迎- 一周热门
-
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
WindowsServer2022|配置NTP服务器的命令
-
Ubuntu系统Daphne + Nginx + supervisor部署Django项目
-
WIN11 安装配置 linux 子系统 Ubuntu 图形界面 桌面系统
-
解决Linux终端中“-bash: nano: command not found”问题
-
NBA 2K25虚拟内存不足/爆内存/内存占用100% 一文速解
-
Linux 中的文件描述符是什么?(linux 打开文件表 文件描述符)
-
K3s禁用Service Load Balancer,解决获取浏览器IP不正确问题
-
- 最近发表
-
- 服务器数据恢复—Raid5数据灾难不用愁,Raid5数据恢复原理了解下
- 服务器数据恢复—多次异常断电导致服务器raid不可用的数据恢复
- 服务器数据恢复-V7000存储更换磁盘数据同步失败的数据恢复案例
- 「服务器数据恢复」重装系统导致XFS文件系统分区丢失的数据恢复
- 服务器数据恢复-ESXi虚拟机被误删的数据恢复案例
- 「服务器数据恢复」Raid5阵列两块硬盘亮黄灯掉线的数据恢复案例
- 服务器数据恢复—基于oracle数据库的SAP数据恢复案例
- 「服务器虚拟化数据恢复」Xen Server环境下数据库数据恢复案例
- 服务器数据恢复—RAID故障导致oracle无法启动的数据恢复案例
- 服务器数据恢复—服务器磁盘阵列常见故障表现&解决方案
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)