Traceroute原理学习

Traceroute原理学习Traceroute可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由。曾经介绍过IP记录路由的选项RR,为什么不使用这个选项而另外开发一个新的应用程序Traceroute呢?原因有三:其一,并不是所有的路由器都支持记录路由这个选项;其二,记录路由一般是单向的选项,发送端设置了该选项,接收端不得不从收到的IP首部中提取出所有的信息,然后全部返回给发送端。大多数的ping服

大家好,又见面了,我是你们的朋友全栈君。

Traceroute可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由。

曾经介绍过IP记录路由的选项RR,为什么不使用这个选项而另外开发一个新的应用程序Traceroute呢?

原因有三:

其一,并不是所有的路由器都支持记录路由这个选项;

其二,记录路由一般是单向的选项,发送端设置了该选项,接收端不得不从收到的IP首部中提取出所有的信息,然后全部返回给发送端。大多数的ping服务器把接收到的RR清单返回(存于ICMP中),这样使得记录的IP地址翻了一番。

其三,IP首部的空间有限,不能存放当前大多数的路径。只能存放9IP地址。

 

Traceroute使用ICMP报文和IP首部中的TTL字段。TTL字段是由发送端初始设置的一个8bit的字段,推荐值为64,。每个处理数据包的路由都需要把TTL的值减1或者减去在路由器中停留的秒数,由于大多数路由器的转发数据包的时延都小于1秒,因此TTL最终成为一个跳站的计数器,所经过的每个路由器都将其值减1

 

当路由器收到一个IP数据包时,如果其TTL字段是0或者1,则路由器不转发该数据报,而是将该数据包丢弃,并给信源机发送一份ICMP超时信息,Traceroute程序的关键在于包含这份ICMP信息的IP报文的信源地址是该路由器的IP地址。

 

Traceroute程序的操作过程:它发送一份TTL字段为1IP数据报给目的主机。处理这份数据报的第一个路由器将T TL值减1,丢弃该数据报,并发回一份超时ICMP报文。这样就得到了该路径中的第一个路由器的地址。然后Traceroute程序发送一份TTL值为2的数据报,这样我们就可以得到第二个路由器的地址。继续这个过程直至该数据报到达目的主机。但是目的主机哪怕接收到TTL值为1I P数据报,也不会丢弃该数据报并产生一份超时ICMP报文,这是因为数据报已经到达其最终目的地。那么我们该如何判断是否已经到达目的主机了呢?

Traceroute程序发送一份U DP数据报给目的主机,但它选择一个不可能的值作为UDP端口号(大于30 000),使目的主机的任何一个应用程序都不可能使用该端口。因为,当该数据报到达时,将使目的主机的U DP模块产生一份端口不可达错误的I CMP报文。这样,Traceroute程序所要做的就是区分接收到的ICMP报文是超时还是端口不可达,以判断什么时候结束。

Traceroute出到百度主机的过程:

Traceroute原理学习

查看本机路由:

Traceroute原理学习

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

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

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


相关推荐

  • 图书馆管理系统需求规格说明书

    图书馆管理系统需求规格说明书青院图书馆信息管理系统软件需求规格说明书文档编号 QY LY7 文档信息 图书馆信息管理系统软件需求规格说明书文档类别 管理文档密 nbsp nbsp nbsp nbsp 级 机密版本信息 1 0 建立日期 2014 05 20 nbsp 创 nbsp 建 nbsp 人 审 nbsp 核 nbsp 者 批 nbsp 准 nbsp 人 批准日期 nbsp 编辑软件 Microsoft nbsp Office nbsp 2003 nbsp 中文版 WPS nbsp 文字

    2025年9月2日
    3
  • 电驴资源站

    电驴资源站以下为电驴资源站或者电驴资源搜索站,按推荐度排名。1、http://www.simplecd.org/新兴站点,号称山寨版的Verycd,注册就可发资源帖,下载资源无铜光盘限制!曾经据说由于某臭名

    2022年7月1日
    43
  • 数据挖掘项目_数据分析师怎么自学

    数据挖掘项目_数据分析师怎么自学数据挖掘项目1.数据导入一共有4754个样本,90列的数据表格中“status”是结果标签:0表示未逾期,1表示逾期。未逾期:3561逾期:11932.数据类型分析90列中70列为float,13列为int,7列objectobject类型的列名,以及其分布3.删除无关变量4.缺失值处理5.划分数据集测试集30%,训练集70%,随机种子设置为2018待…

    2025年9月15日
    2
  • C语言中scanf函数详解「建议收藏」

    C语言中scanf函数详解「建议收藏」scanf函数  上一节中我们讨论了,如何将整数,浮点数,字符串打印到屏幕上去。既然有输出,怎么能没有输入呢?这一节中,我们来介绍与printf相反的scanf函数。  scanf的功能是将键盘输入的字符串转换成整数、浮点数、字符或字符串。1.scanf函数的使用公式scanf是一个变参函数。(参数的数量和类型不确定)scanf的第一个参数是字符串。scanf的第一个参数是需要输入的字符串以及需要被读取的占位符。scanf的后续参数,是依次被读取并赋值的变量地址。占位符的类型和数量需要与

    2025年6月30日
    2
  • POJ 3009-Curling 2.0(DFS)

    POJ 3009-Curling 2.0(DFS)

    2022年1月11日
    33
  • APK签名原理

    APK签名原理网上已有多篇分析签名的类似文章,但是都有一个共同的问题,就是概念混乱,混乱的一塌糊涂。在了解APK签名原理之前,首先澄清几个概念:消息摘要-MessageDigest简称摘要,请看英文翻译,是摘要,不是签名,网上几乎所有android签名分析的文章都对这两个概念乱用摘要的链接http://en.wikipedia.org/wiki/Message_digest简

    2022年6月12日
    29

发表回复

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

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