如何使用 TTL 值和 Ping 命令识别操作系统

您知道我们可以通过简单地 ping 来识别远程系统上正在运行的操作系统吗? 是的! 在这个简短的指南中,我们将看到如何确定操作系统 TTL 价值和 命令。 此方法适用于任何具有 Ping 命令行实用程序的操作系统。

存在大量命令、应用程序和实用程序来找出远程系统的操作系统。 但是,使用 TTL 查找操作系统类型非常容易!

您可以通过查看来自 ping 命令。 您不需要任何额外的应用程序来检测远程系统的操作系统。

TTL 值因操作系统和设备的版本而异。

的默认初始 TTL 值 Linux/Unix64和 TTL 值 视窗128.

这是 Linux、FreeBSD、Mac OS、Solaris 和 Windows 等流行操作系统的默认初始 TTL 值。

操作系统 TTL 值

最后,您可以查看不同操作系统和设备的 TTL 值的完整列表。

用 TTL 值检测远程主机的操作系统

TTL,代表 活着的时间是包含在通过基于 TCP/IP 的网络发送的数据包中的计时器值,它告诉接收方在过期和丢弃数据包或数据之前保留或使用数据包或其任何包含的数据多长时间。

而 Ping 命令用于检查局域网或广域网上的系统或设备的连通性和可达性。 Ping 命令预装在大多数操作系统中。

要查看 Linux/Windows 主机的 TTL 值,只需从主机本身或网络上的其他系统 ping 主机:

例子:

$ ping -c5 localhost

我的示例输出 Fedora 桌面:

PING localhost(localhost (::1)) 56 data bytes
64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.063 ms
64 bytes from localhost (::1): icmp_seq=2 ttl=64 time=0.057 ms
64 bytes from localhost (::1): icmp_seq=3 ttl=64 time=0.070 ms
64 bytes from localhost (::1): icmp_seq=4 ttl=64 time=0.067 ms
64 bytes from localhost (::1): icmp_seq=5 ttl=64 time=0.056 ms

--- localhost ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4096ms
rtt min/avg/max/mdev = 0.056/0.062/0.070/0.005 ms
Ping Linux 主机

如你所见,我明白了 64 作为上述输出中的 TTL 值。 因为它是Linux系统。

Windows 主机呢? 让我们看看如果我们 ping Windows 系统会得到什么。

我要从我的 ping Windows 10 桌面 Fedora 桌面。 我的 Windows 10 的 IP 地址是 192.168.122.239.

$ ping -c5 192.168.122.239

样本输出:

PING 192.168.122.239 (192.168.122.239) 56(84) bytes of data.
64 bytes from 192.168.122.239: icmp_seq=1 ttl=128 time=6.85 ms
64 bytes from 192.168.122.239: icmp_seq=2 ttl=128 time=0.510 ms
64 bytes from 192.168.122.239: icmp_seq=3 ttl=128 time=0.601 ms
64 bytes from 192.168.122.239: icmp_seq=4 ttl=128 time=0.541 ms
64 bytes from 192.168.122.239: icmp_seq=5 ttl=128 time=0.558 ms

--- 192.168.122.239 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4088ms
rtt min/avg/max/mdev = 0.510/1.812/6.851/2.519 ms
从 Linux 主机 Ping Windows 主机从 Linux 主机 Ping Windows 主机

注意 TTL 值? 它是 128。Windows 操作系统的默认 TTL 值是 128。

初始 TTL 值

下表显示了各种操作系统和设备的默认初始 TTL 值。

设备/操作系统版本协议TTL
艾克斯TCP60
艾克斯UDP30
安卓3.2.1TCP 和 ICMP64
安卓5.1.1TCP 和 ICMP64
艾克斯3.2、4.1ICMP255
BSDIBSD/OS 3.1 和 4.0ICMP255
康帕Tru64 v5.0ICMP64
思科ICMP254
十二月路径工程V5TCP 和 UDP30
铸造厂ICMP64
自由BSD2.1RTCP 和 UDP64
自由BSD3.4、4.0ICMP255
自由BSD5ICMP64
惠普-UX9.0xTCP 和 UDP30
惠普-UX10.01TCP 和 UDP64
惠普-UX10.2ICMP255
惠普-UX11ICMP255
惠普-UX11TCP64
鸢尾花5.3TCP 和 UDP60
鸢尾花6.xTCP 和 UDP60
鸢尾花6.5.3、6.5.8ICMP255
杜松ICMP64
MPE/IX (HP)ICMP200
Linux2.0.x 内核ICMP64
Linux2.2.14内核ICMP255
Linux2.4 内核ICMP255
Linux红帽 9ICMP 和 TCP64
macOS/MacTCP2.0.xTCP 和 UDP60
macOS/MacTCPX (10.5.6)ICMP/TCP/UDP64
NetBSDICMP255
网件 FVG318ICMP 和 UDP64
OpenBSD2.6 & 2.7ICMP255
开放式虚拟机07.01.2002ICMP255
操作系统/2TCP/IP 3.064
操作系统/1V3.2ATCP60
操作系统/1V3.2AUDP30
索拉里斯2.5.1、2.6、2.7、2.8ICMP255
索拉里斯2.8TCP64
层云TCP_操作系统ICMP255
层云TCP_OS (14.2-)TCP 和 UDP30
层云TCP_OS (14.3+)TCP 和 UDP64
层云STCPICMP/TCP/UDP60
太阳操作系统4.1.3/4.1.4TCP 和 UDP60
太阳操作系统5.7ICMP 和 TCP255
超强V4.1/V4.2ATCP60
超强V4.1/V4.2AUDP30
超强V4.2 – 4.5ICMP255
VMS/多网TCP 和 UDP64
VMS/TCPwareTCP60
VMS/TCPwareUDP64
VMS/卧​​龙岗1.1.1.1TCP128
VMS/卧​​龙岗1.1.1.1UDP30
虚拟管理系统/UCXTCP 和 UDP128
视窗对于工作组TCP 和 UDP32
视窗95TCP 和 UDP32
视窗98ICMP32
视窗98, 98 东南ICMP128
视窗98TCP128
视窗新台币 3.51TCP 和 UDP32
视窗新台币 4.0TCP 和 UDP128
视窗NT 4.0 SP5-32
视窗新台币 4.0 SP6+128
视窗NT 4 WRKS SP 3, SP 6aICMP128
视窗NT 4 服务器 SP4ICMP128
视窗ICMP128
视窗2000 专业版ICMP/TCP/UDP128
视窗2000家庭ICMP128
视窗服务器 2003128
视窗经验值ICMP/TCP/UDP128
视窗远景ICMP/TCP/UDP128
视窗7ICMP/TCP/UDP128
视窗服务器 2008ICMP/TCP/UDP128
视窗10ICMP/TCP/UDP128

初始 TTL 值

这种方法可能并不总是准确的。 但是,它将给出远程系统中底层操作系统的概念。 如果您只知道远程系统的 IP 地址,则可以使用 Ping 命令获取操作系统的名称。

相关阅读:

  • 使用 Gping 以图形格式显示 Ping 命令输出
  • 在 Linux 中使用 Ping 命令输出打印时间戳
  • 如何在 Linux 中一次 Ping 多台主机
  • Prettyping – 使 Ping 命令的输出更漂亮,更易于阅读
  • Ping 多个服务器并在类似顶部的文本 UI 中显示输出