TraceRoute的工作原理

1.TraceRoute的工作原理:

traceroute 有使用两种:使用ICMP的和使用UDP的。Microsoft

使用ICMP,所以win95上发出的traceRT应使用的是ICMP,但我没有用 sniffer查过;其它包括unix和cisco router都使用UDP.

ICMP traceroute:

===========

使用ICMP Echo Request, Echo Reply and TTL-expired.

源发出 ICMP

Equest,第一个request的TTL为1,第二个request的TTL为2,以后依此递增直至第30个;中间的router送回ICMP

TTL-expired ( ICMP type 11)

通知source,(packet同时因TTL超时而被drop),由此source知晓一路上经过的每一个router;最后的destination送回ICMP

Echo Reply。

所以中间任何一个router上如果封了ICMP Echo Request, traceroute就不能工作;如果封了type 11

(TTL-expired), 中间的router全看不到,但能看到packet 到达了最后的destination;如果封了ICMP Echo

Reply,中间的全能看到,最后的destination看不到。

UDP traceroute:

==========

使用ICMP TTL-expired(type 11), ICMP port unreachable(type 3, code 3), UDP

port >32768.

source发出UDP packet, source port使用随机的任何大于32768的高段port#, destination port #

从33434开始每送个probe依此递增,直至33434+29,(cisco

router上使用extended-traceroute命令可以修改这个起始的33434 port #),

同时TTL从1开始依此递增,直至1+29=30(最多送30个probe)。中间的router送回 ICMP

TTL-expired,使得source得知了中间的每一个router,最后的destination送回TTL-expired 和ICMP port

unreachable (因为任何主机上都没有应用使用UDP port# >32768这样的高段port#)。

所以中间某处封掉UDP

port>32768回导致traceroute不工作;封掉TTL超时会使source看不到中间的router(有的router根本不支持回送TTL超时);封掉type3,

code3可能看不到destination.

另外需要知道的是,由于回送TTL-expired的信息需要CPU生成一个packet,必须打断 CPU,为保证其它工作的正常进行,cisco

router每隔一秒才处理traceroute,所以在source 上你可能看到中间一路 * * *,但却看得到最后的destination.

这时你应知道这是中间的router CPU太忙或者中间路由器不回送TTL-expired包的原因,不必大惊小怪的。:-)

判断使用何种负载均衡方式,用show ip cef、 show interface ip等命令就能看出来

负载均衡的两种技术,有一种基于目标地址的比较容易造成饿死和撑死,另外一种加上目的端口和和源路由进行hash,就解决了这个问题。好像在后期思科ios加上的

Linux下traceroute使用心得

问题:

在命令行下输入:

traceroute www.google.com

屏幕打印是这样的:

traceroute to www.google.com (66.249.89.104), 30 hops max, 60 byte packets

1  * * *

2  * * *

3  * * *

4  * * *

5  * * *

没有得到任何中间路由器的信息。

分析:

traceroute的基本原理就是发出TTL字段为1-n的ip包,然后等待路由器的ICMP超时回复,进而记录

下来经过的路由器。通过man traceroute 可以看到,traceroute可以在ip包中放三种数据:

1) 使用UDP包(默认选项是-U)

2)使用TCP包 选项是-T

3)使用ICMP包 选项是-I

而且每个包traceroute都发3次。

分别用-T,-I选项试试。

发现TCP包时候也不行,但是-I选项是有效果的:

1  10.10.20.1 (10.10.20.1)  3.611 ms * *

2  * * *

3  10.10.10.1 (10.10.10.1)  3.590 ms * *

4  * * *

5  * * *

6  * * 61.130.125.25 (61.130.125.25)  10.914 ms

但貌似不是全部的中间路由ip,有些包丢失了。

进一步查看traceroute的选项,有一个-z项,基本意思是设置探测包的发送间隔,默认是0,就是连续发送。设置这个的目的

是因为有些路由器设置了icmp rate limit. 继续研究为什么路由器要设置icmp的发送速率。

google之:原来是为了应付DOS攻击,进而限制端口发出的icmp的速率。

既然清楚了,那就尝试下:

sudo traceroute -I www.google.com -z 0.005 -q 1

traceroute to www.google.com (66.249.89.104), 30 hops max, 60 byte packets

1  10.10.20.1 (10.10.20.1)  1.914 ms

2  10.10.20.1 (10.10.20.1)  2.109 ms

3  10.10.10.1 (10.10.10.1)  1.081 ms

4  115.238.62.113 (115.238.62.113)  2.468 ms

5  220.191.158.213 (220.191.158.213)  2.177 ms

6  61.130.125.25 (61.130.125.25)  2.016 ms

7  220.191.158.241 (220.191.158.241)  2.419 ms

8  202.97.55.5 (202.97.55.5)  4.757 ms

9  202.97.33.14 (202.97.33.14)  5.293 ms

10  202.97.33.2 (202.97.33.2)  5.161 ms

11  202.97.33.5 (202.97.33.5)  4.972 ms

12  202.97.5.138 (202.97.5.138)  41.524 ms

13  209.85.255.80 (209.85.255.80)  53.241 ms

14  209.85.249.195 (209.85.249.195)  68.928 ms

15  72.14.236.126 (72.14.236.126)  52.108 ms

16  66.249.89.104 (66.249.89.104)  48.105 ms

果真可以了。

如果想看具体traceroute发了什么包,路由器返回了什么包,可以用wireshark抓包看看.

