一、Traceroute

traceroute 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。
路由器收到TTL为1的包文减1后直接丢弃,然后回复 ICMP(type=11,code=0,TTL equals 0 during transit——传输期间生存时间为0)。
目标主机收到traceroute 的UDP探测包回复ICMP(type=3,code = 3,端口不可达)。Linux上称之为 traceroute,Windos类似的功能为tracert。

linux 上 traceroute 运行过程:
traceroute 连续发送TTL从1开始递增的UDP包,目标端口 30000+,相同的目标地址,每个TTL相同的UDP包默认发送三个,端口依次递增。当收到目标地址回的 ICMP包(端口不可达),traceroute 停止发包,否则继续发送,默认最多发送 30 个,每个包大小 60Byte(IP+UDP+Data)。

[root@localhost sbc]# traceroute 10.228.90.70
traceroute to 10.228.90.70 (10.228.90.70), 30 hops max, 60 byte packets1  10.228.113.1 (10.228.113.1)  1.513 ms  2.367 ms  3.182 ms2  10.228.2.173 (10.228.2.173)  1.709 ms  2.584 ms  3.338 ms3  10.228.1.37 (10.228.1.37)  1.533 ms  2.233 ms  3.057 ms4  10.228.1.26 (10.228.1.26)  1.870 ms  2.652 ms  3.477 ms5  10.228.3.162 (10.228.3.162)  1.909 ms  2.728 ms  3.756 ms6  10.228.90.70 (10.228.90.70)  0.292 ms  0.266 ms  0.261 ms

流程分析:
1.连续发送 UDP 包,从seq69到到seq83连续15个报文,每三个包TTL增加1,总共发送五跳网元的探测报文,从上面截图可以看端口是逐渐加1。


2.发送seq84包的时候,TTL是6,立马收到ICMP seq85的包,端口不可达响应。但是后面继续发送两个TTL为6的包,仍然收到ICMP的响应。

3.针对前面发送的15个探测包,全部收到ICMP的响应包,TTL超期。

二、Tracert

通过向目标发送不同 IP 生存时间 (TTL) 值的“Internet 控制消息协议 (ICMP)”回应数据包,Tracert诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。

Tracert 先发送 TTL 为 1 的回应数据包,并随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。某些路由器不经询问直接丢弃 TTL 过期的数据包,这在 Tracert 实用程序中看不到。

Tracert 有一个固定的时间等待响应(ICMP TTL到期消息)。如果这个时间过了,它将打印出一系列的*号表明:在这个路径上,这个设备不能在给定的时间内发出ICMP TTL到期消息的响应。然后,traceroute 给TTL记数器加1,继续进行。

报文监测如下:

1、从10.40.140.97 到 10.43.85.162 经过 3 跳,第 4 跳到达目标主机。

2、PC机依次发送ICMP请求信息(Type=8,Echo request——回显请求[Ping请求]),收到目标主机的ICMP回的应答信息(type=0,Echo Reply——回显应答[Ping应答])后,停止发送请求信息,注意是三个应答信息都收到之后,才停止发送

3、当超出设定的跳数,源主机也会停止发送ICMP请求,如下所示设置跳数为3

3、小结
tracert 和 traceroute虽然都是路由跟踪,但是两者探测方法及探测的数据类型不同。默认情况下,traceroute是向目的地址的某个端口(大于30000)发送UDP数据报,tracert是向目的地址发出ICMP请求回显数据包。
当出现了tracert可达,但是traceroute不可达时,需要考虑路径的路由器是否对UDP进行了过滤,或者端口限制。

