Traceroute和tracert的原理分析实验
tracert路由追踪原理

tracert路由追踪原理摘要:一、引言二、tracert 路由追踪原理介绍1.路由追踪的基本概念2.tracert 的工作原理3.tracert 的实现方式三、tracert 路由追踪的实际应用1.故障诊断2.网络优化4.网络安全四、tracert 路由追踪的发展趋势1.技术的不断进步2.应用领域的拓展3.tracert 的未来展望正文:一、引言随着互联网的飞速发展,网络已经成为现代人生活、工作、学习的重要组成部分。
然而,网络的复杂性使得人们在享受便利的同时,也面临着诸多挑战。
tracert 路由追踪作为一种常用的网络诊断工具,可以帮助我们了解网络的运行状况,解决潜在问题,提升网络性能。
二、tracert 路由追踪原理介绍1.路由追踪的基本概念路由追踪,顾名思义,就是跟踪数据包在网络中的传输路径。
通过记录数据包经过的各个路由器,我们可以了解网络的拓扑结构,找出可能存在的问题。
2.tracert 的工作原理tracert(Windows 系统下称为“tracert”)是一种基于ICMP 协议的网络诊断工具。
它通过发送一系列的ICMP echo 请求数据包,并记录这些数据包经过的路由器,最终返回给用户一个详细的报告。
报告中包含了数据包的发送时间、接收时间、延迟时间以及经过的路由器等信息。
3.tracert 的实现方式tracert 的实现方式主要有两种:一种是基于ICMP 协议的,如上面所述;另一种是基于UDP 协议的,也称为“ping”。
虽然它们的工作原理不同,但目的都是相同的,即获取网络中各个节点的响应时间,从而了解网络的状况。
三、tracert 路由追踪的实际应用1.故障诊断当网络出现问题时,我们可以利用tracert 工具来定位故障点。
通过分析tracert 报告,我们可以发现数据包在网络中的传输路径,找出可能存在问题的路由器或链路。
2.网络优化tracert 可以帮助我们了解网络的性能瓶颈,从而有针对性地进行优化。
实验五-IP协议分析

实验五IP协议分析在这个实验里,我们将研究IP协议,通过执行traceroute程序来分析IP数据包发送和接收的过程。
我们将研究IP数据包的各个字段,详细学习IP数据包的分片。
一、捕获traceroute为了产生一个IP数据包,我们将使用traceroute程序来向一些目的地发送不同大小的数据包,这个软件我们在第一个实验已作过简单的尝试了。
但我们试图在IP头部首先发送一个或者更多的具有TTL的数据包,并把TTL的值设置为1;然后向同一个目的地发送一系列具有TTL值为2的数据包;接着向同一个目的地发送一系列具有TTL值为3的数据包等等。
路由器在每次接收数据包时消耗掉一个TTL,当TTL达到0时,路由器将会向源主机返回一个ICMP的消息(类型为11的TTL溢出),这样一个TTL值为1的数据包将会引起路由器从发送者发回一个ICMP的TTL溢出消息产生一跳,TTL值为2的数据包发送时会引起路由器产生两跳,TTL值为3的数据包则会引起路由器产生3跳。
基于这种方式,主机可以执行traceroute观察ICMP的TTL溢出消息,记录每个路由器的ICMP的溢出消息的源IP地址,即可标识出主机和目的地之间的所有路由器。
我们要运行traceroute让它发送多种长度的数据包,由Windows提供的tracert程序不允许改变由tracert程序发送的ICMP的回复请求消息的大小,在Windows下比较好的一个是pingplotter,它可以在以下网站下载共享版本(现在已下载好存在共享文件夹的压缩包中):安装pingplotter标准版(你有一个30天的试用期),通过对你所喜欢的站点执行一些traceroute来熟悉这个工具。
ICMP回复请求消息的大小可以在pingplotter中设置:Edit-> Options->Default Setting->enginet,在packet size字段中默认包的大小是56字节。
traceroute实验报告

