通过traceroute 我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上 来说大部分时候所走的路由是相同的。Linux 系统中个,我们称之为 tracertoute,在 MS  Windows 中为 tracert。 traceroute 通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称及其IP地址。

  在大多数情况下,我们会在 Linux 主机系统下,直接执行命令行。

  traceroute   hostname

  而在 Windows 系统下是执行 tracert 的命令:

  tracert  hostname

  1.命令格式:

    traceroute  [参数]  [主机]

  2.命令功能:

    traceroute   指令让你追踪网络数据包的路由途径,预设数据包大小是40 Bytes, 用户可另行设置。

    具体参数格式:traceroute   [-dFlnrvx] [-f<存活数值>] [-g<网关>][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]

  3.命令参数

  -d  使用socket 层级的排错功能

  -f  设置第一个检测数据包的存活数值TTL的大小

  -F  设置勿离段位 ----我也不知道啥是勿离段位,查了下没查到什么信息^^

  -g  设置来源路由网关,最多可设置8个

  -i  使用指定的网络界面送出数据包

  -I  使用ICMP回应取代UDP资料信息

  -m  设置检测数据包的最大存活数值TTL 的大小

  -n  直接使用IP地址而非主机名称

  -p  设置UDP传输协议的通信端口

  -r  忽略普通的routing table ,直接将数据包送到远端主机上

  -s  设置本地主机送出数据包的IP地址

  -t  设置检测数据包的TOS数值

  -v  详细显示指令的执行过程

  -w  设置等待远端主机回报的时间

  -x  开启或关闭数据包的正确性检验

  4.使用实例:

  实例1:traceroute  用法简单,最常用的用法

  命令:traceroute  www.google.com

  说明:

    记录按序列号从1开始,每个记录就是一跳,每跳表示一个网关,我们看到每行有三个时间,单位是 ms,其实就是 -q 的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用  traceroute -q  4  www.google.com, 表示向每个网关发送4个数据包

  有时我们 traceroute 一台主机时,会看到有一些行是以星号表示的。出现这种情况,可能是防火墙封掉了 ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。

  有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因,当然如果某台DNS出现问题时,不能解析主机名、域名时,也会有延时长的现象;您可以加 -n  参数来避免DNS 解析,以 IP格式 输出数据。

  如果在局域网中的不同网段之间,我们可以通过 traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到 traceroute 追踪数据包所经过的网关,提交 IDC 服务商,也有助于解决问题;但目前看来国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。

  实例2:跳数设置

  命令:

    traceroute  -m  10 www.baidu.com   

  实例3:只显示IP 地址,不查主机名DNS

  命令:  traceroute  -n   www.baidu.com

  实例4:探测包使用的基本UDP端口设置6888

  命令:  traceroute  -p   6888   www.baidu.com

  实例5:把探测包的个数设置为4个

  命令:traceroute  -q  4  www.baidu.com

  实例6:绕过正常的路由表,直接发送到网络相连的主机

  命令:traceroute  -r   www.baidu.com

  实例7:把对外发探测包的等待响应时间设置为3秒

  命令:traceroute    -w   3   www.baidu.com

