Traceroute程序

一、原理

Traceroute发送一份UDP数据报给目的主机,但它选择一个不可能的值作为UDP端口号,使得目的主机的任何一个应用程序都不可能使用该端口。
起始时,数据报的TTL字段是1,然后每次把TTl字段依次加1,以确定路径中的每个路由器。
每个路由器在丢弃的UDP数据报时都返回一个ICMP超时报文,而最终主机产生一个ICMP端口不可达的报文。

二、ICMP超时报文格式

?

三、Traceroute程序

  1. 不能保证现在的路由就是将来所采用的路由,甚至连续两份的IP数据报都可能采用不同的路由。
  2. 不能保证ICMP报文的路由与traceroute程序发送的UDP数据报采用同一个路由。
  3. 返回的ICMP报文中的信源IP地址是UDP数据报到达的路由器接口的IP地址,而不是路由器发送接口的地址。
时间: 2024-10-13 17:13:16

Traceroute程序的相关文章

Ping程序与Traceroute程序的原理(五)

(参考文献)TCP/IP详解,卷1:协议 "ping"这个名字来源于声呐定位操作.目的是为了测试另外一台主机是否可以到达.该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答. 一般来说,如果不能ping到某台主机那么就不能Telnet或者FTP到那台主机.反过来,如果不能Telnet到某台主机,那么通常可以用ping程序来确定问题出在哪里.Ping程序还能测出到这台主机的往返时间,以表明该主机离我们有"多远". Ping程序 我们称发送回显请求的p

traceroute程序剖析

traceroute允许我们确定IP数据报从本地主机游历到某个远程主机所经过的路径.     我们先来说明tranceroute的工作原理:是IP路由过程中对数据包TTL(Time to Live,存活时间)的处理.当路由器收到一个IP包时,会修改IP包的TTL(及由此造成的头部检测和checksum变化).每收到一个包,检查这个的TTL是否是0或1.如果是,表明这个包还没有到达目的地,而且剩余时间不多了,肯定是到不了目的地了.这样路由器就简单地丢弃这个包,并给源主机发送ICMP通知,说明这个包

TCP/IP详解 卷一(第七、八章 Ping、Traceroute程序)

Ping程序 Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达. 该程序发送一份ICMP回显请求报文给主句,并等待返回ICMP回显应答. ping程序还能测出到这台主机的往返时间 Traceroute程序 Traceroute程序是一个能更深入探索TCP/IP协议的方便可用的工具 Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由. 下图是书本的一个例子

TCP/IP详解,卷1:协议--第8章 Traceroute程序

引言 由Van Jacobson编写的Tr a c e r o u t e程序是一个能更深入探索T C P / I P协议的方便可用的工具. 尽管不能保证从源端发往目的端的两份连续的 I P数据报具有相同的路由,但是大多数情况下 是这样的.Tr a c e r o u t e程序可以让我们看到I P数据报从一台主机传到另一台主机所经过的路由. Tr a c e r o u t e程序还可以让我们使用I P源路由选项. 使用手册上说:"程序由Steve Deering提议,由Van Jacobso

查看外网出口IP && Traceroute

一.CentOS 查看外网出口IP 1---------------- # curl ifconfig.me 2----------------# curl icanhazip.com 二.Traceroute最简单的基本用法是:traceroute hostname Traceroute程序的设计是利用ICMP及IP header的TTL(Time To Live)栏位(field).首先,traceroute送出一个TTL是1的IP datagram(其实,每次送出的为3个40字节的包,包括

每天一个linux命令(42)--traceroute命令

通过traceroute 我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上 来说大部分时候所走的路由是相同的.Linux 系统中个,我们称之为 tracertoute,在 MS  Windows 中为 tracert. traceroute 通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间.一条路径上的每个设备traceroute要测3次.输出结

Traceroute命令原理(转)

Traceroute命令基本功能 该命令用于测试两个TCP/IP系统之间的网络层连通性和显示传输路径中每一跳地址,又称为路径跟踪,如果Traceroute命令测试成功,我们能够观察到从源主机到目的主机之间的一条完整的通信路径,能够明确的观察到路径的每一跳信息:该命令还能准确输出测试包到每一跳的通信延迟时间. 如果测试失败,也能够明确定位是哪一跳设备不能正常转发,该工具还能够测试路由是否选择最佳路径,是否存在非对称路径等问题,在复杂拓扑下具有更强大的测试能力. Traceroute命令基本原理 当

结合tcpdump命令对traceroute深入分析

昨天突然被问到traceroute的原理,一时竟也说不出来,有些命令平时虽然经常在用,但实际原理确并不了解,趁这次机会就来梳理一下. traceroute:是网络诊断中,用来分析IP包经过那些路由的命令. 学前知识: IP包中有个字段TTL,这个是最大跳转次数的字段,每经过一个路由器,值会-1,当值为0的时候,这个包就会被路由器丢弃,并返回ICMP-超时包给请求主机. 实现原理: 1.traceroute首先发出三个UDP包(发出三个主要是为了统计,这里可以不用太在意),其TTL的字段为1,目的

python 版本traceroute和路由图片输出

python 的traceroute功能能利用scapy模板很方便实现,并且可以输出路由图片非常直观. 这里了修改了<python自动化运维:技术与最佳实践>的代码进行说明. #!/usr/bin/evn python #-*-coding:utf-8 -*- import time import logging,warnings import subprocess import socket # eclipse的pydev提示unresolve,但运行正常 from scapy.all im