信息工程学院盐城师范学院毕业论文(设计)基于ICMP的MyTraceRoute探测程序及其应用学生姓名沈晓玲学院信息科学与技术学院专业网络工程班级网络工程13(2)学号 13263408指导教师曹莹莹2016年 6月30日基于ICMP的MyTraceRoute探测程序及其应用摘要traceroute程序是进行网络测量的常用工具之一,通过用于异构网络的TCP/IP协议进行网间通信。
程序利用增加存活时间(TTL)值来实现其功能的。
每当数据包经过一个路由器,其存活时间就会减1。
当其存活时间是0时,主机便取消数据包,并传送一个ICMP TTL数据包给原数据包的发出者。
原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据包套接字只能读取UDP协议的数据。
因此,如果要访问其他协议发送数据必须使用原始套接字。
原始套接字是,它实现于系统核心,普通的套接字无法处理icmp,igmp等网络报文,而原始套接字可以。
Traceroute程序是进行测量的常用工具之一,Traceroute功能可以通过很多协议实现,其原理是借助ICMP的超时差错报文来反馈路径信息。
【关键词】traceroute 网络通信原始套接字 ICMP的超市差错报文MyTraceRoute detection program based on ICMPand its applicationabstractTraceroute program is one of the commonly used tools for network measurement, through the TCP/IP protocol for heterogeneous network network communication.The program uses an increased survival time (TTL) value to achieve its function. When the packet passes through a router, its survival time will be reduced by 1. When the survival time is 0, the host will cancel the packet, and send a TTL ICMP packet to the sender of the original data packets. The original socket can read and write the kernel without processing the IP packet, and the stream socket can only read the data of the TCP protocol, the data packet socket can only read the data of UDP protocol. Therefore, if you want to access other protocols to send data must use the original socket. Original socket is, it is realized in the system core, ordinary sockets can not handle ICMP, IGMP and other network packets, and the original socket can be.Traceroute program is one of the commonly used tools for measurement, Traceroute function can be achieved through a lot of protocols, the principle is to use the ICMP timeout error messages to feedback path information.【Key words】traceroute network communication original socket ICMP supermarket error message目录1traceroute的概念原理以及软件环境 (4)1.1traceroute的概念 (4)1.2traceroute的概念及原理 (4)1.3设计的软件环境 (4)2设计过程和内容 (4)2.1实现原理 (4)2.2实验要求 (4)2.3实验内容 (5)3实验分析 (5)4实验中用到的函数总结 (6)4.1原始网络套接字网络功能框架 (6)4.2本试验中用到的函数,及函数的功能 (6)5在实验中用到的函数代码 (7)6实验结果截图 (11)7实验遇到的问题 (14)总结 (18)收获 (18)题目:基于ICMP的MyTraceRoute探测程序及其应用1traceroute的概念原理以及软件环境1.1traceroute的概念traceroute程序是进行网络测量的常用工具之一,通过用于异构网络的TCP/IP 协议进行网间通信。
tracert和traceroute介绍

tracert和traceroute介绍⼀、tracert和traceroute简介相同点:都是⽤来跟踪路由,帮助排查问题,关注的是过程,⽽ping关注的是结果不同点:tracert请求是icmp echo报⽂ traceroute请求是UDP的报⽂,⽬标端⼝是30000以上随机端⼝⼆、tracert使⽤到三种报⽂icmp echo request #icmp Type0,客户端发起报⽂,traceroute使⽤udp报⽂发起icmp echo replay #icmp Type 8到了⽬标地址,未禁ping,回复此报⽂icmp time-exceeded #icmp Type11,经过的路由回复报⽂(到此路由ttl=1或0回复给客户端)三、traceroute使⽤的三种报⽂UDP随机端⼝发起请求#icmp Type0,客户端发起报⽂,traceroute使⽤udp报⽂发起icmp time-exceeded #icmp Type11,经过的路由回复报⽂(到此路由ttl=1或0回复给客户端)icmp unreachable #icmp Type3(Destination unreachable),到了⽬标地址,未禁ping,回复此报⽂四、tracert原理1.tracert送出⼀个TTL是1的ICMP echo request数据包a到⽬的地2.当路径上的第⼀个路由器收到这个数据包a时,它将TTL减13.TTL变为0,该路由器会将此数据包丢掉,并送回⼀个「ICMP time exceeded」消息4.tracert 收到这个消息后,再送出另⼀个TTL是2 的数据包,发现第2 个路由器5.当数据包到达⽬的地后,⽬标会送回⼀个icmp echo reply(前提是⽬标未禁ping)ps:tracert 有⼀个固定的时间等待响应(ICMP TTL到期消息)。
如果这个时间过了,它将打印出⼀系列的*号,表明在这个路径上,这个设备不能在给定的时间内发出ICMP TTL到期消息的响应。
路由追踪程序traceroutetracert分析与科普

