网络探测和诊断工具 - traceroute

一、概要

traceroute是Linux和Mac OS等系统默认提供的用于网络诊断和探测最常用的工具,Windows系统提供了一个叫:tracert的工具,和traceroute工具的功能相同。通过IP地址或域名,traceroute能探测数据包从源地址到目的地址之间经过哪些路由器,以及经过每个路由器的耗时。

二、traceroute原理
2.1 相关名词
  • ICMP

    ICMP全称(Internet Control Message Protocol)Internet控制报文协议,使用IP的基本支持,它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

  • IP

    IP协议是TCP/IP协议族中最核心的部分,它的作用是在两台主机之间传输数据,所有上层协议的数据(HTTP、TCP、UDP等)都会被封装在一个个的IP数据包中被发送到网络上。

  • TTL

    TTL(time-to-live)是IP数据包中的字段,它指定了从源地址到目的主机的过程中会经历很多次路由转发,在发送数据包时会指定一个TTL值。


2.2 实现原理

traceroute的实现都借助了TTL:通过向目的地址发送一系列的探测包,设置探测包的TTL初始值分别为1,2,3…,根据返回的超时通知(ICMP Time Exceeded Message)得到源地址与目的地址之间的每一跳路由信息。在传输过程中每经过一个路由器,TTL的值都会减1,当TTL为0时,发回一个ICMP超时通知(ICMP Time Exceeded Message)。


2.3 探测流程

4c18bdd6c47441c1a2de252a1a8925e0.png

  1. 从源地址发出一个探测包到目的地址;

  2. 到达路由器时,TTL将会被减一;

  3. 当TTL变成0时,包则被丢弃,路由器会向源地址发回一个ICMP超时通知(ICMP Time Exceeded Message),ICMP超时的通知包含:

  • IP包源地址

  • IP包所有的内容

  • 路由器的IP地址

当源地址收到ICMP超时通知时;

根据路由信息判断ICMP返回的不是目标地址,则每次设置TTL加1,重复1 ~ 4;

直到目标地址收到探测数据包,并返回端口不可达通知(ICMP Port Unreachable),则停止traceroute;

三、traceroute命令详解
Usage:
  traceroute [ -46dFITnreAUDV ] [ -f first_ttl ] [ -g gate,... ] [ -i device ] [ -m max_ttl ] [ -N squeries ] [ -p port ] [ -t tos ] [ -l flow_label ] [ -w waittime ] [ -q nqueries ] [ -s src_addr ] [ -z sendwait ] [ --fwmark=num ] host [ packetlen ]
Options:
  -4                          Use IPv4
  -6                          Use IPv6
  -d  --debug                 Enable socket level debugging
  -F  --dont-fragment         Do not fragment packets
  -f first_ttl  --first=first_ttl
                  
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值