欢迎各位兄弟 发布技术文章
这里的技术是共享的
# traceroute www.baidu.com
traceroute命令用于显示数据包到主机间的路径,预设数据包大小是40Bytes。
安装命令: yum install traceroute
命令格式: traceroute [-46dFITUnreAV] [-f 存活数值] [-g 网关] [-i 网络界面] [-m 存活数值] [-p 端口] [-s 来源地址]
[-q 探测包数] [-N 探测报文数] [-t 服务类型] [-l flow_label] [-w 超时秒数] [-z 最小时间间隔] [-UL] [-D]
[-P 协议] [--sport=源端口] [-M 指定方法] [-O 方法特定的选项] [--mtu] [--back] 主机名称或IP地址 [数据包大小]
option:
-4、-6:明确强制使用IPv4或IPv6跟踪。 默认情况下,程序将尝试解析给定的名称,并自动选择适当的协议。 如果解析主机名同时返回IPv4和IPv6地址,请跟踪路由将使用IPv4
-I --icmp:使用ICMP ECHO进行探测
-T --tcp:使用TCP SYN进行探测
-d --debug:启用套接字级别调试(Linux内核支持时)
-F --dont-fragment:不对探测数据包进行分段
-f --first=first_ttl:指定从哪个TTL开始。 默认为1
-g --gateway=gateway:告诉traceroute向传出数据包添加一个IP源路由选项,该选项告诉网络通过指定的网关路由数据包
-i --interface=interface:指定跟踪路由应通过其发送数据包的接口。默认情况下,根据路由表选择接口
-m --max-hops=max_ttl:指定traceroute将探测的最大跃点数(最长生存时间值)。默认值为30
-N --sim-queries=squeries:指定同时发送的探测数据包数。同时发送几个探测可以大大加快traceroute的速度。默认值为16。请注意,某些路由器和主机可以使用ICMP速率限制。在这种情况下,指定太大的数字可能会导致某些响应丢失
-n:显示IP地址时不要尝试将其映射到主机名
-p --port=port:对于UDP跟踪,指定基本跟踪路由将使用的目标端口(目标端口号将由每个探测递增)。对于ICMP跟踪,指定初始ICMP序列值(每个探测也递增)。对于TCP和其他协议,只指定要连接的(常量)目标端口。
-t --tos=tos:对于IPv4,设置服务类型(TOS)和优先级值。有用的值是16(低延迟)和8(高吞吐量)。请注意,为了使用某些TOS优先级值,您必须是超级用户。对于IPv6,设置流量控制值。
-l --flowlabel=flow_label:对IPv6数据包使用指定的流量标签
-w --wait=waittime:设置等待探测器响应的时间(秒)(默认为5.0秒)。
-q --queries=nqueries:设置每个跃点的探测数据包数。默认值为3。
-r:绕过常规路由表,直接发送到连接网络上的主机。如果主机不在直连网络上,则返回错误
-s --source=source_addr:选择另一个源地址。请注意,您必须选择其中一个接口的地址。默认情况下,使用传出接口的地址
-z --sendwait=sendwait:两次探测之间的最小时间间隔(默认为0)。 如果该值大于10,则以毫秒为单位指定一个数字,否则以秒为单位(也允许使用浮点值)。 当某些路由器对ICMP消息使用速率限制时很有用。
-e, --extensions:显示ICMP扩展(rfc4884)。 通用格式为CLASS / TYPE:后跟十六进制转储。 所示的是MPLS(rfc4950)的解析形式:MPLS:L = label,E = exp_use,S = stack_bottom,T = TTL(更多对象用/分隔)。
-A, --as-path-lookups:在路由注册表中执行AS路径查找,并在相应地址后直接打印结果
-V, --version:输出版本信息
--sport=port:选择要使用的源端口
-M method, --module=name:使用指定的方法进行traceroute操作。 默认的传统udp方法的名称为default,icmp(-I)和tcp(-T)的名称分别为icmp和tcp。
特定于方法的选项可以由-O传递-O option, --options=options:指定一些方法特定的选项。 多个选项用逗号分隔
-U, --udp:使用UDP到特定的目标端口进行路由(而不是增加每个探针的端口)。 默认端口为53(dns)。
-UL:使用UDPLITE进行路由(默认端口为53)
-D --dccp:使用DCCP请求进行探测。
-P --protocol=protocol:使用指定协议的原始数据包进行路由。 默认协议是253
--mtu:沿着被追踪的路径发现MTU
--back:当向后跳跃的次数与向前跳跃的次数不同时,打印向后跳跃的次数。假设远程跃点发送的回复包的初始ttl设置为64、128或255(这似乎是一种常见的情况),那么就可以猜出这个数字
来自 https://www.kancloud.cn/chunyu/php_basic_knowledge/2106516
源端首先发送 3 个 TTL 字段的值都为 1 的 UDP 数据报给远程设备,使用随机的任何大 于 32768 的端口地址作为目标设备的接受报文端口,TTL 为 1 的数据报到达第一跳路由器以后 随即超时,路由器响应源设备一个 ICMP 的超时报文,之后源端再发送 3 个 UDP 数据报, 这次更改 TTL 值为 2,即经过 2 个路由器以后,响应源端 ICMP 超时报文,依次类推,直到 这些 UDP 报文到达了目标设备。
在大多数情况下,作为网络工程技术人员或者系统管理员会在UNIX主机系统下,直接执行命令行:
Traceroutehostname
而在Windows系统下是执行Tracert的命令:
Tracerthostname
一、默认使用的是UDP协议(30000以上端口)
二、使用TCP协议
-T -p
三、使用ICMP协议
-I
四、实战
traceroute: /usr/bin/traceroute /usr/share/man/man8/traceroute.8.gz
来自 https://baijiahao.baidu.com/s?id=1725632213389212194&wfr=spider&for=pc
traceroute可以利用ICMP协议定位到一台计算机与另一台计算机之间的所有路径。它在DOS系统下的命令是tracert。接下来小编详细的解释一下tracert在Windows下用法与原理
打开命令控制台。输入tracert,如图
这里的参数,就不一一介绍了。我举一个最基础的来说明,就是直接在tracert后面加域名,比如tracert www.baidu.com。如图
我们看到返回一些记录,因为每一个记录表示经历了一个网关。那些ms(毫秒)是探测数据包向每个网关发送3个数据后网关响应后返回的时间。那些“*”则说明是防火墙封掉了ICMP的返回信息
我们试着用试探器来分析一下,我们发现和在DOS下的返回命令非常吻合。其实就是发送一个64字节的空包通过ICMP的协议给一台服务器,经历网关与防火墙之后,返回大小为56的数据包。这些数据包的大小是我们指定的
tracert在Linux下traceroute命令是traceroute[参数][主机],与Windows是一样的。我就不介绍了
来自 https://jingyan.baidu.com/article/6fb756ecc34440651958fb5c.html