实验1 Traceroute原理对比与分析
- 格式:doc
- 大小:1.48 MB
- 文档页数:4
信息工程学院盐城师范学院毕业论文(设计)基于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 协议进行网间通信。
traceroute的工作原理traceroute是一种网络诊断工具,用于确定数据包从源地址到目标地址经过的路由路径。
它能够显示出数据包在互联网中的传输路径,并提供了每个跃点的延迟。
下面将介绍traceroute的工作原理。
traceroute的工作原理可以简单概括为发送一系列的UDP数据包,并根据接收到的ICMP错误消息确定数据包的路径。
具体步骤如下:1. 首先,traceroute选择一个目标地址,比如一个IP地址。
然后它会使用一个TTL(Time to Live)的字段值为1的UDP数据包向目标地址发送请求。
2. 当网络上的路由器接收到这个UDP数据包时,它会检查TTL字段的值。
如果TTL的值为1,该路由器会将数据包抛弃,并向源主机发送一个ICMP错误消息(TTL超时)。
3. 源主机收到ICMP错误消息后,就能确定这是第一个跃点的路由器,并记录下该路由器的IP地址和延迟时间。
然后,traceroute 将TTL的值加1,重复第1和第2步,直到达到一个设定的最大跃点数或目标地址。
4. 最终,traceroute将得到一个包含所有跃点IP地址和延迟时间的列表,这就是数据包从源地址到目标地址的路由路径。
在traceroute的工作过程中,还有一些需要注意的细节:- 为了准确测量延迟时间,traceroute发送的UDP数据包的目标端口号会递增。
这样可以避免中间路由器对数据包进行缓存,从而得到更准确的延迟时间。
- 如果某个跃点的路由器配置了防火墙,它可能会将ICMP错误消息过滤掉,这样traceroute将无法获取到该跃点的信息。
在这种情况下,traceroute会显示星号(*)来表示无法获取到信息。
- traceroute还可以通过设置参数来进行更详细的诊断。
比如,可以设置发送数据包的个数、发送数据包的时间间隔等,以便更准确地测量网络路径和延迟时间。
总结起来,traceroute通过发送一系列的UDP数据包,并根据接收到的ICMP错误消息确定数据包的路径,从而能够显示出数据包在互联网中的传输路径和每个跃点的延迟时间。
一、traceroute -p原理概述traceroute -p是一种网络诊断工具,可以用来确定数据包在从源到目的地的传输路径上所经过的路由器。
traceroute -p能够揭示网络中的延迟和路由问题,对网络故障排查和性能优化有着重要的作用。
二、traceroute -p的工作原理1.发送TTL逐跳增加的ICMP报文traceroute -p工作的基本原理是利用增加TTL字段的IP数据包来实现。
TTL(Time to Live)字段是IP数据包头部的一个8位字段,它规定了IP数据包在经过路由器时最多可经过的跳数。
当数据包经过一个路由器时,TTL值会递减1,直到TTL值为0,数据包将被丢弃并会返回一个ICMP报文给发送者。
2.记录路由器的IP位置区域和延迟时间traceroute -p发送一系列的UDP数据包,每个数据包的TTL从1开始逐渐增加。
当某个数据包到达一个新的路由器时,该路由器会将报文丢弃并发送一个ICMP“TTL超时”报文给源主机。
源主机收到该报文后,就知道了中间经过的路由器的IP位置区域,并可以计算出到达路由器的时间。
3.重复此过程直到到达目的地traceroute -p将重复发送增加TTL后的UDP数据包,直到到达目的地为止。
通过记录每个路由器的IP位置区域和延迟时间,traceroute-p就可以得到源主机到目的主机的传输路径。
三、traceroute -p的使用方法1.基本命令格式```traceroute -p <目标主机>```2.常用选项- -I 使用ICMP Echo Request报文进行traceroute- -T 使用TCP SYN报文进行traceroute- -n 直接使用IP位置区域进行显示,不进行域名解析- -q 设置每个TTL发送的数据包数量3.示例```$ traceroute -p example```运行上面的命令后,将显示源主机到example的传输路径。
traceroute命令的作用和原理概述:在网络中,数据包的传输是通过一系列的路由器进行转发的。
traceroute命令是一种网络诊断工具,用于追踪数据包从源主机到目标主机的路径。
它通过发送一系列的探测数据包,利用数据包的TTL(Time to Live)字段和ICMP(Internet Control Message Protocol)回显报文来测量每个中间路由器的往返时间,从而获得整个数据传输路径。
作用:traceroute命令的主要作用是帮助网络管理员或用户诊断网络连接问题,了解数据包在传输过程中经过的路由器,以及每个路由器的响应时间。
通过分析traceroute的输出结果,可以判断网络连接是否畅通,找到网络故障的根源,并采取相应的措施来解决问题。
原理:当执行traceroute命令时,源主机会发送一系列的UDP数据包,每个数据包的TTL值依次递增。
TTL是IP协议中的一个字段,用于限制数据包在网络中的生存时间,避免数据包无限循环。
每经过一个路由器,TTL值就会减1。
当TTL值为0时,路由器会将数据包丢弃,并向源主机发送ICMP超时报文。
源主机通过接收到的ICMP超时报文,就可以确定该路由器的IP地址。
traceroute命令通过反复发送TTL值递增的数据包,并根据每个数据包的回复来确定数据包的路径。
在输出结果中,traceroute会显示每个中间路由器的IP地址和响应时间。
通常,每个TTL值对应一行输出,最终输出结果包括了源主机到目标主机的完整路径。
使用traceroute命令时,可以通过一些选项来控制其行为。
例如,可以指定每个TTL值发送的数据包数量、数据包的TTL初始值、数据包的目标端口等。
这些选项可以根据具体的需求进行调整,以便更好地诊断网络问题。
总结:traceroute命令是一种非常有用的网络诊断工具,通过测量数据包的路径和响应时间,可以帮助我们了解网络连接的质量和稳定性。
它的原理是利用数据包的TTL字段和ICMP回显报文来追踪数据包的传输路径。
linuxtraceroute追踪路由路径TraceRoute的⼯作原理1.TraceRoute的⼯作原理:traceroute 有使⽤两种:使⽤ICMP的和使⽤UDP的。
Microsoft使⽤ICMP,所以win95上发出的traceRT应使⽤的是ICMP,但我没有⽤ sniffer查过;其它包括unix和cisco router都使⽤UDP.ICMP traceroute:===========使⽤ICMP Echo Request, Echo Reply and TTL-expired.源发出 ICMPEquest,第⼀个request的TTL为1,第⼆个request的TTL为2,以后依此递增直⾄第30个;中间的router送回ICMPTTL-expired ( ICMP type 11)通知source,(packet同时因TTL超时⽽被drop),由此source知晓⼀路上经过的每⼀个router;最后的destination送回ICMPEcho Reply。
所以中间任何⼀个router上如果封了ICMP Echo Request, traceroute就不能⼯作;如果封了type 11(TTL-expired),中间的router全看不到,但能看到packet 到达了最后的destination;如果封了ICMP EchoReply,中间的全能看到,最后的destination看不到。
UDP traceroute:==========使⽤ICMP TTL-expired(type 11), ICMP port unreachable(type 3, code 3), UDPport >32768.source发出UDP packet, source port使⽤随机的任何⼤于32768的⾼段port#, destination port #从33434开始每送个probe依此递增,直⾄33434+29,(ciscorouter上使⽤extended-traceroute命令可以修改这个起始的33434 port #),同时TTL从1开始依此递增,直⾄1+29=30(最多送30个probe)。
路由追踪程序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进⾏设置),探测包的返回会受到⽹络情况的影响。
实验一使用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命令的作用和原理traceroute命令是一种网络工具,用于确定数据包从本地主机到目标主机的路径。
它通过发送一系列的UDP数据包或ICMP回声请求到目标主机,并在每一跳上记录数据包的时间和发送路径的IP地址。
traceroute通过这些信息构建路径,并显示出数据包从本地到目标主机所经过的每一跳的延迟。
traceroute命令的原理是使用TTL(Time-to-Live)字段来限制数据包在网络中的生存时间。
每次数据包通过一个路由器时,TTL字段的值会减少,直到达到0为止。
在这种情况下,路由器将丢弃该数据包并发送一个ICMP回显超时消息。
traceroute利用这个原理发送具有不同TTL值(递增)的数据包,从而确定到目标主机的路径。
当我们在终端中执行traceroute命令时,它将按照以下步骤执行:1. traceroute发送UDP数据包或ICMP回声请求到目标主机的第一个路由器,TTL初始值为1。
由于TTL字段为1,第一个路由器在将数据包转发给下一个路由器之前将其丢弃。
然后路由器向源主机发送ICMP回显超时消息,traceroute将此信息显示给用户。
2. traceroute递增TTL字段的值为2,然后再次发送数据包。
此时,第一个路由器将数据包转发给第二个路由器,第二个路由器将其转发给第三个路由器,以此类推。
当达到TTL值时,第二个路由器将数据包丢弃并发送ICMP回显超时消息,traceroute将此信息显示给用户。
3.这个过程会持续重复,每次递增TTL值,直到数据包到达目标主机。
一旦数据包到达目标主机,它将发送ICMP回显回复消息,traceroute将这个信息显示给用户,并终止测试。
通过这些步骤,traceroute能够确定数据包从源主机到目标主机经过的每一跳,并计算每一跳的延迟。
traceroute将这些信息显示给用户,以便用户可以了解到目标主机的网络路径以及网络中可能存在的延迟问题。
一、pingping 程序的主要目的是测试主机是否可达,它发送ICMP 回显请求报文给目的主机,并等待返回ICMP 回显应答ping 程序一般会周期性持续地发送ICMP 请求报文,除非用户手动终止,或指定了发送报文个数回显请求和回显应答通过序列号(icmp_seq)进行匹配,下图中序列号依次为1、2、3、4 ...ping 程序通过数据报中记录的发送请求时间值和接收到回显应答报文的当前时间值,计算往返耗时(time)常见问题:1. 为什么ping 第一次一般会产生更多耗时?因为ping 第一次的时候,需要首先进行ARP 解析,获取IP 地址对应的MAC 地址(同时将映射关系缓存),而下次ping 的时候会直接从ARP 高速缓存读取,少了一个步骤,自然时间就缩短了!二、traceroutetraceroute 程序的主要目的是获取从当前主机到目的主机所经过的路由官方方案(TCP/IP详解里提供的基于UDP 的方案):通过封装一份UDP 数据报(指定一个不可能使用的端口,30000以上),依次将数据报的TTL 值置为1、2、3...,并发送给目的主机。
当路径上第一个路由器收到TTL 值为1 的数据报时,首先将该数据报的TTL 值减1,发现TTL 值为0,而自己并非该数据报的目的主机,就会向源主机发送一个ICMP 超时报文,traceroute 收到该超时报文,就得到了路径上第一台路由器的地址;然后照此原理,traceroute 发送TTL 为 2 的数据报时,会收到路径上第二台路由器返回的ICMP 超时报文,记录第二台路由器的地址;直到报文到达目的主机,目的主机不会返回ICMP 超时,但由于端口无法使用,就会返回一份端口不可达报文给源主机,源主机收到端口不可达报文,证明数据报已经到达了目的地,停止后续的UDP 数据报发送,将记录的路径依次打印出来,使命完成,结束任务。
注意:目的主机端口号最开始设置为33435,且每发送一个数据报加1,可以通过命令行选项来改变开始的端口号约束:1. 不能保证现在的路由也是将来所要采用的路由,甚至两份连续的IP 数据报都可能采用不同的路由;2. 不能保证ICMP 报文的路由与traceoute 程序发送的UDP 数据报采用同一路由,时间测量可能不准;3. 返回的ICMP 报文中的信源IP 地址是UDP 数据报到达的路由器接口的IP 地址;当从网络1某主机执行traceroute 程序到网络3某主机,返回的路径将是if1 和if3 的地址;而反方向,将打印出if4 和if2 的地址缺陷:1. 中间路由器有可能做了限制,不返回ICMP 超时报文,traceroute 就无法获得其地址了,只能打印出* 或no reply2. 目的主机可能由于安全原因不会向源主机返回端口不可达的ICMP 报文,尽管探测数据报已经到达了目的主机,但traceroute 程序收不到端口不可达报文,就仍会持续发送请求...————————————————版权声明:本文为CSDN博主「shida_csdn」的原创文章,遵循CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
文章标题:深度解析traceroute命令的用法与原理一、traceroute命令简介traceroute是一种网络诊断工具,用于确定数据包从本地计算机到目标计算机的路径。
在网络故障排除和网络性能分析中具有重要作用。
traceroute命令通过发送具有不同生存时间(TTL)值的ICMP回显请求数据包到目标主机,然后根据返回的ICMP时间超时消息推断数据包的路径,从而获取中间路由跳数和每一跳的延迟时间。
二、traceroute命令的基本用法1. 在命令行窗口中输入traceroute命令,后跟目标主机的IP位置区域或域名,即可执行traceroute命令并输出跟踪结果。
2. traceroute命令的常用参数:- -I(使用ICMP协议进行跟踪)- -T(使用TCP协议进行跟踪)- -p(设置使用的端口号)- -q(设置每个跃点返回信息的查询次数)- -m(设置最大跳数)- -w(设置超时时间)三、traceroute命令的深度原理1. TTL字段含义TTL字段指数据包在网络中允许传输的最大跳数,每经过一个路由器或交换机,TTL值减一。
当TTL达到零时,路由器将丢弃该数据包并发送ICMP时间超时消息给源主机。
2. ICMP消息类型traceroute命令利用ICMP时间超时消息和目标不可达消息,从而确定数据包的路径和延迟。
时间超时消息用于获取路由路径,目标不可达消息用于获取每条路径的延迟时间。
四、个人观点和理解traceroute命令作为网络故障排除和性能分析的利器,不仅能够帮助网络管理员发现网络故障和瓶颈所在,还能帮助普通用户了解数据包在网络中的传输路径和延迟情况。
通过深入理解traceroute命令的原理和用法,我们能更好地掌握网络运行机制,提高网络故障排除的效率和准确性。
总结回顾本文针对traceroute命令的用法和原理展开了深度解析,并对其基本用法、深度原理以及个人观点进行了阐述。
通过本文的阅读,相信读者对traceroute命令将有更全面、深刻的理解和应用。
实验1 Traceroute原理对比与分析
姓名:谢鑫班级:物联网工程一班学号:20100740123
拓扑图
图1 实验拓扑图
1、原理
Tracert跟踪路由:通过向目标发送不同 IP 生存时间 (TTL) 值的“Internet 控制消息协议(ICMP)”回应数据包,Tracert 诊断程序确定到目标所采取的路由。
要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。
数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。
Tracert 先发送 TTL 为 1 的回应数据包,并在随后的每次发送过程将TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。
通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。
可以得知,基本原理就是利用TTL=0时,ICMP返回超时来达到跟踪路由的目的。
但在具体的实现上有不同的做法。
目前主流设备都提供一个traceroute和tracert的指令。
下面将针对这两条指令展开分析。
2、思科路由器、SUN主机执行traceroute指令,抓包分析。
“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跳停止。
3、普通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返回错误代码来跟踪路由。