>>>>>>>>说明一下  traceroute 的工作原理>>>>>>>>>>>>>>

  traceroute 程序的设计是利用 ICMP 及IP header  的TTL(time to  live)栏位(field)。首先,traceroute 送出一个 TTL 是1 的IP  datagram(每次送的的是3个  40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器(router)收到这个 datagram 时,它将TTL减少 1,此时,TTL变为0了,所以该路径会将次 datagram 丢掉,并送回一个 【ICMP time exceeded】消息,traceroute 收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute 再送出另一个 TTL为 2 的 datagram ,发现第二个路由器,然后一直重复执行这种操作,直到某个datagram 抵达目的地。

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

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

>>>>>>>>>>>>>>>

  windows下的tracert ,原理和效果都是一样的

tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name

参数说明:

tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name

该诊断实用程序通过向目的地发送具有不同生存时间 (TL) 的 Internet 控制信息协议 (CMP) 回应报文,以确定至目的地的路由。路径上的每个路由器都要在转发该 ICMP 回应报文之前将其 TTL 值至少减 1,因此 TTL 是有效的跳转计数。当报文的 TTL 值减少到 0 时,路由器向源系统发回 ICMP 超时信息。通过发送 TTL 为 1 的第一个回应报文并且在随后的发送中每次将 TTL 值加 1,直到目标响应或达到最大 TTL 值,Tracert 可以确定路由。通过检查中间路由器发发回的 ICMP 超时 (ime Exceeded) 信息,可以确定路由器。注意,有些路由器“安静”地丢弃生存时间 (TLS) 过期的报文并且对 tracert 无效。

参数:

-d 指定不对计算机名解析地址。

-h maximum_hops 指定查找目标的跳转的最大数目。

-jcomputer-list 指定在 computer-list 中松散源路由。

-w timeout 等待由 timeout 对每个应答指定的毫秒数。

target_name 目标计算机的名称。

一个linux命令(6/13):traceroute命令的更多相关文章

  1. linux命令总结之traceroute命令

    通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一 ...

  2. Linux服务架设篇--traceroute命令

    作用: 查看数据包在传输过程中经过了哪些IP地址的路由器.网关. 工作原理: 首先向远程主机发送TTL为1的UDP数据包,按照协议规定,路由器收到数据包,TTL值减1,这时TTL就为0,路由器就会丢弃 ...

  3. Git 常用命令 【13个命令包含git 90%的操作】

  4. 【转载】每天一个Linux命令

    目  录 每天一个linux命令(1)  : ls 命令 每天一个linux命令(2)  : cd 命令 每天一个linux命令(3)  : pwd 命令 每天一个linux命令(4)  : mkdi ...

  5. 每天一个linux命令(55):traceroute命令

    通过traceroute​我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不 ...

  6. 每天一个linux命令(47):traceroute命令

    通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一 ...

  7. 每天一个linux命令:traceroute命令

    通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一 ...

  8. 【转】每天一个linux命令(55):traceroute命令

    原文网址:http://www.cnblogs.com/peida/archive/2013/03/07/2947326.html 通过traceroute我们可以知道信息从你的计算机到互联网另一端的 ...

  9. 每天一个linux命令(13):less命令

    1.命令简介 less(less)  命令可以对文件或其它输出进行分页显示,与moe命令相似,但是比more命令要强大许多.应该说是linux正统查看文件内容的工具. 2.用法 less [选项].. ...

  10. 每天一个linux命令:more(13)

    more more命令是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作.more名单中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻 ...

随机推荐

  1. 天地币:所用到的 Android Socket 通讯编程技术试验

    1.为了开发"天地币"这个Android手机项目,须要用到Socket编程. 2.天地币是一种类似于比特币的虚拟货币. 3.为了赚取CSDN的C币,须要写篇博客. 4.干脆将调试S ...

  2. C语言程序设计-同一天生日[综合应用]

    [问题描述] 在一个有200人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的学号,出生月日,试找出所有生日相同的学生. [输入形式] 第一行为整数n,表示有n个学生,n<=200. ...

  3. C#中单例的双重锁定模式

    from:https://blog.csdn.net/sinat_20559947/article/details/48311915 using System; using System.Collec ...

  4. [LintCode] A + B 问题

    Bit-by-Bit summation: class Solution { public: /* * @param a: The first integer * @param b: The seco ...

  5. Java获取当前服务器IP

    package hope.ipaddress.demo; import java.net.InetAddress; import java.net.NetworkInterface; import j ...

  6. Linux下RTL8723BE无线网卡驱动问题解决方法

    的RT723BE这款无线网卡模块真是坑爹,岂止是坑爹,简直就是坑爹...... lspci -vnn 看网卡型号 一.安装问题: sudo apt-get install linux-headers- ...

  7. JAVA源码之JDK(三)——String、StringBuffer、StrinBuilder

    Java中,除了8种基本类型,最长用的应该就是String类了.那么我们来看看JDK中的源码是怎么建造String.StringBuffer.StrinBuilder一系列类的. java.lang. ...

  8. Understanding Tensorflow using Go

    原文: https://pgaleone.eu/tensorflow/go/2017/05/29/understanding-tensorflow-using-go/ Tensorflow is no ...

  9. Kubernetes资源创建yml语法

    前言 在是用kubernetes中,我们对资源的创建大部分都是通过 1 kubelet create -f RESOURCE.yaml 刚开看的时候不免有一些迷茫,看不懂语法,不知道怎么写:今天本文就 ...

  10. delphi xe -芒果数据库(FDConnection,DataSource,FDMongoQuery,FDMongoDataSet)连接,查询(展示数据),这里有mongodb为例子

    一.连接 1.FDConnection:创建一个临时连接定义 资料:http://www.cnblogs.com/zhenfei/p/4105515.html 连接芒果数据库:选则Mongo(芒果), ...