Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由,还可以使用IP源路由选项;

Traceroute程序的操作

为什么不使用IP记录路由选项而另外开发这个程序:

1).原先并不是所有的路由器都支持记录路由选项

2).记录路由一般是单向的选项

3).IP首部留给选项的空间有限,不能存放太多的路径,在IP首部最多只能存放9个IP地址;

Traceroute程序使用ICMP报文和IP首部中的TTL字段。

每个处理数据报的路由器都需要把TTL的值减去1或者数据报在路由器中停留的秒数,由于大多数路由转发数据报的时延都小于1秒钟,因此TTL最终成为一个跳站的计数器,每经过一个路由器都将其值减1;

TTL字段的目的是防止数据报在选路时无休止的在网络中流动。

当路由器收到一份IP数据报时,如果其TTL字段是0或者1,则路由器不转发该数据报,而是将其丢弃,并且给信源发一份ICMP超时信息。当目的主机收到一份IP数据报,其TTL字段是0或者1时,则将其交给应用程序,但是通常情况下,系统不接受TTL为0的数据报。

TTL程序的操作过程:先发送一份TTL字段为1的IP数据报给目的主机,然后处理这份数据报的第一个路由器将TTL值减1,丢弃该数据报,并发回一个超时ICMP报文;这样就得到了该路径中的第一个路由器的地址,然后发送一份TTL为2的数据报,这样我们就可以得到第二个路由器的地址。然后继续这个过程直至该数据报达到目的主机,但是目的主机哪怕ji  接受到TTL值为1的IP数据报,也不会丢弃该数据报并产生一份超时ICMP报文,因为数据报以到达其最终目的地。

判断是否达到目的主机:选择一个不可能的值作为UDP端口号,使目的主机的任何一个端口都不可能使用该端口,因此,当数据报达到目的主机时,将使目的主机的UDP模块产生一份‘端口不可达”错误的ICMP报文。所以Traceroute程序凭借区分收到的是ICMP超时报文还是ICMP端口不可达报文就可以判断什么结束;

IP源站选路选项(又称源站及记录路由)

通常IP路由是动态的,即每个路由器都要判断数据报下面该转发到哪个路由器,应用程序不对此进行控制;

源站选路的思想是由发送者指定路由,有两种形式:

一.严格的源路由选择

发送端指明IP数据报必须采用的确切路由。如果一个路由器发现源路由指定的下一个路由器不在其直接相连的网络上,则返回一个“源站路由失败”的ICMP差错报文;

二.宽松的源站选路

发送端指明了一个数据报经过的IP清单,但是数据报在清单上指明的任意两个地址之间可以通过其他路由器;

从上图可以看出,每一跳IP数据报中的目的地址都发生改变,即都是下一个路由器的IP地址;当一个应用程序接收到由信源指定路由的数据时,在发送应答时,应该读出接收到的路由器,并提供反向路由。

可以用宽松的源站选路来检测发往目的主机的路由是否与从目的主机返回的路由一样(把发送端和接收端的IP地址设置为一样的);

