`
shwan
  • 浏览: 11617 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Linux 下 traceroute 的实现原理

阅读更多
traceroute是一个非常好用的用于跟踪路由包的工具,最基本的用法是 traceroute xxx.xxx.xxx.xxx
这条命令会输出从本机到指定ip地址所经过的所有路由节点的ip,以及一些时间等额外信息。

tranceroute的实现原理,主要是依赖了ICMP(Internet Control Message Protocol)协议,该协议
主要用于在网络中传递控制信息,包括一些出错信息等。协议定义了一些标准错误类型,其中有一项为:
ICMP_TIME_EXCEEDED,该类型包含两个子类型:
ICMP_EXC_TTL        超过TTL
ICMP_EXC_FRAGTIME   超过片段重组时间

ICMP_EXC_TTL 是traceroute实现的根本基础,原理如下:
假设A主机使用traceroute来跟踪至E主机的路由途径,则A会发送携带ICMP_ECHO(这是ping命令的实现基础),且TTL为1的IP包
显然,路由B在收到该包时,由于TTL=1,则拒绝转发该包,并发送ICMP_EXC_TTL代码给源地址。当A收到该反馈后,会继续发送ICMP
包,并递增TTL,使其加1,这样,则会找到路由表中的下一个路由跃点。以此方法,则可以获得全部的路由节点。

当然,这种方法返回的路径并不一定是完全正确,主要是因为复杂网络中的一些不可控因素或者动态路由的原因,使得结果不一定100%
和实际情况吻合。
分享到:
评论

相关推荐

    linux下用c写的traceroute

    三、Traceroute实现步骤 1. **初始化**: 创建一个UDP套接字,设置其TTL值为1,然后将其绑定到本地的任意端口。 2. **发送数据包**: 以递增的TTL值(通常从1开始,每次增加1)发送数据包到目标主机。每个数据包包含...

    traceroute-2.1.0.rar

    本篇将详细介绍Linux下Traceroute的使用和安装过程。 一、Traceroute的基本原理 Traceroute的工作原理基于IP协议中的TTL字段。每个数据包在网络中传输时,每经过一个路由器,其TTL值都会减1,当TTL为0时,路由器会...

    linux下用socket+Qt实现的TraceRoute程序

    在Linux环境下,开发一个基于socket和Qt的TraceRoute程序是一个结合了网络编程和GUI设计的实践项目。这个项目旨在帮助用户追踪数据包在网络中的路由路径,同时为初学者提供了一个学习socket编程和Qt库的好机会。以下...

    traceroute-2.1.0源码

    在Linux系统中,`traceroute`命令通过发送具有不同时间戳(TTL,Time To Live)的UDP或ICMP数据包到目标主机,来探测数据包从源到目的地经过的路由器节点。当一个数据包的TTL值减为0时,路由器会将其丢弃并返回一个...

    traceroute

    然而,这个压缩包中的源代码提供了一个实现,允许用户在没有root权限的情况下也能使用`traceroute`。 首先,让我们深入了解一下`traceroute`的工作原理。它通过向目标主机发送具有递增TTL(生存时间)值的数据包来...

    traceroute 网络工具源码

    《深入剖析Traceroute网络工具源码:Unix平台下的C语言实现》 Traceroute,一个在网络诊断领域不可或缺的工具,其主要功能是追踪数据包在网络中的路由路径,帮助我们理解数据在网络中的传输过程,诊断网络延迟、丢...

    实现linux java ping 及traceroute 功能.zip

    总结,实现Linux环境下Java的`ping`和`traceroute`功能涉及到对网络协议的深入理解,以及可能需要使用第三方库。在C#中,`ping`操作相对简单,而`traceroute`则需要更多工作。两者都需要开发者具备扎实的网络基础和...

    基于Linux下基于ICMP和C的traceroute程序

    本项目聚焦于“基于Linux下基于ICMP和C的traceroute程序”,它旨在通过编程实现一个简易版的traceroute功能,从而让学生深入理解网络通信的底层原理,特别是ICMP(Internet Control Message Protocol)协议在其中的...

    traceroute源码

    通过分析traceroute命令的源码,我们可以深入理解网络协议的工作原理,以及如何在实际应用中实现这些原理。 traceroute的工作机制基于ICMP(Internet Control Message Protocol)回显请求和UDP(User Datagram ...

    Linux基础课件网络测试命令traceroute命令共1

    在“Linux基础课件网络测试命令traceroute命令共10页.pdf.zip”这个压缩文件中,可能包含了关于traceroute命令的详细讲解,包括其工作原理、常用选项、命令用法以及实际案例分析。这些内容可能覆盖了以下知识点: 1...

    计算机网络实验-实现traceroute

    在计算机网络领域,Traceroute是一款非常重要的诊断工具,它用于追踪数据包在网络中的路径,帮助我们理解...在实际操作中,你可以参考开源的Traceroute实现,如mtr或vanjohng/traceroute,这些代码可以作为学习的参考。

    traceroute.c

    本篇文章将深入探讨traceroute的工作原理、核心算法以及源码实现的关键部分。 一、traceroute工作原理 1. 时间戳与TTL(Time To Live)机制:traceroute通过改变发送报文的TTL值来探测数据包在网络中经过的路由器...

    Traceroute程序,非常精典

    2. **广泛兼容性**:大多数操作系统都内置了Traceroute功能,这意味着无论是在Windows、Linux还是macOS等平台上,用户都可以轻松使用该工具。 3. **实时性**:它可以实时显示数据包传输过程中经过的每个节点,这对于...

    traceroute程序设计及实现.doc

    5. **Tracert 命令**: Tracert(Windows系统中)或traceroute(Unix/Linux系统中)是实现路由追踪的命令行工具,它发送具有递增TTL值的UDP或ICMP数据包,从而收集沿途路由器的信息。 6. **程序设计**: 文档可能详细...

    linux 下的教程

    本教程将通过PPT的形式,详细讲解Linux环境下的各种应用及其驱动程序的工作原理和操作技巧。 首先,我们要明白Linux是一个开源的操作系统,它提供了丰富的命令行工具和图形用户界面(GUI)应用程序。这些应用涵盖了...

    Linux命令查询全集 chm

    通过深入理解和实践这些命令,用户不仅能提升在Linux环境中的操作技能,还能更好地理解系统的工作原理,为更高级的系统管理和开发工作打下坚实基础。无论你是初学者还是经验丰富的Linux用户,这样全面的命令集都值得...

    嵌入式Linux C编程入门(第2版) PPT

    2.1 嵌入式linux下c语言概述 32 2.1.1 c语言简史 33 2.1.2 c语言特点 33 2.1.3 嵌入式linux c语言编程环境 34 2.2 嵌入式linux编辑器vi的使用 35 2.2.1 vi的基本模式 35 2.2.2 vi的基本操作 36 ...

    LINUX 24学时教程

    此外,你还将掌握管道符(`|`)和重定向(`>`、`)的用法,以实现命令的组合和数据流控制。 在用户和组管理方面,理解用户权限和组的概念至关重要。你将学习如何创建新用户、修改用户属性,以及如何通过修改`/etc/...

    linux下ping程序

    Linux下的ping程序是一个非常基础且重要的网络诊断工具,它用于检查网络连接的可达性。通过发送Internet控制消息协议(ICMP)回显请求到目标主机,ping程序会等待响应并显示往返时间,从而帮助用户判断网络连接是否...

    linux 内核解析,命令大全

    对于深入理解Linux,掌握内核工作原理和常用命令是至关重要的。下面,我们将详细讨论"Linux内核解析"和"命令大全"这两个关键知识点。 首先,我们来关注"Linux内核解析"。Linux内核是操作系统的核心部分,负责管理...

Global site tag (gtag.js) - Google Analytics