先大概介绍一下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. MyBatis 示例-传递多个参数

    映射器的主要元素: 本章介绍 select 元素中传递多个参数的处理方式. 测试类:com.yjw.demo.MulParametersTest 使用 Map 传递参数(不建议使用) 使用 MyBat ...

  2. Mongodb 常见的查询语句及与 mysql 对比

    db.users.find()select * from users db.users.find({"age" : 27})select * from users where ag ...

  3. Intellij IDEA 常用的插件 建议全装

    介绍几个常用的插件 Alibaba Java Coding Guidelines https://plugins.jetbrains.com/plugin/10046-alibaba-java-cod ...

  4. 拒绝黑盒应用-Spring Boot 应用可视化监控

    图文简介 逻辑关系 效果演示 快速开始 1.Spring Boot 应用暴露监控指标[版本 1.5.7.RELEASE] 首先,添加依赖如下依赖: <dependency> <gro ...

  5. 实现基于netty的web框架,了解一下

    上一篇写了,基于netty实现的rpc的微框架,其中详细介绍netty的原理及组件,这篇就不过多介绍 这篇实现基于netty的web框架,你说netty强不强,文中有不对的地方,欢迎大牛指正 先普及几 ...

  6. Newman基本使用

    简介 Newman 是 Postman 推出的一个 nodejs 库,直接来说就是 Postman 的json文件可以在命令行执行的插件. Newman 可以方便地运行和测试集合,并用之构造接口自动化 ...

  7. 搭建 webpack + react 框架爬坑之路

    由于工程实践需要搭一个 webpack + react 框架,本人刚开始学,就照b站上的react黑马视频做,爬过无数个坑...希望读者能引以为戒.我的是macos系统 https://www.bil ...

  8. text文本样式二

    text-transform样式用于将元素的字母全都变成大小 letter-spacing设置字符之间的间距 <html> <head> <style type=&quo ...

  9. Dubbo与Kubernetes集成

    Dubbo应用迁移到docker的问题 Dubbo是阿里开源的一套服务治理与rpc框架,服务的提供者通过zookeeper把自己的服务发布上去,然后服务调用方通过zk获取服务的ip和端口,dubbo客 ...

  10. vue运行报错error:Cannot assign to read only property 'exports' of object '#<Object>'

    用weex做项目的时候,npm start 之后一直报错error:Cannot assign to read only property 'exports' of object '#<Obje ...