路由追踪程序traceroutetracert分析与科普⼀、路由追踪程序traceroute/tracertTraceroute是Linux和Mac OS等系统默认提供的路由追踪⼩程序,Tracert是Windows系统默认提供的路由追踪⼩程序。
⼆者的功能相同,都能探测数据包从源地址到⽬的地址经过的路由器的IP地址。
Traceroute/Tracert的实现都借助了TTL:通过向⽬的地址发送⼀系列的探测包,设置探测包的TTL 初始值分别为1,2,3…,根据返回的超时通知(ICMP Time Exceeded Message)得到源地址与⽬的地址之间的每⼀跳路由信息。
虽然两者输出结果⼀致,但在实现原理上还有着显著的差别。
⼆、Traceroute实现原理1. 从源地址发出⼀个UDP探测包到⽬的地址,并将TTL设置为1;2. 到达路由器时,将TTL减1;3. 当TTL变为0时,包被丢弃,路由器向源地址发回⼀个ICMP超时通知(ICMP Time Exceeded Message),内含发送IP包的源地址,IP包的所有内容及路由器的IP地址;4. 当源地址收到该ICMP包时,显⽰这⼀跳路由信息;5. 重复1~5,并每次设置TTL加1;6. 直⾄⽬标地址收到探测数据包,并返回端⼝不可达通知(ICMP Port Unreachable);7. 当源地址收到ICMP Port Unreachable包时停⽌traceroute。
注:1. Linux和Mac OS等系统使⽤UDP包进⾏探测,⽬标端⼝号默认为33434,每次探测⽬标端⼝号加1。
Traceroute故意使⽤了⼀个⼤于30000 的⽬标端⼝号,以保证⽬标地址收到数据包后能够返回⼀个“端⼝不可达”的 ICMP 报⽂,于是源地址就可将端⼝不可达报⽂当作跟踪结束的标志。
2.Traceroute每跳默认发送3个探测包(发包的数量可通过-q进⾏设置),探测包的返回会受到⽹络情况的影响。
网络命令实验报告结论(3篇)

第1篇一、实验目的本次实验旨在通过实际操作,使学生掌握基本的网络命令,提高网络操作能力,为今后网络管理、维护及网络安全打下基础。
二、实验内容1. IP地址与子网掩码的计算2. ping命令的使用3. tracert命令的使用4. nslookup命令的使用5. netstat命令的使用6. route命令的使用7. ipconfig命令的使用三、实验过程1. IP地址与子网掩码的计算在实验过程中,我们学习了如何根据IP地址和子网掩码计算出网络地址、广播地址和可用主机地址。
通过实际操作,我们掌握了IP地址与子网掩码的计算方法,为后续网络配置奠定了基础。
2. ping命令的使用ping命令用于测试网络连接是否正常。
在实验中,我们通过ping本机IP地址、局域网内其他设备IP地址以及公网IP地址,验证了网络连接的稳定性。
3. tracert命令的使用tracert命令用于追踪数据包在网络中的传输路径。
通过实验,我们了解了tracert命令的使用方法,并能够分析网络延迟和丢包情况。
4. nslookup命令的使用nslookup命令用于查询域名对应的IP地址。
在实验中,我们学会了如何使用nslookup命令查询域名和IP地址,为后续DNS解析问题提供了解决思路。
5. netstat命令的使用netstat命令用于显示网络连接、路由表、接口统计等信息。
通过实验,我们掌握了netstat命令的使用方法,能够分析网络连接状态,排查网络故障。
6. route命令的使用route命令用于配置和显示路由信息。
在实验中,我们学习了如何使用route命令添加、删除和修改路由,为网络通信提供保障。
7. ipconfig命令的使用ipconfig命令用于显示和修改网络接口配置。
通过实验,我们了解了ipconfig命令的使用方法,能够快速查看和修改网络配置。
四、实验结论1. 通过本次实验,我们掌握了基本的网络命令,提高了网络操作能力。
Traceroute和tracert的原理分析实验

Traceroute和tracert的原理分析实验Traceroute和tracert的原理分析实验作者:王富霖1、拓扑图图1 实验拓扑图2、原理Tracert跟踪路由:通过向目标发送不同IP 生存时间(TTL) 值的“Internet 控制消息协议(ICMP)”回应数据包,Tracert 诊断程序确定到目标所采取的路由。
要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。
数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。
Tracert 先发送 TTL 为 1 的回应数据包,并在随后的每次发送过程将TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。
通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。
可以得知,基本原理就是利用TTL=0时,ICMP返回超时来达到跟踪路由的目的。
但在具体的实现上有不同的做法。
目前主流设备都提供一个traceroute和tracert的指令。
下面将针对这两条指令展开分析。
3、思科路由器、SUN主机执行traceroute指令,抓包分析。
翻阅《TCP/IP协议详解卷1》的描述:8.2节中原文如下:“Traceroute程序发送一份UDP数据报给目的主机,但它选择一个不可能的值作为UDP端口号(大于30000),使目的主机的任何一个应用程序都不可能使用该端口。
因为,当该数据报到达时,将使目的主机的UDP模块产生一份“端口不可达”错误(见6.5节)的ICMP 报文。
这样,Traceroute程序所要做的就是区分接收到的ICMP报文是超时还是端口不可达,以判断什么时候结束。
”从以上结果来看路由器Traceroute命令默认发出的包发到目的地址UDP端口从33434开始,每个包递增1,TTL从1开始,每三个包(可以参数设置)后TTL加1。
如果跟踪路由的跳数在30跳以内,到达目的地址后,因为目标IP 就是当前设备,所以解开上层UDP分析,发现端口不可达(本来就是为了不可达返回错误),以上抓包明显发现是“ICMP类型 3 代码3的Destination unreachable(port un reachable)”。
实验一 Traceroute诊断程序的使用

