一、关于PING的介绍

PING命令来检查要到达的目标IP地址并记录结果。

ping 命令显示目标是否响应以及接收答复所需的时间。

如果在传递到目标过程中有错误,ping 命令将显示错误消息。

ICMP ECHO(Type 8) 和ECHO Reply (Type 0)

我们使用一个ICMP ECHO数据包来探测主机地址 HOST B 是否存活(当然在主机没有被配置为过滤ICMP形式)

通过简单的发送一个ICMP ECHO(Type 8)数据包到目标主机

如果ICMP ECHO Reply(ICMP type 0)数据包 HOST A 可以接受到,说明主机是存活状态。

如果没有就可以初步判断主机没有在线或者使用了某些过滤设备过滤了ICMP的REPLY。

+---------------------------------------------------------------+

| |

| +-------+ +-------+ |

| | | ICMP Echo Request | | |

| | HOST | --------------------------> | HOST | |

| | | | | |

| | A | | B | |

| | | | | | ICMP Echo Reply | | |

| +-------+ +-------+ |

| |

+---------------------------------------------------------------+

这种机制就是我们通常所用的ping命令来检测目标主机是否可以ping到。

典型的例子

C:\>ping 192.168.0.1

Pinging 192.168.0.1 with 32 bytes of data:

Reply from 192.168.0.1: bytes=32 time<10ms TTL=128

Reply from 192.168.0.1: bytes=32 time<10ms TTL=128

Reply from 192.168.0.1: bytes=32 time<10ms TTL=128

Reply from 192.168.0.1: bytes=32 time<10ms TTL=128

Ping statistics for 192.168.0.1:

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 0ms, Maximum = 0ms, Average = 0ms

二、注意TTL

TTL:生存时间

指定数据报被路由器丢弃之前允许通过的网段数量。

TTL 是由发送主机设置的,以防止数据包不断在 IP 互联网络上永不终止地循环。转发 IP 数据包时,要求路由器至少将 TTL 减小 1。

使用PING时涉及到的 ICMP 报文类型

一个为ICMP请求回显(ICMP Echo Request)

一个为ICMP回显应答(ICMP Echo Reply)

三、TTL 字段值可以帮助我们识别操作系统类型。

UNIX 及类 UNIX 操作系统 ICMP 回显应答的 TTL 字段值为 255

Compaq Tru64 5.0 ICMP 回显应答的 TTL 字段值为 64

微软 Windows NT/2K操作系统 ICMP 回显应答的 TTL 字段值为 128

微软 Windows 95 操作系统 ICMP 回显应答的 TTL 字段值为 32

当然,返回的TTL值是相同的

但有些情况下有所特殊

LINUX Kernel 2.2.x & 2.4.x ICMP 回显应答的 TTL 字段值为 64

FreeBSD 4.1, 4.0, 3.4;

Sun Solaris 2.5.1, 2.6, 2.7, 2.8;

OpenBSD 2.6, 2.7,

NetBSD

HP UX 10.20

ICMP 回显应答的 TTL 字段值为 255

Windows 95/98/98SE

Windows ME

ICMP 回显应答的 TTL 字段值为 32

Windows NT4 WRKS

Windows NT4 Server

Windows 2000

ICMP 回显应答的 TTL 字段值为 128

这样,我们就可以通过这种方法来辨别

操作系统 TTL

LINUX 64

WIN2K/NT 128

WINDOWS 系列 32

UNIX 系列 255

经过测试的操作系统如下:

LINUX Kernel 2.2.x, Kernel 2.4t1-6; FreeBSD 4.1,4.0,3.4; OpenBSD 2.7,2.6; NetBSD

1.4.2; Sun Solaris 2.5.1,2.6,2.7,2.8; HP-UX 10.20, 11.0; AIX 4.1, 3.2; Compaq

Tru64 5.0; Irix 6.5.3,6.5.8; BSDI BSD/OS 4.0,3.1; Ultrix 4.2-4.5; OpenVMS 7.1-2;

Windows 95/98/98SE/ME; Windows NT 4 Workstation SP3, SP4, SP6a; Windows NT 4

Server SP4; Windows 2000 Professional, Server, Advanced Server.

附:

ICMP报文的类型包括如下:

ECHO (Request (Type 8), Reply (Type 0))--回显应答,

Time Stamp (Request (Type 13), Reply (Type 14))--时间戳请求和应答,

Information (Request (Type 15), Reply (Type16))--信息请求和应答,

Address Mask (Request (Type 17), Reply (Type 18))--地址掩码请求和应答等

