traceroute工具
traceroute是类Unix的命令工具,用于测试到网络上某台主机host的跳数以及延时情况。其运行原理是,通过发送指定TTL的UDP包给目的主机host,通过将TTL逐渐增大,就能收到一些ICMP包,这些包是从本机到host路径上的网关发出的,用于告知本机TTL已为0,即目的主机host不可达,从而得知路径上网关的跳数和延时情况。由于traceroute发出的是UDP数据包,每个包的端口号是逐渐上升的,可能是为了防止恰好碰到某个网关上的UDP服务,要是碰到了就可能回的不是ICMP包了,这一点有待验证!
具体的实现细节是这样的,先一次性发出3个TTL=1探测包,等待回复的ICMP包到达或者超时,将信息打印成一行,接着发出TTL=2的探测包,以此类推,直到TTL达到规定的上限(默认30跳)后终止运行。从这样的实现细节可以看出,它不能用于确定网络出现的情况,网络是千变万化的,经过的网段也复杂多样,两次同样指令的运行结果也可能非常不同,它一般只用来辅助判断网络状况。
使用方法
打印出traceroute的用法如下:
Usage:
traceroute [ -46dFITnreAUD ]
[ -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 ]
使用方法比较直观,看第一部分的[-46dFITnreAUDV],因为这部分选项不需要带参数,所以可以连着写。其他的都是有参数的,不能连着写。倒数第二行的host就是要追踪的主机,比如可以是www.baidu.com。最后一个参数[packetlen]是可选的,表示包的长度,我的机子默认是60B,一般不用太关心。
不带参数选项如下:
-4 ipv4。
-6 ipv6。
-d 打开socket层的debug。
-F 禁止分片。
-I 使用ICMP ECHO。
-T 使用TCP,默认端口80。
-n 不打印domaim。
-r
-e 显示ICMP扩展。
-A 在每个地址后面加个AS(autonomous system)标识,如果没有就显示[*]。
-U 使用UDP请求,默认端口53。
-D 使用DCCP(数据报拥塞控制协议)请求,默认端口33434。
带参数选项如下:
-f first_ttl 指定首个报文的TTL值,默认是1。
-m max_ttl 指定末个报文TTL值,默认是30。
-g gate,... 指定网关,可以多个。
-i device 指定网卡,默认应该是eth0。
-w waittime 指定等待探测响应时间,默认3秒。
-q nqueries 指定每个TTL发几个包,默认3个。
-p port 指定host的端口号。
-N squeries
-t tos
-l flow_label
-s src_addr
-z sendwait
--fwmark=num
上面常用的选项其实不多,大多都是使用默认的选项。输出的每一行可能是多种情况,对于发出的具有相同TTL值的包(默认3个),若回复的都是都是同一个网关,那么显示的结果就是一个IP后面带3个时间,像这样:
113.96.0.18 66.389 ms 85.115 ms 92.113 ms
如果回复的都是不同的网关(路径不是唯一的),那显示的结果就是每个IP后面各带一个时间,像这样:
14.29.121.186 114.796 ms 14.29.121.190 94.882 ms 14.29.121.186 119.937 ms
比较常见的显示结果还是三个*,那就是发出去的包在3秒内(默认)没有收到回复,这可能是丢包,也可能是网关在收到不想要的包会丢弃,直接把我们发的包给忽略掉。
还有显示得比较奇怪的,像这样5 * 113.96.251.61 37.077 ms *,表示第5跳的3个包中只有第2个包得到了回复,往返耗时37ms左右。也肯能是这样10 14.215.177.38 37.779 ms * 42.592 ms,表示第10跳的第2个包得不到回复,而第1和第3个包的回复来自相同站点。
TODO:具体发出的包是什么样的,待抓包分析。以上只是个人理解,等后面会熟练使用tcpdump了再来更新。
帮助
traceroute工具的更多相关文章
- Linux常用网络工具:路由扫描之traceroute
之前两篇<Linux常用网络工具:fping主机扫描>和<Linux常用网络工具:hping高级主机扫描>都是关于主机扫描的,本篇介绍Linux下常用的路由扫描工具tracer ...
- Linux 命令 - traceroute: 数据报传输路径追踪
traceroute 工具用于跟踪数据报的传输路径:当数据报从一台计算机传向另一台计算机时,会经过多重的网关,traceroute 命令能够找到数据报传输路径上的所有路由器.通过 traceroute ...
- [转]Traceroute网络排障实用指南(1)
注:本文是同事的大作,虽是翻译的一篇英文PPT,但内容实在精彩,小小的Traceroute竟包含如此大的信息量,真是让人感慨!内容不涉及公司机密,所以一直想转到自己的Blog上来,自己需要时可以再翻阅 ...
- tracert和traceroute介绍
一.tracert和traceroute简介 相同点:都是用来跟踪路由,帮助排查问题,关注的是过程,而ping关注的是结果 不同点:tracert请求是icmp echo报文 traceroute请求 ...
- 理解 OpenStack 高可用(HA)(3):Neutron 分布式虚拟路由(Neutron Distributed Virtual Routing)
本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...
- 路由知识之ip route 命令中的疑惑
1.基础知识 1.1 路由 (Routing) 1.1.1 路由策略 (使用 ip rule 命令操作路由策略数据库) 基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目 ...
- linux路由表命令
转自此大神http://www.cnblogs.com/gunl/archive/2010/09/14/1826234.html 留在好查阅 linux 路由表维护 查看 Linux 内核路由表 使用 ...
- 【转】一个高端.NET技术人才的2014年度总结
[转]一个高端.NET技术人才的2014年度总结 本人在一家公司做技术负责人.主要从事的是.net方面的开发与管理,偏重开发. 弹指一挥间,时间飘然而过,转眼又是一年. 回顾2014年,是我人生中最 ...
- iOS逆向环境以及常用命令行(逆向一)
一.环境介绍 越狱环境:iPhone 5s iOS9.3.1 yueyu:~ root# uname -a Darwin yueyu 15.4.0 Darwin Kernel Version 15.4 ...
随机推荐
- 2018南京icpc现场赛心得
第一次参加icpc的比赛,也是第一块奖牌,虽然只是铜,但其实打的已经很好了,稍微差一点就可以摸银了. 之前参加省赛,成为那次比赛我校唯一一个没拿奖的队伍,其实还是一直都有一些心结的,而这段时间和新的队 ...
- ssh无密码登录和scp无密码拷贝
目的:在A主机上无密码登录B主机 方法: A主机生成密钥:ssh-keygen -t rsa 将密钥复制到B主机:cat ~/.ssh/id_rsa.pub | ssh root@B 'cat > ...
- Redis在windows下的配置
Redis在windows下的配置(在windows-64下安装redis,请参考微软redis的github:https://github.com/MSOpenTech/redis/releases ...
- oracle 查看一个表中的记录是否被锁住
SELECT a.object_id, a.session_id, b.object_nameFROM v$locked_object a, dba_objects bWHERE a.object_i ...
- NFS 网络文件系统
1, NFS存储服务概念介绍 NFS是Network File System的缩写,中文意思是网络文件系统, 它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录 ...
- HTML5之WebSocket && https://zhuanlan.zhihu.com/p/23467317
在认识websocket之前,我们必须了解的是websocket有什么用? 他能解决我们遇到的什么问题? 如果没用,那么我们就么有使用它的必要的. websocket就是建立起全双工协议的,提高了效率 ...
- hibernate框架的搭建
1 导入所需的jar包 1 导入hibernate必须的jar包 2 导入驱动包 2 创建数据库,准备表,实体 1 创建hibernate数据库 CREATE DATABASE hibernate; ...
- linux安装PHP加速器eAccelerator
感慨下:做前端开发不少日子了,在前公司也使用过一段时间linux系统,对apache配置比较熟悉,可是对nginx配置还是不熟悉,毕竟自己是做前端开发的,大后端的事情还是比较排斥,以后多练习.前些日子 ...
- codeigniter读取数据库的公共配置并全局缓存的实现方案
引言 学习CodeIgniter大概有几天了.从第一天了解后,对CI情有独钟,比较符合我的风格.其实一直以来对框架这块不太敏感.自己长时间的开发,也有一套自己的开发风格和习惯.但是这年头,你说你不会框 ...
- 《腾讯游戏人生》微信小程序开发总结
为打通游戏人生擂台赛与线下商家的O2O衔接,同时响应时下日臻火热的微信小程序,项目团队决定也开发一款针对性的微信小程序,以此方便商家在我们平台入驻并进行擂台赛事的创建和奖励的核销,进一步推广擂台赛的玩 ...