TCP/IP协议学习记录之九:Traceroute程序相关推荐

  1. TCP/IP协议详解 卷1 Traceroute程序

    作用 可以让我们看到IP数据报从1台主机传到另一台主机所经过的路由.比Ping程序看到更多东西 优势 不是所有路由器都支持RR选项.所以有些路由器上会出现不记录IP的现象.Traceroute不需要路 ...

  2. TCP/IP协议学习记录之一:ppp适配器和以太网适配器

    首先看几个图片 1.当我的电脑有宽带连接的时候,在cmd窗口ipcofig会出现: 会显示两个IP地址,一个是PPP适配器的宽带连接,一个是以太网适配器的本地连接,然后我们分别来ping这两个IP地址 ...

  3. TCP/IP协议学习( 三 ) ---- ping原理 和 ICMP

    TCP/IP协议学习( 三 ) ---- ping原理 和 ICMP 1. 命令ping的用法和解析 1.1 ping 的用法 1.2 TTL 是什么? 1.3 SEQ是什么? 2.ICMP协议 2. ...

  4. TCP/IP协议学习(五) 基于C# Socket的C/S模型

    TCP/IP协议作为现代网络通讯的基石,内容包罗万象,直接去理解理论是比较困难的:然而通过实践先理解网络通讯的理解,在反过来理解学习TCP/IP协议栈就相对简单很多.C#通过提供的Socket API ...

  5. tcp ip 协议 学习

    tcp ip 协议学习. linux 内核版本 : 3.18.48 主题: 由于只关心 传输层和网络层这2层 ,所以TCP/IP是重点. 从哪里开始? 从下往上还是从上往下 ?  思考良久 还是从 T ...

  6. TCP/IP协议学习笔记

    TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中 ...

  7. TCP/IP协议学习笔记(二)

    工程建立: 先建Project然后添加module和package,如图所示: 代码编写: 首先代码中会出现中文字符,所以要在代码中添加#coding utf-8,避免出现乱码. 然后明确TCP/IP ...

  8. TCP/IP协议学习之计算机中的端口

    端口的概念 在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem.集线器.交换机.路由器用于连接其他网络设备的接口,如RJ-45端口.SC端口等等.二是逻辑意 ...

  9. TCP/IP协议学习

    计算机网路学得不好,首先先放个OSI七层网络模型吧 在协议的控制下,上层对下层进行调用,下层对上层进行服务, 上下层间用交换原语交换信息.这样可以提高传输速率,并且保证数据安全,所以说其实每一层都有存 ...

最新文章

  1. linux内核map图
  2. STM8不用手动复位进入自带Bootloader方法(串口下载)
  3. 微服务访问安全设计方案全探索
  4. SAP HANA简介
  5. mysql触发器对同一张表做操作_MySql 触发器对同表操作
  6. 动力节点老杜mysql文件_mysql主从复制+mysql主从复制延迟解决方案
  7. SD 胡策 Round 1 T3 彩尾巴猹的二进制数
  8. 第十二届蓝桥杯Java省赛A组试题:异或数列
  9. python字典替换值_python字典改变value值方法总结
  10. POJ1256 Anagram(回溯法)
  11. python预测实例教程_手把手教你用Python库Keras做预测(附代码)-阿里云开发者社区...
  12. 【Java】Java-XML解析利器-SAX-高性能-易用
  13. [转载]MySQL优化之索引的运用(2)
  14. ISO C90 forbids mixed declarations and code 警告
  15. 企业级 布署 vmvare Esxi 5.0.0 从零开始教程 (二) vSphere clinet 安装
  16. C10K 和 C1000K 回顾
  17. 基于RFID技术的智能交通解决方案
  18. hadoop 下载慢的解决方案
  19. win10电脑:。。。该内存不能为written.要终止程序,请单击确定
  20. 武林传奇之七剑下天山java游戏开发商_拓展训练项目之七剑下天山

热门文章

  1. 【强化学习文献阅读】DRN:新闻推荐的深度强化学习框架
  2. 测试小故事26:软件测试的艺术
  3. 2022R2移动式压力容器充装上岗证题目及答案
  4. 计算机视觉学术速递[2021.7.28]
  5. 牛客网日刷30题错题解析
  6. Segmentation fault段错误出现原因分析及解决方法笔记
  7. pe盘启动MySQL_将已经分区的移动硬盘弄成启动WIN PE盘(一般无需要格式化) 并进行GHO或ISO原版安装系统(亲自制作成功) | 学步园...
  8. C语言中whlie(1)跳出循环的三种结束方式
  9. 使用js实现黑白翻转棋
  10. (脑肿瘤分割笔记:七十一):A Robust Volumetric Transformer for Accurate3D Tumor Segmentation