实验一使用Traceroute诊断程序的测量端到端时延一、实验目的1.了解Traceroute程序的语法。
2.了解Traceroute程序的工作原理。
3.了解Traceroute程序的作用。
4.掌握Traceroute程序的使用。
5.使用Traceroute程序测量端到端时延。
二、实验环境实验室(或机房)中的计算机是要求能连接互联网。
实验室中的计算机安装的操作系统可以是Windows也可以Unix等。
三、实验原理(1)Traceroute程序可追踪源和目的之间经过的路由。
(2)当用户指定一个目的主机时,源主机中的该程序朝目的地发送多个特殊的分组,中间通过一系列路由器。
(3)对所经过的这条路径上的每个路由器,源主机都发送3个分组,每个路由器都向源主机返回3个相应的应答分组。
发送方可据此测量传输可响应间的时间间隔。
因此,根据这个时间间隔就可度量出端到端的时延。
(4)Traceroute命令格式介绍在UNIX主机系统下,直接执行命令名“Traceroute”,而在Windows系统下是执行命令名为“Tracert”。
在本实验中,我们采用在Windows系统下的执行命令。
命令格式语法为:tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name选项说明:-d 不将地址解析成主机名。
-h maximum_hops搜索目标的最大跃点数。
-j host-list 与主机列表一起的松散源路由(仅适用于IPv4)。
-w timeout 等待每个回复的超时时间(以毫秒为单位)。
-R 跟踪往返行程路径(仅适用于IPv6)。
-S srcaddr要使用的源地址(仅适用于IPv6)。
-4 强制使用IPv4。
-6 强制使用IPv6。
(5)Traceroute命令运行结果说明比如运行此条命令:tracert: to www.eurecom.fr ,则运行结果如图所示:图1:Traceroute运行结果四、实验内容(一)使用不带Traceroute命令,测量到的时延操作步骤如下:(1)“开始”->“所有程序”->“附件”->“命令提示符”,打开命令窗口。
linux-traceroute和tracert

traceroute是一个检查网络路径的工具,最初由Van Jacobson实现。
它现在已经成为Linux、Cisco IOS 以及其他很多操作系统的基本网络工具之一,Windows下也有一个类似的工具tracert。
下图是Linux执行traceroute的结果,它能显示每一跳的IP地址及域名(如果反向查询成功),以及对应的往返时间。
traceroute与tracert的原理是很类似的,它们通过设置IP报文里的TTL字段,TTL在每个路由器里都会减1,因此到了指定的跳数之后,TTL刚好减到0。
如果这时候还没到达目的地,那么路由器会返回一个类型11的ICMP报文,表示time exceeded(TTL为0)。
从而,原主机根据这个ICMP报文就能知道每一跳的IP地址。
但是,其实traceroute具体的实现方法与tracert是不同的,我昨晚在Packet Tracer做了下面的实现。
首先看看实验的拓扑图,我做了两次实验,第一次从laptop2a使用tracert,目的地是dhcp(IP地址是8.8.8.2);第二次从core2使用traceroute,目的地同样是dhcp。
我的目的是观察到tracert与traceroute的不同。
从上图可以看到,tracert使用的ICMP类型8报文,即ICMP Echo Request,与ping程序一样。
可以看到,第一次TTL设为了1,可以预见这个报文将会在core2丢弃,并返回ICMP Time Exceeded报文。
下图是返回的报文,可以见到ICMP报文里还会附上原来报文的内容。
根据《TCP/IP详解》的说明,ICMP 的差错报文需要附上原来报文的IP报头,以及后面紧跟着的8个字节,不过现在的实现一般都把更多的字节附上。
为什么必须多8个字节呢?因为这样做可以把ICMP Echo Request报文里的标识符字段和序列号字段包含进来,那么如果原来客户端同时开了两个tracert程序,客户端可以根据标识符字段区分交给哪个进程处理。
tracert 原理

