全面掌握ping命令(一) ping命令的基本原理

简介:

原文发表于《网络运维与管理》2013年第21期 

 

Ping命令是在日常网络管理维护工作中最常用到的命令之一,对于这个熟悉的命令,我们是否已经掌握了它的方方面面呢?本文就来全面深入地介绍一下ping命令,只有透彻地掌握了它的各个知识点,才能更好地利用它来为我们服务。

 

1. ping命令的基本原理

Ping命令利用ICMP协议进行工作,ICMP是Internet控制消息协议,用于在主机和路由器之间传递控制消息。Ping命令利用了ICMP两种类型的控制消息:“echo request”(回显请求)、“echo reply”(回显应答)。

比如在主机A上执行ping命令,目标主机是B。在A主机上就会发送“echo request”(回显请求)控制消息,主机B正确接收后即发回“echo reply”(回显应答)控制消息,从而判断出双方能否正常通信。其工作原理如图1所示。

image

如果在A主机上能够ping通B主机,那么主机A上显示的信息就是从主机B上返回来的“回显应答”。如果不能ping通,主机A上显示的信息则是由系统自身所产生的错误提示。

在Windows系统中,默认情况下,每次执行ping命令会发送4个“回显请求”消息,每个消息的数据包大小为32字节,如果一切正常,应能收到4个同样为32字节大小的“回显应答”消息。其格式如下:

Reply from *.*.*.*(IP):bytes=32 time<1ms TTL=128

在这些“回显应答”中包含了丰富的信息:

通过回显应答中的“time”时间,可以大致的推断出网速情况,数据传递经过的时间越长,网速越慢。

回显应答中的“TTL”,即数据包的生存周期。每个系统对其所发送的数据包都要赋一个TTL的初始值,默认情况下,Windows XP系统为128,Win7系统为64,Linux系统为64或255(当然,系统的TTL值都是可以修改的)。数据包每经过一次路由,TTL值就要减1,所以通过TTL值,我们既可以大概地推算出对方主机所用的操作系统,又可以推断出在数据包在传送过程中经过了多少次路由。比如,在执行“ping www.baidu.com”命令时,回显应答中显示的TTL值为52,则首先可以大概推断出百度使用的是Linux系统,其次可以得知数据在传送过程中经过了12次路由。

这点可以通过tracert命令进行验证,执行“tracert www.baidu.com”命令,发现数据包正是经过了12次路由。tracert也是一个利用ICMP协议工作的命令,它的原理非常巧妙:它向指定的目的主机发送多次回显请求消息,并把封装该消息的数据包的TTL值从1开始递增。即tracert命令第一次发送出去的数据包的TTL为1,这些数据包在经过第一个路由器时,TTL值便被减为了0,这台路由器就要将数据包丢弃,并同时向源主机发回一个回显应答消息,通过这种方式就获得了数据包所经过的第一台路由器的信息。通过这种递进的查询过程,查询端就可以追踪到达目的主机所经过的所有路由器的情况。

另外,大家可能会发现,每次执行tracert命令所查询到路径都不大一样,这是完全正常的,数据包每次传送时采用不同的路径,这正是Internet所采用的分组交换方式的特点。


本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1391983

相关文章
|
9天前
|
运维 监控 Linux
别再只会使用简单的 ping 命令了,Linux 中这些高级 ping 命令可以提高工作效率!
在 Linux 系统中,ping 命令不仅用于检测网络连通性和延迟,还拥有多种高级选项和技巧,如定制数据包大小、获取详细统计信息、持续 ping、指定源地址和多目标 ping。本文详细介绍这些高级命令及其在性能测试、故障排查和网络监控中的实际应用,帮助你提升网络管理效率。
48 3
|
10天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
40 3
|
1月前
|
Python 机器学习/深度学习 人工智能
手把手教你从零开始构建并训练你的第一个强化学习智能体:深入浅出Agent项目实战,带你体验编程与AI结合的乐趣
【10月更文挑战第1天】本文通过构建一个简单的强化学习环境,演示了如何创建和训练智能体以完成特定任务。我们使用Python、OpenAI Gym和PyTorch搭建了一个基础的智能体,使其学会在CartPole-v1环境中保持杆子不倒。文中详细介绍了环境设置、神经网络构建及训练过程。此实战案例有助于理解智能体的工作原理及基本训练方法,为更复杂应用奠定基础。首先需安装必要库: ```bash pip install gym torch ``` 接着定义环境并与之交互,实现智能体的训练。通过多个回合的试错学习,智能体逐步优化其策略。这一过程虽从基础做起,但为后续研究提供了良好起点。
136 4
手把手教你从零开始构建并训练你的第一个强化学习智能体:深入浅出Agent项目实战,带你体验编程与AI结合的乐趣
|
1月前
|
弹性计算 安全 Linux
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法
|
3月前
|
监控 网络协议 JavaScript
tcping和ping命令
【8月更文挑战第2天】`tcping` 是一款基于 TCP 协议的网络测试工具,不同于传统的 `ping` 命令使用 ICMP 协议,`tcping` 通过尝试与目标主机的特定端口建立 TCP 连接来检查网络连通性和端口状态。这使其在一些禁用了 ICMP 的网络环境中特别有用。`
115 3
tcping和ping命令
|
3月前
|
网络协议 网络安全 网络架构
ping命令详解
【8月更文挑战第14天】 ping命令详解
160 3
|
3月前
|
域名解析 监控 网络协议
Ping命令的替代工具有哪些?
【8月更文挑战第14天】Ping命令的替代工具有哪些?
190 2
|
3月前
|
网络协议 测试技术 网络架构
Ping命令的用途?
【8月更文挑战第14天】Ping命令的用途?
91 2
|
3月前
|
网络协议 Unix Linux
Ping命令
【8月更文挑战第10天】Ping命令
73 3
|
3月前
|
网络协议 Linux 测试技术
基于PING命令的主机探测
基于PING命令的主机探测
99 3

热门文章

最新文章

下一篇
无影云桌面