码农行者 码农行者
首页
  • Python

    • 语言特性
    • Django相关
    • Tornado
    • Celery
  • Golang

    • golang学习笔记
    • 对比python学习go
    • 模块学习
  • JavaScript

    • Javascript
  • 数据结构预算法笔记
  • ATS
  • Mongodb
  • Git
云原生
运维
垃圾佬的快乐
  • 数据库
  • 机器学习
  • 杂谈
  • 面试
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

DeanWu

软件工程师
首页
  • Python

    • 语言特性
    • Django相关
    • Tornado
    • Celery
  • Golang

    • golang学习笔记
    • 对比python学习go
    • 模块学习
  • JavaScript

    • Javascript
  • 数据结构预算法笔记
  • ATS
  • Mongodb
  • Git
云原生
运维
垃圾佬的快乐
  • 数据库
  • 机器学习
  • 杂谈
  • 面试
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Linux基础系列 - 网络监测利器 mtr

    • 介绍
      • ping
      • traceroute
      • mtr
    • 安装
      • 使用
        • 参考
          • 名词解释
          • 扩展阅读
      • 运维
      • linux
      DeanWu
      2019-09-19
      目录

      Linux基础系列 - 网络监测利器 mtr

      # 介绍

      我们在查看网络的联通性时,常常使用 ping。在查看网络走向路由时,使用 traceroute。除此之外,还有一个网络检测的利器--mtr。它结合了ping和 trasceroute,在显示路由ip的同事,把网络联通情况也显示出来了。

      traceroute默认使用UDP数据包探测,而mtr默认使用ICMP报文探测,ICMP在某些路由节点的优先级要比其他数据包低,所以测试得到的数据可能低于实际情况。

      这几个常用工具的工作流程如下:

      # ping

      通过 ping 命令,可以判断网络的通断、丢包和延时情况。Ping 使用 ICMP 协议,当 ping 某目的主机时,源主机发出 ICMP echo 报文,根据实际情况,返回 ICMP echo reply 或 ICMP 差错消息报文。如果返回 echo reply 说明源目的地址直接可以通,并可以携带源目的地址间的延时;如果不能通信,则根据返回的 ICMP 差错报文,可以判断不能通信的原因。

      # traceroute

      Traceroute 工具用来定位源和目的地址之间的路径。使用traceroute 命令可以显示从源地址出发,到目的地址之间所经过的所有路由器。使用 traceroute 命令时,源地址首先发出一个 TTL 为 1 的 UDP 报文,当经过路径的第一条时,TTL 减一变成零,于是第一跳路由器返回一个 TTL 超时的 ICMP 差错报文,于是源 server 知道了第一跳路由器的 IP 地址;然后源 server 发送一个 TTL 为 2 的 UDP 报文,过程类似,源 server 知道了第二跳路由器的 IP 地址;以此类推,当数据包到达最后一跳时,目的地址将返回一个端口不可达的 ICMP 差错报文,于是,源 server 知道数据包已经到达了目的地址,traceroute 结束。

      # mtr

      mtr 工具集成了 ping 和 traceroute 两种工具的优点,可以看成是两者的结合体。 mtr 工具首先使用 traceroute 得出经过的每一跳路由器,然后使用 ping 命令,得出每一跳的延时和丢包率。通过 MTR 命令,可以很直观的看到数据包所经过的路径,以及路径网络质量。

      # 安装

      mtr 不是Linux自带的命令,需要安装,如下:

      # CentOS
      yum install mtr
      # Ubuntu
      apt-get install mtr
      # macOS
      brew install mtr # mac 下安装完成后,运行需要使用sudo 
      # Windows
      BestTrace - https://www.ipip.net/product/client.html
      
      1
      2
      3
      4
      5
      6
      7
      8

      # 使用

      语法格式如下:

      Usage:
       mtr [options] hostname
      
       -F, --filename FILE        read hostname(s) from a file
       -4                         use IPv4 only
       -6                         use IPv6 only
       -u, --udp                  use UDP instead of ICMP echo
       -T, --tcp                  use TCP instead of ICMP echo
       -a, --address ADDRESS      bind the outgoing socket to ADDRESS
       -f, --first-ttl NUMBER     set what TTL to start
       -m, --max-ttl NUMBER       maximum number of hops
       -U, --max-unknown NUMBER   maximum unknown host
       -P, --port PORT            target port number for TCP, SCTP, or UDP
       -L, --localport LOCALPORT  source port number for UDP
       -s, --psize PACKETSIZE     set the packet size used for probing
       -B, --bitpattern NUMBER    set bit pattern to use in payload
       -i, --interval SECONDS     ICMP echo request interval
       -G, --gracetime SECONDS    number of seconds to wait for responses
       -Q, --tos NUMBER           type of service field in IP header
       -e, --mpls                 display information from ICMP extensions
       -Z, --timeout SECONDS      seconds to keep probe sockets open
       -r, --report               output using report mode
       -w, --report-wide          output wide report
       -c, --report-cycles COUNT  set the number of pings sent
       -j, --json                 output json
       -x, --xml                  output xml
       -C, --csv                  output comma separated values
       -l, --raw                  output raw format
       -p, --split                split output
       -t, --curses               use curses terminal interface
           --displaymode MODE     select initial display mode
       -n, --no-dns               do not resove host names
       -b, --show-ips             show IP numbers and host names
       -o, --order FIELDS         select output fields
       -y, --ipinfo NUMBER        select IP information in output
       -z, --aslookup             display AS number
       -h, --help                 display this help and exit
       -v, --version              output version information and exit
      
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39

      使用例子:

      mtr 8.8.8.8
      
      1

      返回报告 :

      Keys:  Help   Display mode   Restart statistics   Order of fields   quit
                                     Packets               Pings
      Host                        Loss%   Snt   Last   Avg  Best  Wrst StDev
      1. 10.85.134.145            92.4%    67    1.3   1.4   1.3   1.7   0.0
      2. 10.85.244.49              0.0%    67    1.0   1.7   0.8  10.9   2.2
      3. ???
      4. 125.94.53.93              0.0%    67    3.5  27.2   3.3  70.9  17.2
      5. 113.96.6.142              0.0%    67    1.7   5.7   1.4  15.4   2.8
      6. 113.108.208.189           0.0%    67    5.3   4.2   1.8  17.4   2.6
      7. 202.97.94.150            59.7%    67    3.4   5.2   3.1  21.6   4.4
      8. 202.97.94.98              1.5%    67    5.8  10.0   4.5  21.9   3.3
      9. 202.97.89.54              1.5%    67   83.4  84.4  63.5 109.0   9.5
      10. 202.97.62.214             1.5%    67    7.5   9.6   7.4  19.8   2.1
      11. 108.170.241.79            1.5%    67   15.1  12.9   9.6  21.9   2.6
      12. 209.85.250.133            3.0%    67   12.3  15.2   9.4  49.0   9.2
      13. 172.253.50.219            7.5%    67   21.6  25.4  19.8  74.8   8.2
      14. 216.239.46.231            1.5%    67   23.6  22.7  20.5  28.0   1.6
      15. ???
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18

      输出各列分别表示:

      • host是经过的IP地址
      • 丢包率:Loss
      • 已发送的包数:Snt
      • 最后一个包的延时:Last
      • 平均延时:Avg
      • 最低延时:Best
      • 最差延时:Wrst
      • 方差(稳定性):StDev

      在交互页面按 H 键,可以显示帮助:

      Command:
      ?|h     help
      p       pause (SPACE to resume)
      d       switching display mode
      e       toggle MPLS information on/off
      n       toggle DNS on/off
      r       reset all counters
      o str   set the columns to display, default str='LRS N BAWV'
      j       toggle latency(LS NABWV)/jitter(DR AGJMXI) stats
      c <n>   report cycle n, default n=infinite
      i <n>   set the ping interval to n seconds, default n=1
      f <n>   set the initial time-to-live(ttl), default n=1
      m <n>   set the max time-to-live, default n= # of hops
      s <n>   set the packet size to n or random(n<0)
      b <c>   set ping bit pattern to c(0..255) or random(c<0)
      Q <t>   set ping packet's TOS to t
      u       switch between ICMP ECHO and UDP datagrams
      y       switching IP info
      z       toggle ASN info on/off
      
      press any key to go back...
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21

      几个常用的按键:

      • 按 p 键可以暂停,空格键恢复工作
      • 按 d 键可以切换显示方式
      • n 开启/关闭 DNS 解析
      • r 清空所有统计信息,重新统计
      • c 接数字,表示循环的次数,默认无限循环
      • i 接数字,设置 ping 的间隔,默认 1s
      • f 接数字,设置初始的 TTL 值,若设置为 3,则从第三行开始显示
      • m 接数字,设置最大的 TTL 值
      • s 接数字,设置包的大小,如果数字小于零,则为随机大小

      # 参考

      # 名词解释

      ICMP(Internet Control Message Protocol) IP 协议族的一员,主要用于网络设备间发送错误指示信息, 一般不用于传输数据,常见部署在用户端网络程序中,诸如 traceroute 或 ping 等程序

      TTL(Time To Live) 此处的 Time 表示的是次数,而不是时间,表达的是一个包在结束之前还能经过的跳数

      Hop 跳数: 网络中两个端路径上的节点,路由器的数目

      ISP(Internet Service Provider) 互联网服务提供商

      # 扩展阅读

      • 如何分析mtr报告:https://wsgzao.github.io/post/mtr/
      #Linux#Linux基础系列#运维知识库
      上次更新: 2023/03/19, 15:09:33
      最近更新
      01
      chromebox/chromebook 刷bios步骤
      03-01
      02
      redis 集群介绍
      11-28
      03
      go语法题二
      10-09
      更多文章>
      Theme by Vdoing | Copyright © 2015-2024 DeanWu | 遵循CC 4.0 BY-SA版权协议
      • 跟随系统
      • 浅色模式
      • 深色模式
      • 阅读模式