先大概介绍一下TTL(Time To Live)吧!

  TTL翻译过来就是网络生存时间,说的是一个网络数据包,它在网络设备中转发的跳数(网络设备这里一般指的是路由器),默认值为64,也有很多设置为了128,或者可以设置为255以下,所以有时候看到一些TTL值大于64也不用惊讶。每经过一次路由,一般TTL值就会-1,比如原来是64,经过一层路由后,就会变成了63。

  TTL的主要作用是避免IP包数据包在网络中的无限循环和收发,并能使IP包的发送者能收到告警消息(这个不是本文的重点,就不具体介绍了,网络上很多,可以自己搜一下)。

  TTL字段存在于IP层协议中,所以我们可以在IP层的数据包中查找到该字段,看下图(图中的数据包是我随手在网络上下载的一个)

  看到上图的Time To Live是64,说明目标主机和源主机在同一个网段,没有经过路由转发,甚至就是本机。

  上面的数据包的Time To Live是251,说明源主机的TTL应该设置为了255.(我想应该没有人故意设一个奇葩值251,253吧。。。)

  那基本介绍就到这里了,现在来说说TTL的玩法,怎么看它来排除网络问题。

  首先一般在一些专业的网络里面,都会有对应的网络拓扑图。但是当你拿到了网络拓扑图,里面的网络情况是不是真的和拓扑图上的一致?这就需要验证了,这时候我们就可以通过ping(有些主机上设置了一些策略,不会回复ping消息)或者根据两台主机间的数据包中的TTL来观察是否和拓扑图中主机的分布情况一致。

  下图是ping时候出现的TTL值:

  至于数据包的TTL在上面已经有例子,就不给出了。

  有时候会发现,TTL和它的网络拓扑会不一致,特别是在网络复杂的情况下,和网络时间很久了,其中又经过了后人对网络的修改,往往会出现各种奇怪的问题。

  还有在一些没有网络拓扑的网络上,刚开始网络可能很简单,不需要,但是慢慢地增加了很多网络设备,也改变了网络的结构,这时候,我们也可以使用TTL来验证网络是否正确。说一个题外话,如果感觉这样观察不清晰,在Linux下可以使用traceroute命令和windows下使用tracert命令来打印出清晰的网络路径,如下图:

  另外会出现一种情况,就是抓的一个网络数据包,比如下图:

  在图中是10.0.0.1和10.0.0.2通信,TTL 是255,有可能你会发现有些数据包照样是10.0.0.2发出的,但是TTL差别很大,那有可能网络路径被重新导向,访问了另外一个服务器,或者被其他服务器给劫持了。所以在分析网络数据时候,我们也有必要观察一下TTL值是否异常。

最新文章

  1. Android NDK开发之Jni调用Java对象
  2. 在C#使用文件监控对象FileSystemWatcher的几种方案
  3. Struts2中通配符
  4. CSS表格固定列宽
  5. BZOJ2553: [BeiJing2011]禁忌
  6. NETBSD-DTARCE
  7. 整型数组处理算法(八)插入(+、-、空格)完成的等式:1 2 3 4 5 6 7 8 9=N[华为面试题]
  8. 修改VISUAL STUDIO EXPRESS 2012新建C++文件编码
  9. DisplayContent、StackBox、TaskStack笔记
  10. 关键自li,em,dl,ul,ol,footer,header,nav,aside,article
  11. 分享两个网址,一个是使用mssql自带的跟踪工具和分析工具
  12. 产生AJAX跨域问题的原因
  13. 浅谈RMQ
  14. Hadoop---Java-API对HDFS的操作
  15. 1.Windows下使用VisualSVN Server搭建SVN服务器
  16. 36-2018 蓝桥杯Java B组试题及答案
  17. Java环境编写
  18. 配置codis-dashboard
  19. 【Linux】特殊符号$$,$#,$?等解释
  20. django第二课 网页继承

热门文章

  1. vue-property-decorator用法
  2. ArcGIS Engine专题地图渲染器的实现(入门版)
  3. Redis(六)复制
  4. vue-cli添加bootstrap
  5. 在Linux上安装 nessus
  6. Windows 程序包管理器 Chocolatey:一条命令装软件
  7. 暑期集训20190726 跳动(skip)
  8. NOIP模拟12
  9. MinIO 参数解析与限制
  10. DAY 3 数论专场