tracert 原理Tracert 原理。
Tracert 是一种网络诊断工具,它可以用来跟踪数据包在网络中的传输路径。
通过 tracert 命令,我们可以了解数据包从源主机到目标主机所经过的路由器路径,以及每个路由器的延迟时间。
本文将介绍 tracert 命令的原理及其工作过程。
Tracert 命令是基于 ICMP 协议的,它利用 ICMP 的 TTL(Time to Live)字段来实现数据包的跟踪。
在 Windows 系统中,我们可以通过在命令提示符中输入tracert 命令加上目标主机的 IP 地址或域名来使用这一功能。
在 Linux 系统中,类似的功能可以通过使用 traceroute 命令来实现。
当我们输入 tracert 命令并指定目标主机后,操作系统会发送一个 TTL 为 1 的数据包到目标主机。
当第一个路由器收到这个数据包时,它会将 TTL 减 1,并将数据包转发到下一个路由器。
当 TTL 变为 0 时,路由器会丢弃这个数据包,并发送一个 ICMP 时间超时消息给源主机。
源主机收到这个消息后,就知道了第一个路由器的存在。
接下来,源主机会发送一个 TTL 为 2 的数据包到目标主机。
这样一来,第一个路由器会将 TTL 减 1 并转发数据包到第二个路由器,而第二个路由器会将 TTL 减 1 并转发数据包到目标主机。
这样,源主机就可以逐步了解数据包经过的所有路由器,从而得知整个传输路径。
除了跟踪数据包的路径外,tracert 还可以显示每个路由器的延迟时间。
这是通过发送三个数据包并测量其往返时间来实现的。
这样一来,我们不仅可以了解数据包的传输路径,还可以了解每个路由器的性能表现。
总的来说,tracert 命令通过利用 ICMP 协议的 TTL 字段和往返时间来实现数据包的跟踪和网络诊断。
它是网络工程师和系统管理员日常工作中常用的工具之一,能够帮助他们快速定位网络故障,并进行相应的维护和优化工作。
Tracert和Traceroute详解

Tracert和Traceroute详解展开全文Tracert命令(for windows)Ø功能:Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据报访问目标所采取的路径。
Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其它主机的路由。
Ø参数:-d 指定不将地址解析为计算机名。
-h maximum_hops 指定搜索目标的最大跃点数。
-j host-list 指定沿host-list的稀疏源路由。
-w timeout 每次应答等待timeout指定的微秒数。
target_name 目标计算机名称。
Ø工作原理:通过向目标发送不同 IP 生存时间 (TTL) 值的“Internet 控制消息协议(ICMP)”回应数据包,Tracert 诊断程序确定到目标所采取的路由。
要求路径上的每个路由器在转发数据包之前至少将数据包上的TTL 递减 1。
数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。
Ø作用:使用tracert命令确定数据包在网络上的停止位置。
对于解决大网络问题非常有用。
Traceroute命令(for linux)Ø功能:显示数据包到主机间的路径。
Ø参数:Ø -d 使用Socket层级的排错功能。
-f<存活数值> 设置第一个检测数据包的存活数值TTL的大小。
-F 设置勿离断位。
-g<网关> 设置来源路由网关,最多可设置8个。
-i<网络界面> 使用指定的网络界面送出数据包。
-I 使用ICMP回应取代UDP资料信息。
-m<存活数值> 设置检测数据包的最大存活数值TTL的大小。
-n 直接使用IP地址而非主机名称。
-p<通信端口> 设置UDP传输协议的通信端口。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。
tracert原理

tracert原理
Tracert是一种网络工具,用于诊断网络问题和测量数据包从源主机到目标主机的路径和延迟。
它利用了网络路由协议(如IP)和时间戳来确定数据包传输经过的路由器和网络节点。
Tracert的工作原理如下:
1. 首先,Tracert会向目标主机发送一个ICMP(Internet控制消息协议)回显请求数据包。
该数据包包含一个时间戳。
2. 当数据包到达第一个路由器时,该路由器会将数据包的时间戳记录下来,并将数据包向下一个节点转发。
3. 下一个节点收到数据包后,同样会记录时间戳并继续向目标主机转发。
4. 此过程会一直持续下去,直到数据包最终到达目标主机。
5. 当目标主机收到数据包后,它会发送一个ICMP回显应答数据包回源主机。
6. 源主机收到应答数据包后,Tracert会显示每个路由器/节点的IP地址和数据包往返时长(即延迟)。
通过分析显示的路由器IP和延迟信息,可以确定从源主机到目标主机的网络路径及每个节点的性能。
Tracert常用于网络故障排除,可以帮助管理员识别网络中的瓶颈或故障点,并为问题解决提供线索。
tracert 原理

