ping命令用于测试与另一个网络设备的连接,并测量数据包往返的时间。在命令行中输入以下命令可以执行ping操作:
ping [目标地址]
例如,要192.168.11.112,可以输入:
ping 192.168.11.112
图片
此时返回的数据有个ttl=64,下面我们来了解下ttl值的含义及作用。
TTL作用及原理
TTL(Time to Live)是指数据包在网络中允许传输的最大跳数。它的作用是防止数据包在网络中无限循环,同时也可以用来测量数据包从源到目的地的传输时间。
TTL的原理是每当一个数据包经过一个路由器时,TTL的值会减1。当TTL的值减到0时,路由器会丢弃该数据包并发送一个“TTL超时”(Time Exceeded)的ICMP消息给数据包的源地址。这样可以确保数据包不会无限循环在网络中,同时也可以帮助诊断网络故障。
通过TTL的值,可以测量数据包从源到目的地经过的路由器数量,从而判断网络的延迟和稳定性。每经过一个路由器,TTL值就会减少1。因此,通过Ping命令返回的TTL值,我们可以大致判断出目标主机与我们之间的路由器数量或跳数。例如,如果Ping命令返回的TTL值为64,那么可以推断出数据包在传输过程中经过了初始TTL值(通常为系统缺省值,如64、128、255等)-64个路由器或其他工作在网络的设备。
TTL值推测目标目标主机操作系统
不同的操作系统对于传出的IP数据包的TTL初始值有不同的设置。通常Windows操作系统的初始TTL值为128,而Linux和Unix系统的初始TTL值为64。
根据这一特点,我们可以通过观察接收到的ICMP回显应答(ping)数据包的TTL值来推测目标主机的操作系统类型。当我们发送一个ICMP回显请求到目标主机时,目标主机会返回一个ICMP回显应答,而这个应答中的TTL值就可以帮助我们推测目标主机的操作系统类型。
TTL值为64的话,我们可以推测目标主机是运行类Unix系统(如Linux),而TTL值为128的话,则可以推测目标主机是运行Windows系统。当然,这只是一个推测,因为TTL值也可能被网络设备修改,或者目标主机可能已经修改了默认的TTL值。通过观察ICMP回显应答数据包的TTL值,我们可以推测目标主机的操作系统类型,但需要注意这只是一种推测方法,可能并不十分准确。
操作系统 | 默认TTL值 |
Windows | 128 |
Linux/Unix | 64 |
macOS | 64 |
iOS | 64 |
Android | 64 |
Windows要修改系统默认的TTL值,可以通过修改注册表来实现:
- 打开注册表编辑器:按下 Win + R 组合键打开运行窗口,输入 regedit 并按下回车键。
- 转到注册表路径:依次展开以下路径
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
- 创建或修改 DWORD 值:在 Parameters 下右键,选择新建 -> DWORD (32 位) 值,命名为 DefaultTTL,然后双击它,设置数值数据为你想要的 TTL 值(以十进制表示)。
- 重启计算机:修改完注册表后,需要重启计算机才能使修改生效。