linux怎么查看路由路径,linux traceroute追踪路由路径相关推荐

  1. Linux端口查看及常见Linux端口说明

    Linux端口查看及常见Linux端口说明 现在各行业对服务器安全管理特别严格,不管是内网服务还是公网对外开放端口,都要经过严格的安全扫描. 常见linux服务器端口启用查询命令: 该命令可列出系统正 ...

  2. Linux命令查看子进程命令,Linux基础命令——查看进程命令

    linux是一个 多进程   多用户的操作系统 ps(显示当前进程的状态) ps -ef  查看当前linux 进程 ps -ef | grep 'mysqld'  过滤mysql的进程 (grep  ...

  3. linux怎么做路由跟踪_Linux基础命令---traceroute追踪路由

    traceroute traceroute指令输出到目标主机的路由包.Traceroute跟踪从IP网络到给定主机的路由数据包.它利用IP协议的生存时间(TTL)字段,并试图在通往主机的路径上从每个网 ...

  4. centos7查看路由的命令_Linux traceroute追踪路由命令详解

    1.traceroute traceroute指令输出到目标主机的路由包.Traceroute跟踪从IP网络到给定主机的路由数据包.它利用IP协议的生存时间(TTL)字段,并试图在通往主机的路径上从每 ...

  5. traceroute追踪路由命令

    traceroute (Windows 系统下是tracert) 命令利用ICMP 协议定位您的计算机和目标计算机之间的所有路由器.TTL 值可以反映数据包经过的路由器或网关的数量,通过操纵独立ICM ...

  6. linux服务器查看wwn号,linux 下查看wwn号

    PC server主机与FC存储进行连接时,一般需要加装HBA卡,两者之间衔接的一个重要参数就是wwn号.redhat或suse下查看wwn号的方法如下. 一.SuSE Linux 9 查看 /pro ...

  7. Linux系统查看系统硬件,linux怎么查看系统硬件信息

    有时候想查看电脑中的系统硬件信息不知道怎么办下面是学习啦小编带来的关于linux怎么查看系统硬件信息的内容,欢迎阅读! linux怎么查看系统硬件信息? 查看cpu: lscpu命令,查看的是cpu的 ...

  8. linux下查看系统硬件,Linux 查看系统硬件信息 Linux 查看系统硬件信息(实例详解)...

    linux查看系统的硬件信息,并不像windows那么直观,这里我罗列了查看系统信息的实用命令,并作了分类,实例解说.html cpu lscpu命令,查看的是cpu的统计信息.linux blue@ ...

  9. linux怎么查看服务器主频,Linux环境下查看服务器硬件信息

    linux下查看硬件信息的指令,除了我们常见的比如/proc/cpuinfo,/proc/meminfo等,还有一个指令给大家介绍怎么查看硬件信息--dmidecode,希望对大家有点用处.dmide ...

  10. linux ps查看完整时间,Linux ps 命令查看进程启动及运行时间

    引言 同事问我怎样看一个进程的启动时间和运行时间,我第一反应当然是说用 ps 命令啦. ps aux或ps -ef不就可以看时间吗? ps aux选项及输出说明 我们来重新复习下ps aux的选项,这 ...

最新文章

  1. 赠书|零压力入门算法的顶流畅销书《漫画算法》
  2. 怎样隐藏“滚动条”?
  3. 正则表达式匹配Python解法
  4. matlab音频信号的采样与重构,信号与系统实验(MATLAB 西电版)实验21 综合实验2-音频信号的采样与重构.ppt...
  5. js 按给定数组的顺序给数组排序_JavaScript中如何如何给数组以及数组对象根据value值进行排序。...
  6. MySQL比较两个表数据差异,在t2表而不在t1表的数据
  7. JavaScript中清空数组的三种方式对比以及JavaScript常用数组操作方法
  8. Android HID触摸屏驱动怎么开发
  9. 洛谷题集——乒乓球(思维、乒乓球比赛规则)
  10. [吴道长作品]记一次不成熟的爬虫
  11. dne服务器没检测到有响应,设备或资源dns没检测到有响应 网络无法连接
  12. loadRunner之使用谷歌浏览器录制脚本
  13. HP G42-474TX在Win分区方法
  14. android 采集音频输出,Android系统分析之Audio音频流, 音频策略, 输出设备之间的关系...
  15. 武田在第11届国际霍奇金淋巴瘤研讨会上呈报霍奇金淋巴瘤数据
  16. 机器学习算法(一): 基于逻辑回归的分类预测③
  17. C++各种数据类型所占内存大小
  18. 喜报丨云和恩墨MogDB数据库与华为Taishan服务器完成兼容性认证
  19. [Python]... 和pass
  20. 视音频数据处理入门:H.264视频码流解析(java)

热门文章

  1. qq企业邮箱用php发送邮件,qq 企业邮箱 php群发邮件
  2. 技术研究 | 我所了解的物联网设备渗透手段(硬件篇)
  3. 任正非坚决反对年终奖:强调项目奖、及时奖
  4. 戴文的linux内核专题 24,戴文的Linux内核专题:26 配置内核 (22)
  5. 小鼠大脑解剖图分区_关于小鼠脑的各个功能区
  6. 2023年第八届数维杯大学生数学建模挑战赛 A题 河流-地下水系统水体污染研究
  7. 微信直播有哪些功能优势?
  8. TCP/IP、Http、Socket的区别
  9. mate10鸿蒙系统升级,华为Mate10怎么升级鸿蒙系统 Mate10升级鸿蒙系统教程
  10. 运维之道 | CentOS7.6 KVM虚拟机克隆(命令行+配置信息)