路由追踪Tracert
- 格式:doc
- 大小:161.00 KB
- 文档页数:8
ping命令和tracert命令的作用和原理Ping命令和Tracert命令是网络工具中常用的命令,它们用于检测网络连接的质量和诊断网络故障。
Ping命令用于测试主机之间的连通性,而Tracert命令则用于跟踪网络数据包在互联网中的路径。
下面将逐步介绍这两个命令的作用和原理。
一、Ping命令的作用和原理1. 作用:Ping命令用于测试与目标主机之间的网络连接情况,可以判断目标主机是否能够响应网络请求,以及网络延迟和丢包率等。
通过发送ICMP(Internet Control Message Protocol)数据包到目标主机,然后等待目标主机的响应,从而判断网络的连通状况。
2. 原理:Ping命令发送一个ICMP Echo Request消息(ping请求)到目标主机的IP地址。
目标主机收到该请求后,会返回一个ICMP Echo Reply消息(ping 响应)给源主机。
Ping命令根据发送请求和接收响应的时间来计算网络延迟(即Round Trip Time),以及统计发送和接收的数据包数量和丢失率。
Ping命令的执行步骤如下:Step 1: 用户在命令提示符下输入ping命令,后面跟上目标主机的IP地址或域名。
Step 2: 操作系统根据输入的IP地址或域名解析得到目标主机的IP地址。
Step 3: 操作系统创建一个ICMP Echo Request消息,并填充一些必要的字段,例如序列号和时间戳。
Step 4: 操作系统将ICMP Echo Request消息封装成一个IP数据包,并填写源IP地址和目标IP地址等信息。
Step 5: 操作系统将IP数据包发送到本地网络的网卡。
Step 6: IP数据包在本地网络中被交换机或路由器转发,依次经过多个网络节点,直到到达目标主机所在的网络。
Step 7: 目标主机收到ICMP Echo Request消息后,会生成一个ICMP Echo Reply 消息作为响应。
tracert 用法tracert(traceroute)是一个用于跟踪数据包在 IP 网络中的路径的实用工具。
它通过发送 ICMP(Internet Control Message Protocol)数据包到目标主机,以及测量每个数据包经过的路由节点的时间,来确定数据包在网络中的传输路径和传输时间。
这个工具可以帮助系统管理员和网络工程师分析网络故障和网络延迟问题。
tracert 命令是多平台上 universally used 的网络工具之一。
它可以在 Windows、Linux 和 macOS 等操作系统上使用。
为了使用 tracert 命令,只需在命令提示符中键入 "tracert",紧接着输入目标主机的 IP 地址或域名。
tracert 命令会发送一系列的ICMP 回显请求(ping)数据包到目标主机,并逐个显示每个数据包经过的路由节点的 IP 地址和 Round-Trip Time(RTT,RTT 是数据包从源主机发送到目标主机并返回源主机所需的时间)。
tracert 命令可以帮助管理员诊断网络故障和优化网络性能。
以下是 tracert 命令的一些常见用法:1. 诊断网络延迟:当用户报告网络延迟过高时,管理员可以使用 tracert 命令来确定数据包在网络中的传输路径,以及在哪个路由节点上出现延迟。
管理员可以根据 tracert 的结果,逐个检查每个路由节点,找出延迟的原因,并采取相应的措施来解决延迟问题。
2. 网络故障排查:当用户报告无法访问某个网站或某个服务时,管理员可以使用 tracert 命令来确定问题出现在哪个节点上。
tracert 命令会显示每个数据包经过的路由节点的 IP 地址,如果某个节点无法响应 ICMP 请求,或出现数据包丢失,那么管理员可以将问题定位到此节点,并进行进一步的排查。
3. 追踪网络数据包路由路径:tracert 命令可以用于追踪数据包在网络中的路径。
Tracert命令是什么怎么用我们在使用Win7系统的电脑上网的时候,有时候需要追踪从本机到指定网址经过哪些路由器,这对我们监控路由器的转发路径很有作用。
这时候需要用到Tracert命令,可能很多用户不知道怎么使用,那么怎么使用Tracert命令呢?现在小编就和大家说一下Win7电脑上使用Tracert的方法。
方法/步骤如下:1、点击“开始”—“运行”2、然后在弹出来的对话框输入“cmd”—再点击“确定”3、最后在弹出来的DOS命令窗口输入:tracert “ip”或者“域名”,检查本地网络到百度的联通性4、如果直接输入tracert,后面不带任何参数,会弹出来具体的使用方法,补充:路由器提速技巧重启重启后的路由器由于释放了系统资源,效率最优化,运行速度更快。
我们重启路由器方式并不多,通过管理IP输入用户名和密码进入后台管理界面,然后点击重启路由,还有就是强拔电源,我们并不建议这种野蛮操作。
一键重启功就像摁开关一样简单。
扩大信号WIFI信号会随着距离长短渐渐衰弱,有时候就是一堵墙的距离,你在这头它却在那头就是不能愉快玩耍,不管你是乡下的小洋楼还是城里的大HOUSE,加装个路由器简单又实惠。
360度无死用全覆盖。
只需两步轻松实现。
干掉蹭网的火热的蹭网软件,占用你的路由、你的网络、你的资源。
而这一切就在不知不觉中进行。
潜伏着的敌人,我要代表月亮消灭你。
相关阅读:路由器常见问题原因分析1、验证电缆是否安全连接这可能听起来像一个没有脑子,但大部分用户们有时忘记检查最明显的解决方案,然后再转到更复杂的解决方案。
有人可能意外地拉扯或踢了一根电缆,导致电缆拔掉或松动。
所以应检查所有涉及的电缆,并确保它们已牢固连接。
2、检查过热像任何其他电子设备一样,路由器可能会成为过热的牺牲品。
这种过热可能会损坏路由器,或者使其不稳定。
检查路由器的温度,看看它是多么热。
如果过热的话,请确保气流充足。
3、路由器摆放位置很重要如果你无法使用Wi-Fi,则需要尝试重新摆放路由器。
tracert命令有什么功能使用教程tracert命令主要用于确定IP数据包访问目标所采取的路径。
不过可能很多用户不知道怎么使用,本篇文章将在Win7系统环境下,来探讨tracert命令详解,同时了解tracert命令有哪些功能。
方法步骤1、进入Windows命令提示符程序。
Win7系统直接在开始菜单下方的输入框中输入“cmd”或“命令提示符”就可以进入了。
XP系统需要在开始菜单中找到运行(或按下快捷键R),在运行对话框中输入cmd,然后单击“确定”按钮。
2、进入到控制台中,如下图所示。
下面我们将分别讨论tracert 程序几个主要功能的使用方法。
3、在命令行中输入“tracert ”并在后面加入一个IP地址,可以查询从本机到该IP地址所在的电脑要经过的路由器及其IP地址。
下图中后面的IP地址为同一个路由器下的局域网中的另一个电脑的IP地址。
4、从左到右的5条信息分别代表了“生存时间”(每途经一个路由器结点自增1)、“三次发送的ICMP包返回时间”(共计3个,单位为毫秒ms)和“途经路由器的IP地址”(如果有主机名,还会包含主机名)。
5、也可以输入“tracert ”后面接一个网址,DNS解析会自动将其转换为IP地址并探查出途经的路由器信息。
如这回在后面输入了百度经验的URL地址,可以发现共查询到10条信息,其中带有星号(*)的信息表示该次ICMP包返回时间超时。
6、如果在“tracert”命令后添加一个不存在的IP地址,tracert 程序则会报错。
7、在“tracert”命令与IP地址或URL地址中间输入“-d”,可以不将IP地址解析到主机名称。
从下图可以看出,添加了“-d”后将不显示出“PC-helei”字样,即不显示主机名称。
8、在“tracert”命令与IP地址或URL地址中间输入“-h”,并在之后添加一个数字,可以指定本次tracert程序搜索的最大跳数。
如下图中加入“ -h 5 ”后,搜索只在路由器间跳转5次,就无条件结束了。
解释tracert命令的执行过程和原理
tracert命令是Windows系统中的一个网络工具,用于追踪数
据包在互联网上的传输路径。
它通过向目标主机发送一系列的ICMP(Internet Control Message Protocol)回显请求(ping)
报文,探测数据包在互联网上的传递路由。
执行过程如下:
1. 用户在命令行界面上输入tracert命令,指定目标主机的IP
地址或域名。
2. tracert命令使用ICMP发送第一个回显请求(TTL值为1)
到目标主机。
3. 第一个路由器(跳点)收到回显请求,将其TTL值减1(TTL值表示路由器允许数据包在网络上经过的最大跳数),并将修改后的回显请求转发到下一跳。
4. 下一个路由器收到回显请求,同样将TTL值减1,并将回
显请求发送到下一个跳。
5. 这个过程一直重复下去,直到回显请求到达目标主机或者达到TTL值为0(此时数据包已经超过了路由器的最大跳数),同时,每个中间路由器都会返回一个ICMP超时差错报文给源主机。
6. 当回显请求到达目标主机时,目标主机会返回一个ICMP回显应答报文给源主机。
7. 源主机根据ICMP报文的返回时间来计算每个跳点的延迟时间,并将结果显示在命令行界面上。
tracert命令的原理是利用TTL字段来控制数据包在网络中的
最大跳数。
每经过一个路由器,TTL值就会减1,当TTL值
为0时,路由器会丢弃该数据包并向源主机发送一个ICMP超时差错报文。
通过发送多个ICMP回显请求,tracert命令可以获取数据包在互联网上的传输路径,并计算每个跳点的延迟时间,从而帮助用户排查网络延迟或故障的问题。
tracert 原理
tracert(跟踪路由)是一种网络诊断工具,用于确定数据包从一个源IP地址到达目标IP地址所需经过的路由路径。
Tracert通过发送一系列的ICMP(Internet控制消息协议)回显请求数据包来实现这一目的。
当一个数据包离开计算机并进入Internet时,它会被传递给网络的第一个路由器,该路由器将决定它的下一步目的地。
这个目的地可能是另一个路由器,也可能是目标计算机。
路由器在决定下一步目的地时,会查找它的路由表,该表列出了它可以到达的所有网络的地址。
Tracert利用了这个过程来跟踪数据包从源IP地址到目标IP地址时所经过的路由器。
它通过向目标IP地址发送一系列的ICMP回显请求数据包,每个数据包的TTL(生存时间)字段从1开始递增。
当一个路由器收到一个TTL为1的数据包时,它会将该数据包丢弃并向源IP地址发送一个“超时”信息。
当一个路由器收到一个TTL为2的数据包时,它同样会将该数据包丢弃并向源IP地址发送一个“超时”信息,以此类推。
当数据包到达目标IP地址时,目标IP地址会向源IP地址发送一个“回显应答”,Tracert依靠这个回显应答来判断数据包是否已经到达目标IP地址。
通过这一过程,Tracert可以确定数据包从一个源IP地址到达目标IP地址所需经过的路由路径,并且可以测量每一个路由器的响应时间。
这个信息对于诊断网络问题和优化网络性能非常有用。
traceroute命令的功能和用法-回复traceroute(或称为tracert)命令是一个网络诊断工具,用于追踪分析数据包在互联网中的传输路径。
通过使用ICMP(Internet Control Message Protocol)或UDP(User Datagram Protocol)数据包,traceroute命令可以测量数据包从源主机到目标主机的传输延迟和路径。
在本文中,我们将深入探讨traceroute命令的功能和用法。
首先,traceroute命令的基本功能是通过发送一系列的数据包,探测到达目标主机所经过的网络路由器。
这些数据包在目标主机返回时,会回传源主机的路径信息。
通过分析回传的路径信息,我们可以得知数据包在互联网中的传输路径和延迟。
traceroute命令主要用途包括以下几个方面:1. 排查网络连接问题:当我们无法连接到目标主机或网络服务时,使用traceroute命令可以帮助我们确定连接中的问题所在。
例如,如果traceroute命令显示在某个路由器上失败,那么可能是由于该路由器出现故障或配置错误导致的。
2. 评估网络延迟:通过traceroute命令,我们可以获得数据包在互联网中传输所经过的每个路由器的延迟时间。
这对于评估网络性能和诊断网络瓶颈非常有帮助。
通过比较不同路径上的延迟时间,我们可以确定网络中的延迟来源,并采取相应的优化措施。
3. 发现网络环路:网络环路是指数据包在互联网中无限循环传输的情况,它会导致网络通信的中断或严重的延迟。
使用traceroute命令可以检测到这些环路,并帮助网络管理员解决这些问题。
接下来,让我们详细介绍traceroute命令的用法:traceroute命令通常在命令行终端中使用,可以在各种操作系统中运行,如Windows、Linux和Mac。
它的基本语法如下:traceroute [选项] 目标主机名或IP地址其中,目标主机名或IP地址是我们要测试的目标主机的标识符。
路由追踪程序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进⾏设置),探测包的返回会受到⽹络情况的影响。
tracert 工作原理tracert是一种常用的网络命令,用于追踪数据包在网络中传输的路径。
它通过发送一系列的ICMP(Internet Control Message Protocol)回显请求数据包,来测量数据包从源主机到目标主机经过的网络节点的延迟和路径。
tracert的工作原理如下:1. 首先,tracert接收目标主机的IP地址作为输入。
2. 然后,tracert会发送一个TTL(Time to Live)值为1的ICMP回显请求数据包到目标主机。
3. 当第一个节点(路由器)接收到ICMP数据包时,它会将其TTL减一。
如果TTL减为0,则该节点会将ICMP数据包丢弃,并发送一个“超时”(Time Exceeded)消息给源主机。
4. 源主机收到“超时”消息后,会记录该节点为第一个跳点,并将TTL值加一,重新发送一个TTL为2的ICMP数据包。
5. 这个过程会一直重复,TTL值每次加一,直到ICMP数据包达到目标主机。
6. 每个节点收到ICMP数据包后,都会给源主机回复一个“回显应答”(Echo Reply)消息,表示该节点已经接收到了ICMP数据包。
7. tracert根据每个节点的回复消息,计算出从源主机到每个节点之间的往返时间(Round-Trip Time,RTT)。
8. tracert会将每个节点的IP地址、节点名称(如果有)和RTT值按照顺序显示出来,形成一个节点列表。
这个列表就显示了数据包从源主机到目标主机经过的路径。
通过tracert命令,我们可以检查网络中的延迟,找出网络连接中的瓶颈,并确定数据包传输的路径。
这对于网络故障排除和网络性能优化非常有帮助。
Tracert命令的工作原理1. 概述Tracert是Windows系统中用于网络故障排查的命令行工具。
它通过发送一系列的Internet控制消息协议(ICMP)回显请求报文(即Ping请求),来追踪数据包从本地计算机到目标主机经过的路由路径。
Tracert命令提供了一个逐跳探测的功能,可以显示数据包从源主机到目标主机经过的路由器(或者称为跳数)及每个跳点的往返时间(RTT)。
通过分析每个跳点的RTT,可以帮助诊断网络故障并确定延迟高、丢包率高等问题出现在何处。
2. 工作流程当执行Tracert命令时,操作系统会创建一个特殊类型的IP数据报文,并将其发送给目标主机。
该数据报文具有一个初始生存时间(TTL)字段,初始值为1。
该数据报文会被发送到目标主机,并在每个路由器上进行处理。
每当数据报文到达一个路由器时,TTL值会减1。
当TTL值减为0时,路由器将丢弃该数据报文,并向源主机返回一个ICMP超时消息。
源主机收到该消息后,就可以确定前一跳是哪个路由器。
Tracert命令会将这个路由器的IP地址和往返时间记录下来,并继续发送具有增加TTL值的数据报文,以便探测下一个跳点。
Tracert命令会重复上述过程,每次增加TTL值,直到目标主机被找到。
最终,Tracert命令会输出一张表格,显示了从源主机到目标主机经过的所有路由器及其对应的往返时间。
3. IP数据包的传输过程当Tracert命令发送ICMP回显请求报文时,操作系统将该报文封装成IP数据包,并通过网络传输。
以下是IP数据包在网络中的传输过程:1.源主机生成ICMP回显请求报文,并创建一个IP数据包。
2.源主机查找目标主机的IP地址对应的MAC地址(物理地址),如果目标主机不在本地局域网内,则需要查询路由表找到下一跳路由器的MAC地址。
3.IP数据包被封装成以太网帧(Ethernet Frame),其中目标MAC地址为下一跳路由器或者目标主机的MAC地址。
实验5 Tracert 程序 实验目的 1、掌握ICMP协议的基本工作原理,熟悉ICMP报头格式与各字段的含义。 2、掌握Tracert程序的基本功能、原理与实现方法。 3、掌握Tracert程序设计与软件编程方法。
Tracert的实现原理: 1、IP报头中TTL字段的含义和作用:生存时间字段,限制IP报文在网络中的停留时间(跳站数)。 2、Tracert程序利用TTL字段,通过从1开始递增TTL字段值,并接收与解析从各跳路由器发回的超时差错报文来收集路由信息。
实验环境(设备)
操作系统:Windows 7 开发语言:C++ 编译环境:Mc Visual vc6.0
实验内容
1、 初始化Winsock2网络环境 2、 解析命令行参数 3、创建原始套接字raw socket 4、设置raw socket 接收超时属性 5、定义IP和ICMP报头数据结构 6、填充ICMP回显请求消息 7、设置IP报头的TTL字段 8、按TTL递增的顺序发送ICMP请求 9、接收ICMP差错报文或ICMP回显应答 10、对接收报文进行解析处理 11、使用ICMP.dll库发送ICMP报文
程序源代码
第一个: #ifndef _ITRACERT_H_ #define _ITRACERT_H_ //IP数据报头 typedef struct { unsigned char hdr_len :4; // length of the header unsigned char version :4; // version of IP unsigned char tos; // type of service unsigned short total_len; // total length of the packet unsigned short identifier; // unique identifier unsigned short frag_and_flags; // flags unsigned char ttl; // time to live unsigned char protocol; // protocol (TCP, UDP etc) unsigned short checksum; // IP checksum unsigned long sourceIP; // source IP address unsigned long destIP; // destination IP address } IP_HEADER; //ICMP数据报头 typedef struct { BYTE type; //8位类型 BYTE code; //8位代码 USHORT cksum; //16位校验和 USHORT id; //16位标识符 USHORT seq; //16位序列号 } ICMP_HEADER; //解码结果 typedef struct { USHORT usSeqNo; //包序列号 DWORD dwRoundTripTime; //往返时间 in_addr dwIPaddr; //对端IP地址 } DECODE_RESULT; //ICMP类型字段 const BYTE ICMP_ECHO_REQUEST = 8; //请求回显 const BYTE ICMP_ECHO_REPLY = 0; //回显应答 const BYTE ICMP_TIMEOUT = 11; //传输超时 const DWORD DEF_ICMP_TIMEOUT = 3000; //默认超时时间,单位ms const int DEF_ICMP_DATA_SIZE = 32; //默认ICMP数据部分长度 const int MAX_ICMP_PACKET_SIZE = 1024; //最大ICMP数据报的大小 const int DEF_MAX_HOP = 30; //最大跳站数 USHORT GenerateChecksum(USHORT* pBuf, int iSize); BOOL DecodeIcmpResponse(char* pBuf, int iPacketSize, DECODE_RESULT& stDecodeResult); #ifndef _ITRACERT_H_ #define _ITRACERT_H_ //IP数据报头 typedef struct { unsigned char hdr_len :4; // length of the header unsigned char version :4; // version of IP unsigned char tos; // type of service unsigned short total_len; // total length of the packet unsigned short identifier; // unique identifier unsigned short frag_and_flags; // flags unsigned char ttl; // time to live unsigned char protocol; // protocol (TCP, UDP etc) unsigned short checksum; // IP checksum unsigned long sourceIP; // source IP address unsigned long destIP; // destination IP address } IP_HEADER; //ICMP数据报头 typedef struct { BYTE type; //8位类型 BYTE code; //8位代码 USHORT cksum; //16位校验和 USHORT id; //16位标识符 USHORT seq; //16位序列号 } ICMP_HEADER; //解码结果 typedef struct { USHORT usSeqNo; //包序列号 DWORD dwRoundTripTime; //往返时间 in_addr dwIPaddr; //对端IP地址 } DECODE_RESULT; //ICMP类型字段 const BYTE ICMP_ECHO_REQUEST = 8; //请求回显 const BYTE ICMP_ECHO_REPLY = 0; //回显应答 const BYTE ICMP_TIMEOUT = 11; //传输超时 const DWORD DEF_ICMP_TIMEOUT = 3000; //默认超时时间,单位ms const int DEF_ICMP_DATA_SIZE = 32; //默认ICMP数据部分长度 const int MAX_ICMP_PACKET_SIZE = 1024; //最大ICMP数据报的大小 const int DEF_MAX_HOP = 30; //最大跳站数 USHORT GenerateChecksum(USHORT* pBuf, int iSize); BOOL DecodeIcmpResponse(char* pBuf, int iPacketSize, DECODE_RESULT& stDecodeResult);
第二个程序: #include #include //These defines & structure definitions are taken from the //"ipexport.h" header file as provided with the Platform SDK. //Including them here allows you to compile the code without //the need to have the full Platform SDK installed. typedef ULONG IPAddr; // An IP address. typedef struct ip_option_information { UCHAR Ttl; // Time To Live UCHAR Tos; // Type Of Service UCHAR Flags; // IP header flags UCHAR OptionsSize; // Size in bytes of options data UCHAR * OptionsData; // Pointer to options data } IP_OPTION_INFORMATION, *PIP_OPTION_INFORMATION; typedef struct icmp_echo_reply { IPAddr Address; // Replying address ULONG Status; // Reply IP_STATUS ULONG RoundTripTime; // RTT in milliseconds USHORT DataSize; // Reply data size in bytes USHORT Reserved; // Reserved for system use PVOID Data; // Pointer to the reply data struct ip_option_information Options; // Reply options } ICMP_ECHO_REPLY, *PICMP_ECHO_REPLY; typedef HANDLE (WINAPI *lpIcmpCreateFile)(VOID); typedef BOOL (WINAPI *lpIcmpCloseHandle)(HANDLE IcmpHandle); typedef DWORD (WINAPI *lpIcmpSendEcho)(HANDLE IcmpHandle, IPAddr DestinationAddress, LPVOID RequestData, WORD RequestSize, PIP_OPTION_INFORMATION RequestOptions, LPVOID ReplyBuffer, DWORD ReplySize, DWORD Timeout); const int DEF_MAX_HOP = 30; //最大跳站数 const int DATA_SIZE = 32; //ICMP包数据字段大小 const DWORD TIMEOUT= 3000; //超时时间,单位ms #pragma comment (lib,"Ws2_32.lib") int main(int argc, char* argv[]) { //检查命令行参数 if (argc != 2) { cerr << "\nUsage: itracert ip_or_hostname\n"; return -1; } //初始化winsock2环境 WSADATA wsa; if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) { cerr << "Failed to initialize the WinSock2 DLL\n" << "error code: " << WSAGetLastError() << endl; return -1; }