tcptraceroute与traceroute

tcptraceroute与traceroute1traceroute功能说明:显示数据包到主机间的路径。它默认发送的数据包大小是40字节。通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。工作原理Traceroute程序的…

大家好,又见面了,我是你们的朋友全栈君。

1 traceroute

功能说明:显示数据包到主机间的路径。它默认发送的数据包大小是40字节。
通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。

工作原理

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」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),traceroute 收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute 再送出另一个TTL是2 的datagram,发现第2 个路由器…… traceroute 每次将送出的datagram的TTL 加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通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其ip地址。
我们traceroute一台主机时,会看到有一些行是以星号*表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。每条后面有多个IP的,表示该节点有多个路由可供选择,三次测试中选择了不同的设备。

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

[root@ABC captain]# traceroute baidu.com
traceroute to baidu.com (111.13.101.208), 30 hops max, 60 byte packets
 1  * * *
 2  11.220.136.41 (11.220.136.41)  6.635 ms 11.220.136.105 (11.220.136.105)  6.963 ms 11.220.136.41 (11.220.136.41)  6.875 ms
 3  11.220.136.122 (11.220.136.122)  1.706 ms  2.076 ms 11.220.137.122 (11.220.137.122)  1.707 ms
 4  116.251.116.30 (116.251.116.30)  3.723 ms  3.731 ms 116.251.116.42 (116.251.116.42)  3.959 ms
 5  116.251.112.165 (116.251.112.165)  2.622 ms 101.200.109.146 (101.200.109.146)  2.499 ms 101.200.109.130 (101.200.109.130)  2.675 ms
 6  * * *
 7  39.156.0.54 (39.156.0.54)  4.207 ms 39.156.0.58 (39.156.0.58)  3.440 ms 39.156.0.54 (39.156.0.54)  4.531 ms
 8  * * *
 9  * * *
10  * 111.13.108.26 (111.13.108.26) 10.944 ms *
11  * * *
12  * * *
13  * * *

2 tcptraceroute

现代网络广泛使用防火墙,导致传统路由跟踪工具发出的(ICMP应答(ICMP echo)或UDP)数据包都被过滤掉了,所以无法进行完整的路由跟踪。尽管如此,许多情况下,防火墙会准许反向(inbound)TCP数据包通过防火墙到达指定端口,这些端口是主机内防火墙背后的一些程序和外界连接用的。通过发送TCP SYN数据包来代替UDP或者ICMP应答数据包,tcptraceroute可以穿透大多数防火墙

[root@ABC captain]# tcptraceroute baidu.com
Selected device eth0, address 172.17.241.229, port 56787 for outgoing packets
Tracing the path to baidu.com (111.13.101.208) on TCP port 80 (http), 30 hops max
 1  * * *
 2  11.220.136.41  7.192 ms  3.992 ms  3.373 ms
 3  11.220.136.122  2.434 ms  2.097 ms  2.102 ms
 4  116.251.105.73  1.713 ms  2.526 ms  2.090 ms
 5  * * *
 6  * 39.156.1.222 3.521 ms *
 7  39.156.0.54  6.565 ms  4.703 ms  4.671 ms
 8  111.13.188.38  5.150 ms  5.056 ms  5.005 ms
 9  * * *
10  * 111.13.112.61 6.056 ms  5.295 ms
11  * * *
12  * * *
13  111.13.101.208 [open]  5.161 ms  5.110 ms  5.122 ms

对比 traceroute,tcptraceroute最终到达了目的地,而traceroute 没有到达目的地。并且tcptraceroute将最终响应的那个设备标记为open。

注意:标记为open,对于检测劫持非常有用,劫持设备在客户端与服务器之间的某个位置。用tcptraceroute的时候,路由检测只会到达第一个代理设备就会返回,标记为open。这样可以明显的看出来是哪里发生了劫持。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151478.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 基于 vue 实现的电商后台管理系统

    基于 vue 实现的电商后台管理系统源码地址:https://github.com/Hero601/vue_shop后端接口:https://goal.lanzous.com/b01c5hhsb密码:5ees免费的小星星点一个吧~

    2022年5月6日
    76
  • android activity自动跳转,Android activity跳转之finish()方法的作用

    android activity自动跳转,Android activity跳转之finish()方法的作用最近在看郭神的《第一行代码(第2版)》,温故知新,看到有很多地方在页面跳转后还加了一句:finish();,原来像下面代码这样用Intent从Aactivity跳到Bactivity:Intentintent=newIntent(A.this,B.class);startActivity(intent);当成功跳到Bactivity的时候再点击返回键,就再次返回到了…

    2022年5月17日
    43
  • navicat15 密钥自动激活吗_在线激活

    (navicat15 密钥自动激活吗)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月30日
    187
  • SNMPWALK 命令「建议收藏」

    SNMPWALK 命令「建议收藏」SNMPWALK是一个通过SNMPGET-NEXT类型PDU,实现对目标AGENT的某指定MIB分支信息进行完整提取输出的命令工作。命令行:snmpwalk[选项]agent[oid]选项参数:由于SNMP协议中,不同的协议版本存在不同的参数选项,以下参数按协议分开说明。1.   普通选项a)   –h   显示帮助b)   –v1|2c|3

    2022年6月16日
    36
  • 为什么要了解计算机发展史,计算机发展史给我的启示

    为什么要了解计算机发展史,计算机发展史给我的启示计算机发展史给我的启示我们这个时代 是一个高速的信息时代 地球村 这个词早已不是新概念 我们现在真正做到了 秀才不出门全知天下事 而这些 归根结底是托了计算机的福了 计算机的发展我们的生活有了翻天覆地的变化 引领了一个新的时代 我很早接触计算机 但没想过了解它的发展史 更别提重大启示了 今天就简单的写点吧 最早的计算机起源于公元前 5 世纪 中国人发明的 就是算盘 并一直沿用至今 在某些运算上使用

    2025年7月4日
    3
  • SpringBoot项目打成war和jar的区别「建议收藏」

    SpringBoot项目打成war和jar的区别「建议收藏」首先给大家来讲一个我们遇到的一个奇怪的问题:1.我的一个springboot项目,用mvninstall打包成jar,换一台有jdk的机器就直接可以用java-jar项目名.jar的方式运行,没任何问题,为什么这里不需要tomcat也可以运行了?2.然后我打包成war放进tomcat运行,发现端口号变成tomcat默认的8080(我在server.port中设置端口8090)项目名称也…

    2022年5月10日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号