博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP/IP协议详解 卷1 Traceroute程序
阅读量:4126 次
发布时间:2019-05-25

本文共 1065 字,大约阅读时间需要 3 分钟。

作用

可以让我们看到IP数据报从1台主机传到另一台主机所经过的路由。比Ping程序看到更多东西

优势

  1. 不是所有路由器都支持RR选项。所以有些路由器上会出现不记录IP的现象。Traceroute不需要路由器具备任何特殊的功能
  2. RR选项的数据报的目的Ping服务器(主机)会将接受到的RR清单Copy回去。然后再加上回去的IP清单。这样就是X2。这会收到一些限制
  3. IP首部的空间有限,不能存放太多的IP(最多9个)
  4. 将TTL字段改成跳站的计数器

TTL

如果TTL的值为1或0时,路由器丢弃该数据报。并且给源主机发送一份ICMP超时信息。Traceroute程序将该路由器的IP地址包含在这份ICMP数据报中

如果是主机返回的ICMP是端口不可达的ICMP数据报。以此来区分路由器发送回来的还是主机发送回来的

ICMP超时报文

在这里插入图片描述

如果是TTL值等于0的时候产生的那code字段的值为0

如果是组装分片的时候发生超时,则code字段的值为1

Traceroute注意事项

不能保证ICMP报文的路由与Traceoute程序发送的UDP数据报采用同一路由

返回的ICMP数据报中包含的信源地址是路由器地址。但是IP记录路由选项(RR)是记录发送接口的地址。由于路由器有多个接口因此 A-B和B-A上运行Traceroute的返回结果可能会有所不同

IP源站选路选项

路由器发现下一站需要转发的路由器通常是采用Traceroute这样的程序完成。由发送者指定路由

规则有两种,严格的源路由选择(SSRR)和宽松的源路由选择(LSRR)
严格的源路由选择: 发送端指明IP数据报所要经过的确切路由,如果该IP不在其直接相连的网络上,则返回一个“源站路由失败”的ICMP差错报文
宽松的源路由选择:发送端指名IP数据报所要经过的IP清单,清单上的任意两个IP地址之间可以通过其他路由器

IP首部路由选项通用格式

在这里插入图片描述
跟IP路由选项的格式一样,不同的是源站选路一开始就要把清单填入。并且只需要分配足够的空间即可(IP地址清单通长会少于9个)
宽松的源站选路的code是0x83,严格的是0x89

源站路由选项运行过程:

  1. 发送主机收到源站路由清单,将第1个表项去掉(数据报的最终目的地),将剩下的项往前移动,然后将目的地址作为清单最后一项,类似把原本第一行的数据丢到最后一行去
  2. 每个处理数据报的路由都会检查自己的IP是否是清单中的最终地址。如果不是则转发(宽松的源站选路才可以)
  3. 如果路由是最终地址了那就将路由器的外出接口相对应的IP设为源地址,指针+4
    在这里插入图片描述

转载地址:http://wkepi.baihongyu.com/

你可能感兴趣的文章
C 语言 学习---ComboBox相关、简易“假”管理系统
查看>>
C 语言 学习---回调、时间定时更新程序
查看>>
C 语言 学习---复选框及列表框的使用
查看>>
第四章 - 程序计数器
查看>>
第七章 - 本地方法栈
查看>>
第十一章 - 直接内存
查看>>
JDBC核心技术 - 上篇
查看>>
一篇搞懂Java反射机制
查看>>
MySQL主从复制不一致的原因以及解决方法
查看>>
RedisTemplate的key默认序列化器问题
查看>>
序列化与自定义序列化
查看>>
ThreadLocal
查看>>
从Executor接口设计看设计模式之最少知识法则
查看>>
OKhttp之Call接口
查看>>
application/x-www-form-urlencoded、multipart/form-data、text/plain
查看>>
关于Content-Length
查看>>
WebRequest post读取源码
查看>>
使用TcpClient可避免HttpWebRequest的常见错误
查看>>
EntityFramework 学习之一 —— 模型概述与环境搭建 .
查看>>
C# 发HTTP请求
查看>>