zoukankan      html  css  js  c++  java
  • 关于ping以及TTL的分析【转】

    转自:http://blog.csdn.net/u013451221/article/details/46608881

    首先介绍一下ping这个工具

    ping [目标]

    的意思就是向目标发送几个数据包,之后如果目标接受到一个数据包,那么目标就会向发送ping的主机返回一个数据包


    比如上图,我ping了百度的服务器(windows下默认ping 4次)

    字节代表数据包的大小,时间顾名思义就是返回时间,TTL这里稍微说一下:

    TTL的意思就是数据包的生存时间,当然你得到的这个就是剩余的生存时间。

    TTL用来计算数据包在路由器的消耗时间,因为现在绝大多数路由器的消耗时间都小于1s,而时间小于1s就当1s计算,所以数据包没经过一个路由器节点TTL都减一。

    那么TTL的值一开始是什么呢?

    不同的操作系统默认下TTL是不同的。

    默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的TTL值为128,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。

    在这里不难得到百度服务器返回给我的数据包的TTL值应该为64(一般都是找2^n且离返回值最近的那个值),我得到的时候TTL为47,那么途中则经过了64-47=17个路由器。

    在比如,我ping了自己的ip


    可以看到我自己给自己发送数据包不需要经过路由器,所以TTL值为64,也就是说我的数据包生存时间默认为64


    提到ping就不得不提到另外一个windows下的工具tracert

    tracert [目标]

    的意思就是得到你的主机到目标主机经过路由器的ip

    如图:


    tracert的原理就不多阐述了,和ICMP协议有关,利用了数据包的生存期进行路径的取得

    在这里我们可以看到达到目标我们经过了15个路由器(不算终点)

    注意一下有的值为 请求超时 ,原因是有的路由器是禁止ping的(所以不会返回信息)

    另外由于现在网络状况很复杂,你ping不同地址可能得到的路径不同,就像我再一次ping了一下百度:


    得到的结果是不是不同了?

    这个和不同时间网络状况以及很多因素有关

  • 相关阅读:
    Eclipse安装Hadoop插件
    (转)Ubuntu14.0.4中hadoop2.4.0伪分布模式配置
    Hadoop--DataNode无法启动
    启动与关闭hadoop
    hadoop中执行命令时发生错误
    strings命令
    Deriving data from ElasticSearch Engine
    elasticsearch data importing
    reading words in your computer and changing to female voice, linux festival text2wave saving wav files
    DDNS client on a Linux machine
  • 原文地址:https://www.cnblogs.com/sky-heaven/p/6655997.html
Copyright © 2011-2022 走看看