tracert 原理tracert命令(traceroute在Linux系统上等效)是Windows操作系统中的网络诊断工具,用于确定数据包在Internet Protocol (IP)网络上的路径。
它通过发送一系列的Internet Control Message Protocol(ICMP)数据包,利用每个数据包的回复时间来查找数据包从源地址到目标地址的路径。
以下是tracert命令的原理。
1. 首先,tracert命令将目标地址作为参数传递给操作系统。
2. 然后,操作系统将创建一个ICMP数据包并将其发送到目标地址。
3. 第一个数据包将通过本地路由器发送到目标目标地址。
4. 该数据包将在路由器上进行处理,该路由器将记录数据包被传递过程中的时间和源地址信息,并将其发送回源地址。
5. 当数据包返回源地址时,操作系统会记录回复的时间和源地址,并显示在tracert命令的输出中。
6. 下一个数据包将使用一个TTL(Time to Live)值更大的数据包重复上述过程,以便在网络中越过第一个路由器,直到达到目标地址。
7. 重复此过程,每次增加TTL值,直到达到目标地址或达到指定的最大跃点数(可通过参数设置)。
8. 最终,tracert命令将显示数据包从源地址到目标地址的路径,并在每个跳点上显示延迟时间。
tracert命令的原理利用了网络中路由器的工作机制:每个路由器都会将数据包转发到下一个最佳路径的目标地址,直到达到目标地址或达到最大跳点数。
通过跟踪和测量数据包的路径和延迟时间,tracert命令可以帮助用户定位网络中的瓶颈和故障点,提供网络故障排除和分析的便捷工具。
tracert与traceroute的差别

【原创】tracert与traceroute的差别网络协议分析2009-05-26 19:34 windows下的tracert和linux/BSD/router下的traceroute都用于探测数据包从源到目的经过路由的IP,但两者探测的方法却有差别。
默认情况下,tracert是向目的地址发出ICMP请求回显数据包,而traceroute是向目的地址的某个端口(大于30000)发送UDP数据报。
两者用于探测的数据类型不同。
但他们也有一个共同点:都是通过设置发送包的TTL的值从1开始、逐次增1的方法来探测(此方法在“实验分析Traceroute程序的工作过程”一文中已经详细说明)。
由于一个是向目标发送ICMP,一个是向目标发送UDP(traceroute可以通过使用参数“-I “来改变发送的数据包为ICMP)。
那么当通信途中有防火墙阻止ICMP或UDP通过时,探测过程就不能完成。
实验验证如下:拓扑图:实验验证过程:一、验证traceroute当遇到阻止UDP数据通过时,探测结束1、PC1(LINUX或BSD或用路由器代替)、R0、R1、Firewall、PC2均配置好网关或路由,保证PC1能与PC2正常通信。
2、在Firewall中不添加任何规则的情况下,在PC1中运行traceroute 172.16.0.11,结果如下:在PC1与R0之间抓包结果如下:从上图可以看到traceroute发送的探测数据使用的是UDP。
3、在Firewall中添加访问控制,禁止所有的UDP数据通过F0/1进入。
firewall可以简单的使用路由器启用ACL代替,ACL编号为111,内容为:deny udp any host 172.16.0.11permit ip any any然后在firewall的F0/1接口中使用下述命令启用规则:ip access-group 111 in4、在PC1上traceroute 172.16.0.11,由于firewall中添加了阻止UDP通过,探测过程将终止于firewall。
tracert的原理

tracert的原理tracert的原理:tracert(跟踪路由器)是一种网络诊断工具,用于确定数据包在互联网上的路由路径。
它的原理是通过发送一系列的Internet控制消息协议(ICMP)回显请求(Ping命令),并监听每个路由器的回应时间来生成一条路由路径。
当我们运行tracert命令时,它会向目标主机发送一份特定的IP数据包,并在数据包的TTL(Time to Live)字段中设置初始值。
该数据包的目标地址是目标主机的IP地址,但TTL字段的初值比实际的网络跳数大。
例如,如果目标距离我们有10个路由器,则将TTL设置为11。
一旦数据包离开我们的计算机,TTL字段的值就会减少1。
当一个中间路由器收到该数据包时,它会将TTL值减少1,并尝试将该数据包转发到下一跳。
如果TTL减为0,路由器将丢弃该数据包,并发送一个「超时」(time exceeded)的ICMP消息回到源主机。
这个ICMP消息是tracert所关注的内容之一。
当我们运行tracert时,它将发送一系列的数据包,每个数据包的TTL值依次增加,以便逐个路由器地进行探测。
通过检查每个数据包的超时反馈和回传时间,tracert可以确定数据包经过的路由路径。
tracert还可以显示每个路由器的IP地址,以及数据包在每个路由器上的传输时间。
这对于诊断网络延迟问题以及确定在网络路径上是否存在潜在的问题非常有用。
总结而言,tracert的原理是通过发送一系列带有不同TTL值的数据包,监测每个数据包的返回时间和超时消息,以确定数据包在互联网上的路由路径和每个路由节点的IP地址。
它可以为网络故障排查和网络性能优化提供重要的信息。
tracert原理

