6.4.2 互联网路由探测与发现基本原理

6.4.2 互联网路由探测与发现基本原理

一、路由探测与发现背后的协议工作过程

我们主要使用三种方法来实现路由探测与发现

  1. 基于IP的记录路由选项功能(RR)和ICMP功能的路由探测,典型的例子就是带有参数“r”的ping命令,即ping -r

    这种探测方法类似于邮政系统的邮件投递过程,一封信每经过一个邮政分拣点,都会被盖上相应的邮戳,收信人可以根据信封上的邮戳知道中间经过了哪些邮局。为了跟踪互联网中数据分组的传输路径,我们可以利用IP分组首部中的记录路由的可选字段(5.2.3 IP数据报(一)IP数据报的格式)来盖戳。我们知道IP分组的首部中除了20个字节的固定部分之外,还包括长度可变的选项字段,其中记录路由选项可以实现路由探测。

    ping

    选项类型字段取值为7,选项内容记录了数据分组所经过路由器的地址列表。当然为了使源主机收集到传输路径的信息,我们还需要配合ICMP协议来实现。具体过程是

    1. 源主机产生并发送一个ICMP回送请求报文(ICMP Echo Request)并封装到IP分组中,分组头部的选项部分除了填写记录路由选项的类型(type)和长度(Length)字段以外,选项内容是空的。
    2. 当分组到达路由器时,路由器在转发之前,会主动的将自己的IP地址填写在记录路由选项中,如此以来对于分组传输路径上每一跳路由器都相继的填入了自己的IP地址。当分组到达目的主机时IP分组头部会收集到部分或者全部的路由信息。
    3. 最后目的主机向源主机返回ICMP回送应答报文(ICMP Echo Reply),将接收到的记录路由选项拷贝到返回的IP分组的首部,使用参数“r”的ping程序就是基于记录路由选项的方法。
  2. 基于IP的TTL字段和ICMP的路由探测,例子就是Windows下的tracert程序。

    这种路由探测方法就不再利用IP分组的选项字段了,而是利用IP首部中的TTL字段联合ICMP协议来实现,具体方法如下:

    1. 源主机会发送多个ICMP回应请求报文(类型为8,代码为0),每个ICMP报文所在IP分组头部的TTL从1开始递增,也就是每次都递增1。来设置每个ICMP报文所在的IP分组首部中的TTL字段,也就是说第一个IP分组的TTL值为1,第二个分组的TTL值为2,以此类推。

    2. IP协议规定路由器会将收到的IP分组头部的TTL字段减1,一旦变为0会立即丢弃分组并向源主机发送超时的ICMP差错报告报文(5.2.7 因特网控制报文协议ICMP)。

    3. 当探测报文到达目的主机时,如果目的主机存在,会返回ICMP应答报文(类型为0,代码为0)

    4. 当源主机接收到ICMP应答报文,追踪结束。

      如图,假设数据分组从源主机触发需要经过R1、R2、R3三台路由器的转发,最终到达目的主机。在源主机上运行tracert程序,就会利用TTL和ICMP来探测传输的路径。

      tracert

      路由跟踪实质是不断探测的过程

      1. 首先源主机发送第一个探测分组,TTL值等于1,到达第一跳路由器时TTL值减1后变为0,路由器会发送超时报文。源主机收到后就会获得第一跳路由器的IP地址
      2. 接着源主机会发送第二个探测报文,此时的TT值设置为2,到达第一跳TTL值减1后TTL值变为1,到达第二跳路由器的时候TTL值再减1就变为了0,此时又会返回超时报文,此时源主机得到第二跳路由器的IP地址。
      3. 同样的方法源主机可以获得第三跳路由器的IP地址。
      4. 当第四次探测报文到达目的主机时,目的主机会返回ICMP回送应答报文,对于源主机接收到应答报文后就会宣布路由跟踪结束。
  3. 基于TTL+UDP+ICMP的路由探测,Unix操作系统下的traceroute程序就是这种原理。

    这种路由探测方法与第二种路由探测方法相类似,不同之处在于源主机发送的探测报文不再是ICMP回送请求报文,而是变成了在传输层里所用到的UDP用户数据报。为了接收到来自目的主机的回复,作为路由跟踪结束的标志,源主机会选择一个不常用的目的端口号,一般情况下数值比较大,中间路由器的探测也是利用TTL值减1操作,通过超时差错响应机制,使得源主机逐步的探测到路由器的地址,当UDP探测报文到达目的主机以后,由于它并不能找到与目的端口号对应的接收的应用进程,目的主机就会返回一个目的端口不可达的ICMP差错报告报文,源主机收到了差错报告报文以后也宣布路由跟踪结束。Unix操作系统下的traceroute采用的就是这种基于UDP和ICMP的一种探测的方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/43205.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

postgresql源码学习(58)—— 删除or重命名WAL日志?这是一个问题

最近因为WAL日志重命名踩到大坑,一直很纠结WAL日志在什么情况下会被删除,什么情况下会被重命名,钻研一下这个部分。 一、 准备工作 1. 主要函数调用栈 首先无用WAL日志的清理发生检查点执行时,检查点执行核心函数为CreateCheckPo…

华为OD机试真题 Java 实现【经典屏保】【2023 B卷 100分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、补充说明四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、再输入4、再输出 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题&…

Mysql基础(下)之函数,约束,多表查询,事务

👂 回到夏天(我多想回到那个夏天) - 傲七爷/小田音乐社 - 单曲 - 网易云音乐 截图自 劈里啪啦 -- 黑马Mysql,仅学习使用 👇原地址 47. 基础-多表查询-表子查询_哔哩哔哩_bilibili 目录 🦂函数 &#x1f3…

使用Plist编辑器——简单入门指南

