traceroute和tracert原理

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、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 packets
 1  10.228.113.1 (10.228.113.1)  1.513 ms  2.367 ms  3.182 ms
 2  10.228.2.173 (10.228.2.173)  1.709 ms  2.584 ms  3.338 ms
 3  10.228.1.37 (10.228.1.37)  1.533 ms  2.233 ms  3.057 ms
 4  10.228.1.26 (10.228.1.26)  1.870 ms  2.652 ms  3.477 ms
 5  10.228.3.162 (10.228.3.162)  1.909 ms  2.728 ms  3.756 ms
 6  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进行了过滤,或者端口限制。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189902.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • lookdiv激活码_在线激活

    (lookdiv激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1435QFILVV-eyJsaWNlb…

    2022年3月30日
    145
  • python少儿趣味编程案例(python少儿编程书)

    Python简单易学,功能强大,是少儿学习编程的首选语言。本书是少儿学习Python编程的趣味指南,全书共17章,按照由简到难、逐步深入的方式组织各章内容。本书从认识Python开始,首先介绍了Python的安装和IDLE的使用,然后依次介绍了变量、数字和字符串、列表、元组和字典、布尔类型等数据类型,以及条件、循环、异常和注释、函数、面向对象编程、文件操作等基础知识,并且通过实际案例讲解了海龟绘图…

    2022年4月10日
    44
  • linux发送邮件命令_java实现邮件发送功能

    linux发送邮件命令_java实现邮件发送功能第一步,安装mail服务检测系统是否安装了mail服务[root@centos8~]#rpm-qf/usr/bin/mailerror:file/usr/bin/mail:Nosuchfileordirectory刚开始我的系统就没有mail服务,使用“yum-yinstallmailx”安装时有一只报错,提示“Error:Failedtodownloadmetadataforrepo‘appstream’:Cannotprepareinterna

    2022年10月20日
    3
  • matlab求解高阶常微分方程_状态依赖时滞微分方程的动力学研究

    matlab求解高阶常微分方程_状态依赖时滞微分方程的动力学研究**前言:**大学期间只学习过《常微分方程》,没想到有些学校竟然还学《时滞微分方程》,于是找到一本由内藤敏机(日本)等著,马万彪等译的《时滞微分方程——泛函数微分方程引论》(有需要的可以私聊,CSDN貌似上传不了书籍,说侵权emmm),看着头秃,不过受到不少启发,尤其是对Logistic方程的改进,真真是长见识了。没找到有人用欧拉法解一阶时滞微分方程的,于是一不做二不休便用MATLAB实现了一下下…

    2022年10月1日
    3
  • 详解Postman校验响应数据之设置断言编写Test脚本

    详解Postman校验响应数据之设置断言编写Test脚本

    2021年7月14日
    100
  • MySql索引类型

    MySql索引类型Mysql支持哪几种索引索引是在MySql的存储引擎层中实现的,而不是在服务器层从数据结构角度1、B+树索引(O(log(n))):关于B+树索引,可以参考 MySQL索引背后的数据结构及算法原理BTREE在MyISAM里的形式和Innodb稍有不同在Innodb里,有两种形态:一是primarykey形态,其leafnode里存放的是数据,而且不仅存放了索引键的数据,还存放了其他字段的数据…

    2022年6月12日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号