Traceroute是Linux和Mac OS等系统默认提供的路由追踪小程序,Tracert是Windows系统默认提供的路由追踪小程序。二者的功能相同,都能探测数据包从源地址到目的地址经过的路由器的IP地址。Traceroute/Tracert的实现都借助了TTL:通过向目的地址发送一系列的探测包,设置探测包的TTL初始值分别为1,2,3…,根据返回的超时通知(ICMP Time Exceeded Message)得到源地址与目的地址之间的每一跳路由信息。

二者两者输出结果一致,但在实现原理上有差别。traceroute发送的是UDP的探测包,tracert发送的是ICMP的请求。

  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进行设置),探测包的返回会受到网络情况的影响。如果防火墙封掉了ICMP的返回信息,那么相应的延时位置会以*显示。如果某台网关阻塞或者某台DNS出现问题,那么相应行的延时会变长。可以加-n 参数来避免DNS解析,以IP格式输出数据。

3.每个探测包都有唯一的标识号,使得Traceroute能够识别返回的包。UDP数据包使用递增的目标端口号进行标识。

Traceroute参数:

  • -d    使用Socket层级的排错功能
  • -f    设置第一个检测数据包的存活数值TTL的大小
  • -F    设置勿离断位
  • -g    设置来源路由网关,最多可设置8个。
  • -i     使用指定的网络界面送出数据包。
  • -I     使用ICMP回应取代UDP资料信息。
  • -m    设置检测数据包的最大存活数值TTL的大小。
  • -n     直接使用IP地址而非主机名称。
  • -p     设置UDP传输协议的通信端口。
  • -r     忽略普通的Routing Table,直接将数据包送到远端主机上。
  • -s     设置本地主机送出数据包的IP地址。
  • -t     设置检测数据包的TOS数值。
  • -v     详细显示指令的执行过程。
  • -w    设置等待远端主机回报的时间。
  • -x     开启或关闭数据包的正确性检验。

参考连接:

https://www.cnblogs.com/machangwei-8/p/10353279.html#_label0

https://www.freebuf.com/news/topnews/63148.html

Traceroute和Tracert相关推荐

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

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

  2. 路由追踪——traceroute与tracert

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

  3. traceroute和tracert区别

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

  4. traceroute和tracert的原理

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

  5. traceroute和tracert用法详解

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

  6. Tracert与Traceroute[转]

    Tracert与Traceroute traceroute是一个检查网络路径的工具,最初由Van Jacobson实现.它现在已经成为Linux.Cisco IOS以及其他很多操作系统的基本网络工具之 ...

  7. 路由追踪程序traceroute/tracert分析与科普

    一.路由追踪程序traceroute/tracert Traceroute是Linux和Mac OS等系统默认提供的路由追踪小程序,Tracert是Windows系统默认提供的路由追踪小程序.二者的功 ...

  8. 3.ICMP_抓包分析traceroute路由追踪

    一.路由追踪程序traceroute/tracert Traceroute是Linux和Mac OS等系统默认提供的路由追踪小程序,Tracert是Windows系统默认提供的路由追踪小程序.二者的功 ...

  9. traceroute命令详解

    基础命令学习目录首页 原文链接:https://www.cnblogs.com/peida/archive/2013/03/07/2947326.html 通过traceroute我们可以知道信息从你 ...

最新文章

  1. hdu3635 Dragon Balls(带权并查集)
  2. js 中英文字符串长度
  3. 2015蓝桥杯省赛---java---A---8(移动距离)
  4. 万丰科技机器人排名_机器人系统集成“7宗最”
  5. python求线段长度_python微元法计算函数曲线长度的方法
  6. Pytest框架集成Allure定制测试报告详解(一)
  7. Unity3D播放背景音乐
  8. vim批量删除与插入
  9. LVW特征选择算法简单介绍
  10. 中国大数据风控企业揭秘系列之航天信息
  11. 思岚A1激光雷达的测试(windows)
  12. opencv实战——机器视觉检测和计数
  13. Bootstarp未读消息铃铛
  14. 整数序列中的众数和中位数
  15. 快速开发混凝土搅拌企业管理平台
  16. 做站的建站流程有哪些呢?
  17. java-php-python-桔子酒店客房管理系统计算机毕业设计
  18. 生字癖用计算机,那些因为太复杂没被收录的生僻字,终于被录入电脑
  19. 图像压缩Vs.压缩感知
  20. 视频号播放量破10万,这6招帮你上热门!

热门文章

  1. java如何实现多个小球碰撞后反弹以及绘制动态图。
  2. 市级数字政府电子政务大数据中心项目建设和运营方案
  3. 公鸡5块钱,母鸡3块钱,小鸡1块钱3只,有100圆,有多少种买法?
  4. javascript导出excel中文乱码
  5. COCO格式转yolov5训练格式
  6. Ai Studio零基础学习心得
  7. matlab:GS算法
  8. 图书管理系统E-R图
  9. 微服务11_ES:DSL/RestClient查询文档
  10. Deepin常用可视化软件