先大概介绍一下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值是否异常。

玩转网络(一)用TTL(Time To Live)排查网络问题的更多相关文章

  1. 40 网络相关函数(八)——live555源码阅读(四)网络

    40 网络相关函数(八)——live555源码阅读(四)网络 40 网络相关函数(八)——live555源码阅读(四)网络 简介 15)writeSocket向套接口写数据 TTL的概念 函数send ...

  2. 36 网络相关函数(四)——live555源码阅读(四)网络

    36 网络相关函数(四)——live555源码阅读(四)网络 36 网络相关函数(四)——live555源码阅读(四)网络 简介 7)createSocket创建socket方法 8)closeSoc ...

  3. 33 网络相关函数(一)——live555源码阅读(四)网络

    33 网络相关函数(一)——live555源码阅读(四)网络 33 网络相关函数(一)——live555源码阅读(四)网络 简介 1)IsMulticastAddress多播(组播)地址判断函数 多播 ...

  4. 网络编程介绍,C/S 架构,网络通讯协议,osi七层

    网络编程: 什么是网络编程: 网络通常指的是计算机中的互联网,是由多台计算机通过网线或其他媒介相互链接组成的 编写基于网络的应用程序的过程序称之为网络编程 为什么要学习网络编程: 我们已经知道计算机, ...

  5. iOS—网络实用技术OC篇&网络爬虫-使用java语言抓取网络数据

    网络爬虫-使用java语言抓取网络数据 前提:熟悉java语法(能看懂就行) 准备阶段:从网页中获取html代码 实战阶段:将对应的html代码使用java语言解析出来,最后保存到plist文件 上一 ...

  6. 39 网络相关函数(七)——live555源码阅读(四)网络

    39 网络相关函数(七)——live555源码阅读(四)网络 39 网络相关函数(七)——live555源码阅读(四)网络 简介 14)readSocket从套接口读取数据 recv/recvfrom ...

  7. 38 网络相关函数(六)——live555源码阅读(四)网络

    38 网络相关函数(六)——live555源码阅读(四)网络 38 网络相关函数(六)——live555源码阅读(四)网络 简介 12)makeSocketNonBlocking和makeSocket ...

  8. 37 网络相关函数(五)——live555源码阅读(四)网络

    37 网络相关函数(五)——live555源码阅读(四)网络 37 网络相关函数(五)——live555源码阅读(四)网络 简介 10)MAKE_SOCKADDR_IN构建sockaddr_in结构体 ...

  9. 35 网络相关函数(三)——live555源码阅读(四)网络

    35 网络相关函数(三)——live555源码阅读(四)网络 35 网络相关函数(三)——live555源码阅读(四)网络 简介 5)NoReuse不重用地址类 6)initializeWinsock ...

  10. 34 网络相关函数(二)——live555源码阅读(四)网络

    34 网络相关函数(二)——live555源码阅读(四)网络 34 网络相关函数(二)——live555源码阅读(四)网络 2)socketErr 套接口错误 3)groupsockPriv函数 4) ...

随机推荐

  1. C#类,对象,类成员简介

    本节内容 1.类(class)是现实世界事物的模型 2.类与对象的关系,什么时候叫“对象”什么时候叫“实例” 3.引用变量与实例的关系 4.类的三大成员: ①属性(Property): ②方法(Met ...

  2. 如何定制 Spring Boot 的 Banner?

    相信用过 Spring Boot 的朋友们一定在启动日志中见过类似如下的内容,比如在启动 Spring Boot 时,控制台默认会打印 Spring Boot Logo 以及版本信息,这是 Sprin ...

  3. Java 中的 final、finally、finalize 有什么不同?

    Java 中 final.finally.finalize 有什么不同?这是在 Java 面试中经常问到的问题,他们究竟有什么不同呢? 这三个看起来很相似,其实他们的关系就像卡巴斯基和巴基斯坦一样有基 ...

  4. 恶意代码检测工具 -- Mathematics Malware Detected Tools

    Mathematics Malware Detected Tools 重要:由于缺少测试数据,部分结论可能不正确.更多更准确的结论,还需要进行大量实验. 概述 mmdt(Mathematics Mal ...

  5. .NET 任务调度 ,基于Quartz.Net

    本文中使用的为 Quartz Enterprise Scheduler .NET,版本为 3.0.8 . 架构拓扑图如下: 集群需要配置: #是否集群 true falsequartz.jobStor ...

  6. printf 格式输出代码大全

    d,lx,ld,,lu,这几个都是输出32位的hd,hx,hu,这几个都是输出16位数据的,hhd,hhx,hhu,这几个都是输出8位的,lld,ll,llu,llx,这几个都是输出64位的, pri ...

  7. 双系统开机引导菜单修复方法 进win7无须重启|metro引导|双系统菜单名字修改

    此文转自互联网,一部分是原创. 主要内容 1.修复双系统菜单(win7与win8双系统),进入win7不再需要重启,普通菜单样式(普通引导,非metro界面),更加简洁,实用,开机即可选择操作系统 2 ...

  8. 微软宣布加入 OpenJDK,看网上各派的热闹

    微软宣布加入 OpenJDK 项目(https://www.oschina.net/news/111036/microsoft-to-participate-in-openidk),这两天在微信公众号 ...

  9. node 短信接口的调用

    首先安装一下 短信的sdk 依赖 这里使用的是阿里云的短信SDK,在阿里云官网申请 npm install @alicloud/sms-sdk --save 调用 新建个 message.js /** ...

  10. VS2008给图标工具栏-状态栏添加响应函数

    1.在对话框的:OnInitDialog()函数中添加以下红色代码: BOOL CGSM_MessageDlg::OnInitDialog() { CDialog::OnInitDialog(); / ...