traceroute工作原理

<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

traceroute 是一个非常好用的用于跟踪路由包的工具,最基本的用法是 traceroute xxx.xxx.xxx.xxx
这条命令会输出从本机到指定ip 地址所经过的所有路由节点的ip ,以及一些时间等额外信息。
tranceroute
的实现原理,主要是依赖了ICMP(Internet Control Message Protocol) 协议,该协议 主要用于在网络中传递控制信息,包括一些出错信息等。协议定义了一些标准错误类型,其中有一项为:
ICMP_TIME_EXCEEDED,
该类型包含两个子类型:
ICMP_EXC_TTL       
超过TTL
ICMP_EXC_FRAGTIME  
超过片段重组时间

ICMP_EXC_TTL
traceroute 实现的根本基础,原理如下:
假设A 主机使用traceroute 来跟踪至E 主机的路由途径,则A 会发送携带ICMP_ECHO (这是ping 命令的实现基础),且TTL1IP
显然,路由B 在收到该包时,由于TTL1 ,则拒绝转发该包,并发送ICMP_EXC_TTL 代码给源地址。当A 收到该反馈后,会继续发送ICMP
包,并递增TTL ,使其加1 ,这样,则会找到路由表中的下一个路由跃点。以此方法,则可以获得全部的路由节点。

当然,这种方法返回的路径并不一定是完全正确,主要是因为复杂网络中的一些不可控因素或者动态路由的原因,使得结果不一定100
和实际情况吻合。

 

 

traceroute 工作原理(互联网)

Traceroute 程序的设计是利用ICMPIP headerTTLTime To Live )栏位(field )。首先,traceroute 送出一个TTL1IP datagram (其实,每次送出的为340 字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器(router )收到这个datagram 时,它将TTL1 。此时,TTL 变为0 了,所以该路由器会将此datagram 丢掉,并送回一个「ICMP time exceeded 」消息(包括发IP 包的源地址,IP 包的所有内容及路由器的IP 地址),traceroute 收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute 再送出另一个TTL2 datagram ,发现第2 个路由器...... traceroute 每次将送出的datagramTTL 1 来发现另一个路由器,这个重复的动作一直持续到某个datagram 抵达目的地。当datagram 到达目的地后,该主机并不会送回ICMP time exceeded 消息,因为它已是目的地了,那么traceroute 如何得知目的地到达了呢?

    Traceroute 在送出UDP datagrams 到目的地时,它所选择送达的port number 是一个一般应用程序都不会用的号码(30000 以上),所以当此UDP datagram 到达目的地后该主机会送回一个「ICMP port unreachable 」的消息,而当traceroute 收到这个消息时,便知道目的地已经到达了。所以traceroute Server 端也是没有所谓的Daemon 程式。

    Traceroute 提取发 ICMP TTL 到期消息设备的IP 地址并作域名解析。每次 ,Traceroute 都打印出一系列数据, 包括所经过的路由设备的域名及 IP 地址, 三个包每次来回所花时间。

   Traceroute 有一个固定的时间等待响应(ICMP TTL 到期消息) 。如果这个时间过了,它将打印出一系列的* 号表明:在这个路径上,这个设备不能在给定的时间内发出ICMP TTL 到期消息的响应。然后,TracerouteTTL 记数器加1 ,继续进行。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值