traceroute和tracert原理相关推荐

  1. traceroute和tracert用法详解

    一.什么是Traceroute?                  Internet,即国际互联网,是目前世界上最大的计算机网络,更确切地说是网络的网络.它由遍布全球的几万局域网和数百万台计算机组成, ...

  2. traceroute的工作原理

    MyySophia5个月前 traceroute的工作原理 是利用ICMP差错控制报文中的TTL超时会回向源点发送一个时间超时报文.例如A 主机 traceroute B主机,A会封装一些分组,这些分 ...

  3. traceroute和tracert的原理

    traceroute的原理: 1.traceroute主机向被trace主机发送UDP的数据包,目的端口是编号较大的端口(比如33434端口) 2.首包TTL=1,Dport=33434:以后的数据包 ...

  4. 路由追踪——traceroute与tracert

    一.路由追踪 (一)路由跟踪,就是获取从主机A到达目标主机B这个过程中所有需要经过的路由设备的转发接口IP. (二)ICMP协议 Internet控制报文协议(internet control mes ...

  5. traceroute和tracert区别

    二者都用于探测数据包从源到目的经过路由的IP,但两者探测的方法却有差别. 不同点: 一.应用环境不同 tracert是应用在windows下. traceroute则是应用在linux/BSD/rou ...

  6. Traceroute和Tracert

    Traceroute是Linux和Mac OS等系统默认提供的路由追踪小程序,Tracert是Windows系统默认提供的路由追踪小程序.二者的功能相同,都能探测数据包从源地址到目的地址经过的路由器的 ...

  7. traceroute用法与原理分析

    traceroute是linux/unix系统中用于分析本地到目标网络地址间的路由转发路径的工具,也常用于诊断网络链路不通或异常的发生位置.在windows中也有类似功能的工具,名为tracert. ...

  8. ping,tracert 原理

    ping 程序是利用icmp的回复请求来探测远端主机是否可达.(并不能继续判断端口是否可达.要想查看端口,就要使用扫描器了.)win2000里的网络库里已经提供网络函数库(icmp.dll)可以实现利 ...

  9. 网络命令——traceroute、tracert(windows)

    traceroute 路由追踪 语法:traceroute 参数 ip / 域名 1.检测是否安装 traceroute rpm -qa | grep traceroute 2.可以用 yum apt ...

  10. ping和traceroute的工作原理

    PING原理 PING是基于ICMP协议(网络层)工作的 ICMP:Internet Control Message Protocol,互联网控制报文协议 ICMP用于报告传输过程中出现的问题,比如确 ...

最新文章

  1. 清除AD中残留的Exchange2003服务器信息
  2. yum update不升级内核方法
  3. java jdwp如何关闭_蚀-本机方法中的致命错误:JDWP没有初始化传输,jvmtiError = AGENT_ERROR_TRANSPORT_INIT(197)...
  4. ServletContext 对象
  5. python读取csv某一列存入数组_python 读取.csv文件数据到数组(矩阵)的实例讲解
  6. Idea解决Web server failed to start. Port 8080 was already in use.端口被占用(亲测)
  7. https下不加www的强制跳转 - Nginx
  8. datetime对应的java类型_MySQL数据类型笔记
  9. 开源社区慌不慌?又一个 Linux 发行版宣告死亡
  10. c语言报错spawning 插1,C语言错误····error spawning c1.exe
  11. 【转】动态链接库(Dynamic Link Library)学习笔记
  12. 【Linux】/etc/shadow文件字段解释
  13. post postman 传递数组对象_okhttp传递数组参数
  14. AtCoder Grand Contest 018 A
  15. css实现圆球旋像水波波动_这49个CSS知识点你未必会知道
  16. Tinder + 抖音 = ?新生代约会 App 来了,年轻人在刷刷刷中坠入爱河
  17. Scratch3.0创意编程(基础篇):第10课 接苹果
  18. 【Python】Pymyql模块的execute()总结
  19. Android开源框架:Retrofit
  20. 恒指均线流区间突破法的构建

热门文章

  1. 学平面设计好找工作吗?做平面设计需要会什么技巧!
  2. 自建网盘教程之:使用可道云搭建私有云网盘,无需数据库,windows操作界面
  3. 《程序设计基础课程设计》实验报告
  4. 监控流媒体服务器的搭建和使用
  5. RayTrace1:如何实现Whitted全局光照模型?
  6. java bsh介绍_BeanShell简介
  7. android开发之GPS定位详解
  8. gps导航卫星星历及历书参数意义
  9. Translation 翻译插件google
  10. 开源中国上几款免费又好用的OA协同办公系统,真心不错!