linux 函数 查看ttl,利用TTL值来鉴别操作系统相关推荐

  1. Linux下查看硬盘序列号、设备序列号、操作系统版本和安装时间、系统启用时间等命令

    Linux下查看硬盘序列号.设备序列号.操作系统版本和安装时间.启用时间等命令 最近由于工作需要查询一些硬盘序列号.设备序列号.操作系统版本和安装时间.系统启用时间等信息.所以对用到的命令进行一下总结 ...

  2. linux系统ttl端口,利用TTL值来鉴别操作系统

    一.关于PING的介绍 PING命令来检查要到达的目标IP地址并记录结果. ping 命令显示目标是否响应以及接收答复所需的时间. 如果在传递到目标过程中有错误,ping 命令将显示错误消息. ICM ...

  3. LINUX手动查看和修改MTU值的方法

    默认的ANDROID系统中不带BUSYBOX,所以无法用BUSYBOX IFCONFIG来查看修改MTU值.其实网卡的MTU值是保存在/sys/class/net/eth0/mtu文件中,所以可以通过 ...

  4. Linux下查看主机的信息(设备型号,操作系统,内存,CPU,硬盘)

    目录 1.查看linux设备型号 2.查看linux操作系统版本 3.查看linux硬盘大小 4.查看linux系统内存大小 5.查看CPU 6.查看jdk启动内存 1.查看linux设备型号 [ro ...

  5. c语言中函数(linux命令查看依赖类库),数组(内存存储是连续的内存空间),Linux下查看a,a[0],a之间的值,可变数组

    1.查看一个c函数依赖的类的方式: gcc t.c -o app 使用ldd app命令查看依赖的类,截图如下: 2.库函数包括: a.C标准库函数,(c89/c99标准定义的函数接口,由操作系统厂商 ...

  6. 【Linux 性能优化】利用perf和CPU使用率定位异常函数

    博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 文章目录 CPU 使用率 进程运行情况查询 使用工具查看CPU使用率 定位导致CPU 使用率过高的函数 perf to ...

  7. ttl一会255一会64_利用TTL进行网络故障诊断!

    TTL,全称是Time To Live,中文名为生存时间,它是IP报头中一个非常重要的参数.通过TTL的值,我们可以判断出当前网络IP层的工作状况. TTL告诉网络中的路由器数据包在网络中的时间是否太 ...

  8. Redis源码分析--lookupKey函数查看value值

    lookupKey函数查看value值 robj *lookupKey(redisDb *db, robj *key) {dictEntry *de = dictFind(db->dict,ke ...

  9. R语言使用lm函数构建简单线性回归模型(建立线性回归模型)、拟合回归直线、使用attributes函数查看线性回归模型的属性信息、获取模型拟合对应的残差值residuals

    R语言使用lm函数构建简单线性回归模型(建立线性回归模型).拟合回归直线.使用attributes函数查看线性回归模型的属性信息.获取模型拟合对应的残差值residuals 目录

最新文章

  1. 图片html代码查看器,360度全景商品图片查看器
  2. c 获取当前时间插入oracle数据库,Oracle如何获取系统当前时间等操作实例,c++获取系统时间...
  3. select可选择、同时可自行输入
  4. 使用Mybatis Generator自动生成代码
  5. 树莓派小车参考方案,了解一下
  6. function收集
  7. OpenCV加mySQL树莓派_树莓派3B/3B+和4B安装OpenCV教程 (详细教程)
  8. 前端学习(2799):实现资讯的结构和列表
  9. Java普通代码块,构造代码块,静态代码块区别,执行顺序的代码实例
  10. typedef int Myfunc(const char *,const struct stat *,int)
  11. python加法程序结果图片_OpenCV-Python系列之图像上的算术运算
  12. c语言算术转换例子,关于C语言算术表达式中“寻常算术转换”的问题
  13. 遥感植被指数128个
  14. 【Microsoft Azure 的1024种玩法】七.Azure云端搭建部署属于自己的维基百科
  15. Airtest多点触控测试
  16. 华为 荣耀 6x android哪个版本,华为荣耀畅玩6X官方rom刷机包_华为荣耀6X原版系统包_升级包...
  17. 【超好懂的比赛题解】2020ICPC澳门站 个人题解
  18. 【报告分享】吴晓波2022跨年演讲全文(附下载)
  19. 基于GC - MS的代谢组学研究揭示:SD大鼠和Wistar大鼠之间存在系统的代谢差异及乙醇灌胃反应差异
  20. python写xml文件 数据量特别大_python处理xml大文件[xml.sax]

热门文章

  1. 2015061908 - 人来人往
  2. 线程和进程/阻塞和挂起
  3. mavon-editor编辑器页面瞄点
  4. 在conda环境中更新pycocotools出现的required to install pyproject. toml-based projects报错解决方案!
  5. 计算机专业能辅修风景园林吗,北京林业大学风景园林辅修
  6. 标准的身份证验证(第18位校验码)
  7. javaweb异常处理
  8. C#MDI窗体避免重复打开子窗体的问题
  9. 必备|爬虫工具库-spidertools.cn
  10. JS中三个点(...)