tracert原理Tracert原理。
Tracert是一种网络诊断工具,用于跟踪数据包在网络上的传输路径。
它可以帮助网络管理员和工程师快速定位网络故障,并找出网络传输过程中的瓶颈和延迟问题。
本文将介绍Tracert的原理及其在网络故障排查中的应用。
Tracert的原理是利用Internet控制消息协议(ICMP)的“时间超时”报文和“目的地不可达”报文来实现。
当一个数据包经过路由器时,路由器会根据数据包的目的地址和路由表决定下一跳的路径。
如果数据包在传输过程中遇到问题,比如路由器故障或网络拥堵,路由器就会向数据包的发送者发送一个ICMP报文,告知其发生了故障或超时。
Tracert利用这一原理,向目的主机发送一系列的数据包,并在每一跳记录下数据包的传输时间和路由路径,从而得到整个数据包传输的路径。
Tracert的工作流程可以简单概括为以下几个步骤:1. 发送第一个数据包到目的主机,设置数据包的TTL(生存时间)为1;2. 第一个路由器收到数据包后,发现TTL为1,将数据包丢弃,并发送“时间超时”报文给发送者;3. 发送第二个数据包到目的主机,设置TTL为2;4. 第二个路由器收到数据包后,发现TTL为2,将数据包丢弃,并发送“时间超时”报文给发送者;5. 重复以上步骤,直到数据包到达目的主机。
通过记录每一跳数据包的传输时间和路由路径,Tracert可以得到整个数据包传输的路径,以及每一跳的延迟情况。
这对于网络故障排查非常有用,可以帮助管理员迅速定位故障所在,并采取相应的措施进行修复。
在实际应用中,Tracert可以用于以下几个方面:1. 网络故障排查,当网络出现故障时,可以使用Tracert来确定故障出现的位置和原因,比如是路由器故障还是网络拥堵导致的延迟。
2. 网络性能分析,通过Tracert可以了解网络传输的路径和延迟情况,帮助管理员优化网络架构和提高网络性能。
3. 安全审计,Tracert可以用于检测网络中的潜在安全隐患,比如路由路径是否存在异常、是否有未经授权的访问等。
traceroute的工作原理

traceroute的工作原理traceroute是一种网络诊断工具,用于确定数据包从源主机到目标主机经过的路径和经过的路由器。
它可以显示出数据包在网络中的传输路径和每个路由器的延迟,帮助用户分析网络连接的问题。
traceroute的工作原理是利用Internet控制报文协议(ICMP)的Time to Live(TTL)字段和Internet Protocol(IP)的Time Exceeded消息。
当一个数据包从源主机发送到目标主机时,它会在IP头部的TTL字段中设置一个初始值,该值在每经过一个路由器时减少1。
当TTL值减少到0时,路由器就会发送一个Time Exceeded消息给源主机,告知数据包已经被丢弃。
通过发送一系列的数据包,并逐渐增加TTL值,traceroute可以获得每个路由器的IP地址和返回的Time Exceeded消息,从而确定数据包的传输路径。
下面是traceroute的工作流程:1. 源主机发送第一个TTL值为1的数据包给目标主机。
2. 第一个路由器收到数据包后,发现TTL值为1,将其减1后TTL 值变为0,然后将数据包丢弃,并向源主机发送一个Time Exceeded消息。
3. 源主机收到Time Exceeded消息后,记录下第一个路由器的IP 地址和返回的时间。
4. 源主机发送第二个TTL值为2的数据包给目标主机。
5. 第二个路由器收到数据包后,发现TTL值为2,将其减1后TTL 值变为1,然后将数据包转发给下一个路由器。
6. 第二个路由器将数据包转发给下一个路由器,并将TTL值减1,此时TTL值为0,丢弃数据包,并向源主机发送一个Time Exceeded消息。
7. 源主机收到Time Exceeded消息后,记录下第二个路由器的IP 地址和返回的时间。
8. 重复步骤4-7,不断增加TTL值,直到数据包到达目标主机为止。
通过不断增加TTL值和记录返回的Time Exceeded消息,traceroute可以逐步确定数据包经过的路由器和传输路径。
tracert与traceroute的区别