本指南将介绍如何使用Plist编辑器。您将学习如何打开、编辑和保存plist文件,并了解plist文件的基本结构和用途。跟随这个简单的入门指南,您将掌握如何使用Plist编辑器轻松管理您的plist文件。 plist文件是一种常见的配置文件格式,用于存储应…

docker - prometheus+grafana监控与集成到spring boot 服务

一、Prometheus 介绍 1.数据收集器,它以配置的时间间隔定期通过HTTP提取指标数据。 2.一个时间序列数据库,用于存储所有指标数据。 3.一个简单的用户界面,您可以在其中可视化,查询和监视所有指标。二、Grafana 介绍 Grafana 是一…

Kubernetes对象深入学习之四:对象属性编码实战

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是《Kubernetes对象深入学习》系列的第四篇,前面咱们读源码和文档,从理论上学习了kubernetes的对象相关的知识&#xff…

spring复习:(50)@Configuration注解配置的singleton的bean是什么时候被创建出来并缓存到容器的?

一、主类: 二、配置类: 三、singleton bean的创建流程 运行到context.refresh(); 进入refresh方法: 向下运行到红线位置时: 会实例化所有的singleton bean.进入finisheBeanFactoryInitialization方法: 向下拖动代…

(双指针) 剑指 Offer 57 - II. 和为s的连续正数序列 ——【Leetcode每日一题】

❓ 剑指 Offer 57 - II. 和为s的连续正数序列 难度:简单 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例 1…

【CMU15-445 FALL 2022】Project #1 - Buffer Pool

About 实验官网 Project #1 - Buffer Pool在线评测网站 gradescope Lab Task #1 - Extendible Hash Table 详见——【CMU15-445 FALL 2022】Project #1 - Extendable Hashing 如果链接失效,请查看当前平台我之前发布的文章。 Task #2 - LRU-K Replacement Polic…

Hadoop——DataGrip连接MySQL|Hive

1、下载 DataGrip下载:DataGrip: The Cross-Platform IDE for Databases & SQL by JetBrains 2、破解 破解链接:https://www.cnblogs.com/xiaohuhu/p/17218430.html 3、启动环境 启动Hadoop:到Hadoop的sbin目录下右键管理员身份运行…

计算机服务器被devos勒索病毒攻击怎么解决,数据库解密恢复方式

科学技术的发展为企业的生产运行提供了极大的便利性,但随之而来的网络安全也应该引起人们的重视。近期,我们收到很多企业的求助,企业的计算机服务器内的数据库被devos后缀勒索病毒攻击,导致企业许多工作无法正常运行。Devos后缀勒…

每天五分钟计算机视觉:单卷积层的前向传播过程

什么是单卷积层? 一张图片(输入)经过多个卷积核卷积就会得到一个输出,而这多个卷积核的组合就是一个单卷积层。 这些卷积核可能大小是不一样的,但是他们接收同样大小是输入,他们的输出必须是一般大小,所以不同的卷积核需要具备不同的步长和填充值。 单层卷积网络前向传…

大数据分析案例-基于LightGBM算法构建乳腺癌分类预测模型

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

微服务如何治理

微服务远程调用可能有如下问题: 注册中心宕机; 服务提供者B有节点宕机; 服务消费者A和注册中心之间的网络不通; 服务提供者B和注册中心之间的网络不通; 服务消费者A和服务提供者B之间的网络不通; 服务提供者…

安装redis,适配阿里云服务器,Liunx安装redis

下载redis以及编译安装 下载redis文件 wget http://download.redis.io/releases/redis-6.0.8.tar.gz #下载redis压缩文件 tar xzf redis-6.0.8.tar.gz #解压缩 cd redis-6.0.8 make 查看是否安装了gcc编译输入gcc --version如果没有…

数据仓库表设计理论

数据仓库表设计理论 数仓顾名思义是数据仓库,其数据来源大多来自于业务数据(例如:关系型数据库),当设计数仓中表类型时(拉链表、增量表、全量表、流水表、切片表)时,应先观察业务数据的特点再设计数仓表结构 首先业务数据是会不断增长的-即…

STM32外设系列—TB6612FNG

本文涉及到定时器和串口的知识,详细内容可见博主STM32速成笔记专栏。 文章目录 一、TB6612简介二、TB6612使用方法2.1 TB6612引脚连接2.2 控制逻辑2.3 电机调速 三、实战项目3.1 项目简介3.2 初始化GPIO3.3 PWM初始化3.3 电机控制程序3.4 串口接收处理函数 一、TB66…

基于SPDK-vhost的云原生Kubevirt虚拟化存储IO的优化方案

摘要 本文主要介绍针对云原生kubernetes虚拟化IO的应用场景,在Kubevirt中引入SPDK-vhost的支持,来加速虚机中IO存储性能。同时基于Intel开源的Workload Service Framework[1]平台集成部署一套端到端虚拟化IO的应用场景做基本的性能对比测试。 云原生Kube…

Hadoop——Windows系统下Hadoop单机环境搭建

为了便于开发,我在本地Windows系统进行Hadoop搭建。 我使用的版本:hadoop-2.7.0。其他版本也可,搭建流程基本一样,所以参考这个教程一般不会有错。 1、下载安装包和插件 安装包hadoop-2.7.0.tar.gz 必要插件winutils-master 2、…

RocketMQ教程-安装和配置

Linux系统安装配置 64位操作系统,推荐 Linux/Unix/macOS 64位 JDK 1.8 Maven3.0 yum 安装jdk8 yum 安装maven 1.下载安装Apache RocketMQ RocketMQ 的安装包分为两种,二进制包和源码包。 点击这里 下载 Apache RocketMQ 5.1.3的源码包。你也可以从这…