深入理解Traceroute程序
来源:互联网 发布:windows常用mib oid 编辑:程序博客网 时间:2024/05/14 00:18
Traceroute的命令参数:
-n : 可以不必进行主机的名称解析,单纯使用IP,速度较快;
-U :使用UDP的port 33434来进行检测,这是默认的检测协议;
-I :使用ICMP的方式来进行检测;
-T :使用TCP来进行检测,一般使用port 80测试;
-w timeout: 若对方主机在几秒内没有回应就声明不通,默认是5秒
-p port:若不想使用UDP与TCP的默认端口号来检测,可在此改变端口号;
-i device:当自己的主机有多个网络接口时,可在此指明使用的接口;
-g gateway:宽松的源站选路。指定路线中的路由;
作用:Traceroute最早是由Van Jacobson在1988写出的小程序。可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由及RTT(往返时间)。
原理:Traceroute程序的设计是利用ICMP及IP header的TTL。首先,traceroute发出一个TTL等于1的IP datagram(20字节IP首部+8字节UDP首部+32字节的数据=60字节)到目的地,当路径上的第一个路由器(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消息
1. 使用UDP检测。
a)源主机发出IP[UDP[data]] packet, 源主机 port使用随机的任何大于32768的高段port, 目的 port从33434开始每送个program依此递增,直至33434+29,(cisco router上使用extended-traceroute命令可以修改这个起始的33434 port #),
同时TTL从1开始依此递增,直至1+29=30(最多送30个probe)。中间的router送回 ICMP TTL-expired,使得source得知了中间的每一个router,最后的目的主机送回TTL-expired 和ICMP port unreachable (因为任何主机上都没有应用使用UDP port# >32768这样的高段port )。
b)由于中间某处路由封掉UDP port>32768的回显导致traceroute不工作 ;封掉TTL超时会使源主机看不到中间的router (有的router根本不支持回送TTL超时);封掉type3 code3可能看不到目的主机 .
由于回送TTL-expired的信息需要CPU生成一个packet,必须打断 CPU,为保证其它工作的正常进行,cisco router每隔一秒才处理traceroute ,所以在source 上你可能看到中间一路 * * *,但却看得到最后的destination. 这是中间的router CPU太忙或者中间路由器不回送TTL-expired包的原因.所以使得UDP数据包在TTL为17以后均被丢弃,导致以下发出的数据报均被丢弃,而显示
17 * * 18 * 19 * 20 * 21 * 22 * 23 * *
24 * * 25 * 26 * 27 * 28 * 29 * 30 * *
2. 使用TCP检测。
a)由于现在很多防火墙都过滤掉了使用UDP和ICMP的traceroute检测包,所以使用TCP检测可以得到较为完整的路由。
3. 使用ICMP检测。
a) IP[ICMP[Request],第一个request的TTL为1,第二个request的TTL为2,以后依此递增直至第30个;中间的router送回ICMP TTL-expired ( ICMP type 11)通知源主机,(packet同时因TTL超时而被丢弃),由此源主机知晓一路上经过的每一个router;最后的 目的主机送回ICMP Echo Reply 。
所以中间任何一个router上如果封了ICMP Echo Request , traceroute就不能工作 ;如果封了type 11 (TTL-expired), 中间的router全看不到 ,但能看到packet 到达了最后的目的主机;如果封了ICMP Echo Reply,中间的全能看到,最后的目的主机看不到 。
- 深入理解Traceroute程序
- Traceroute程序
- traceroute程序
- traceroute程序
- Traceroute程序
- 深入理解控制台程序
- 深入理解控制台程序
- 深入理解控制台程序
- 深入理解程序构造
- “Traceroute”程序知多少
- (8)Traceroute程序
- traceroute程序剖析
- traceroute程序的实现
- 98-traceroute 程序
- 深入理解程序生成过程
- 深入理解程序的结构
- traceroute程序-c语言实现
- 7、Ping和Traceroute程序
- JAVA学习笔记-基本输入输出示例
- 2015.4.3微软在线笔试第二题
- NYOJ 1186 心理阴影(两个圆环的相交面积)
- Eclipse安装插件支持jQuery,Js智能提示
- 典型程序实现代码汇总(1)
- 深入理解Traceroute程序
- 杭电 HDU ACM 5186 zhx's submissions
- 防止用户不登录帐号密码,直接访问登录后的页面
- nova event机制分析
- iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)
- GLSL 做一个动态的火苗
- 你不知道的margin
- C++Builder操作Excel
- 【自考】操作系统之设备管理