tracert与traceroute的区别tracert和traceroute都是⽤来探测数据包经过⽹络路径的⼯具。
tracert是windows下的测试⼯具traceroute是linux下的测试⼯具-----------------------------------------------------------------------------tracert⼯作原理及过程1.tracert向⽬的地址发送ICMP request报⽂,且第⼀个ICMP request的TTL值为1;中间的路由设备收到报⽂后,因为TTL值为0,返回ICMP超时报⽂;本机由此获得下⼀跳信息。
2.逐步增加TTL,获取到过路路由的全部IP。
3.ICMP request报⽂到达⽬的地址,⽬的地址设备回复ICMP replay。
traceroute⼯作原理及过程1.traceroute向⽬的地址的某端⼝(⼤于30000)发送UDP报⽂,第⼀个报⽂的TTL值为1;中间的路由设备收到报⽂后,因为TTL值为0,返回ICMP超时报⽂;本机由此获得下⼀跳信息。
⽬的端⼝从33434开始,每⼀个报⽂会把⽬的端⼝增加1,直到33534,⽬的是为了区分返回的报⽂对应哪个发出的报⽂。
2.逐步增加TTL,获取到过路路由的全部IP。
3.UDP报⽂到达⽬的地址,⽬的地址回复ICMP端⼝不可达报⽂。
-----------------------------------------------------------------------------共同点:基本原理都是利⽤IP报⽂的TTL字段。
不同点:tracert是使⽤ICMP Echo Request报⽂去实现;traceroute是使⽤UDP报⽂去实现所以最后⼀跳设备返回的报⽂也不同:tracert返回ICMP replay;traceroute返回的则是ICMP 端⼝不可达traceroute可以使⽤参数-l,那么发送的数据包为ICMP。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Traceroute和tracert的原理分析实验
作者:王富霖
1、拓扑图
图1 实验拓扑图
2、原理
Tracert跟踪路由:通过向目标发送不同 IP 生存时间 (TTL) 值的“Internet 控制消息协议(ICMP)”回应数据包,Tracert 诊断程序确定到目标所采取的路由。
要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。
数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。
Tracert 先发送 TTL 为 1 的回应数据包,并在随后的每次发送过程将TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。
通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。
可以得知,基本原理就是利用TTL=0时,ICMP返回超时来达到跟踪路由的目的。
但在具体的实现上有不同的做法。
目前主流设备都提供一个traceroute和tracert的指令。
下面将针对这两条指令展开分析。
3、思科路由器、SUN主机执行traceroute指令,抓包分析。
翻阅《TCP/IP协议详解卷1》的描述:8.2节中原文如下:
“Traceroute程序发送一份UDP数据报给目的主机,但它选择一个不可能的值作为UDP端口号(大于30000),使目的主机的任何一个应用程序都不可能使用该端口。
因为,当该数据报到达时,将使目的主机的UDP模块产生一份“端口不可达”错误(见6.5节)的ICMP报文。
这样,Traceroute程序所要做的就是区分接收到的ICMP报文是超时还是端口不可达,以判断什么时候结束。
”
从以上结果来看路由器Traceroute命令默认发出的包发到目的地址UDP端口从33434开始,每个包递增1,TTL从1开始,每三个包(可以参数设置)后TTL加1。
如果跟踪路由的跳数在30跳以内,到达目的地址后,因为目标IP 就是当前设备,所以解开上层UDP分析,发现端口不可达(本来就是为了不可达返回错误),以上抓包明显发现是“ICMP类型3 代码3的Destination unreachable(port unreachable)”。
如果超时,直接显示星号,继续下一个包的发送。
直到默认的30跳停止。
4、普通windows主机执行tracert指令,抓包分析。
在windws主机里面的tracert:
明显的和TCP/IP详解的Traceroute命令表述有点出入。
windows主机的tracert是直接是用ping来实现的,但是这个ping的TTL值在3个包后增大1,如果目标在30跳之内,目的地址直接回应“ping回显ICMP类型0 代码0”不可达或者超时后返回星号,继续下一个TTL的包的发送,一直到达默认设置的30跳。
以上返回结果结果。
这里仔细讲解一下每个输出结果的含义。
第一列:ttl 的值,勉强可以理解为第几跳(如果网络中有ttl修改的话就不一定了)。
一行中中连续2-4共三列一般都能看到3个连续的数字。
比如:1ms 1ms 1ms,这三个分别是TTL相同但是顺序不同的的三个IP包到达同一个发送到从设备返回的时间差。
如果显示星号说明返回超时,不再等待,直接下一个包的发送。
最后一列是ttl超时返回ICMP错误的设备的接口IP地址。
(注意:前面tracert 带了-d 参数,说明不用域名解析,时间较快;如果不带-d就需要做域名解析,较长时间)。
结论:traceroute和tracert返回结果显示一样,实现方式表面不一样,实
质原理一样,都是ttl递增的方式,利用icmp返回错误代码来跟踪路由。