IP 层转发分组的过程

news2024/9/21 22:31:17

目录

IP 层转发分组的过程

1.1  基于终点的转发

1.2 最长前缀匹配

转发表中的 2 种特殊的路由

主机路由 (host route)

默认路由 (default route)

路由器分组转发算法

 1.3 使用二叉线索查找转发表


IP 层转发分组的过程

1.1  基于终点的转发

·分组在互联网中是逐跳转发的。

·基于终点的转发:基于分组首部中的目的地址传送和转发。

·为了压缩转发表的大小, 转发表中最主要的路由是(目的网络地址,下一跳地址) , 而不是(目的地址,下一跳地址)。

·查找转发表的过程就是逐行寻找前缀匹配

主机 H1 发送出的、目的地址是 128.1.2.132 的分组是如何转发的?

·H1 首先检查 128.1.2.132 是否连接在本网络上。

        如果是,则直接交付;否则,就送交路由器 R1。

128.1.2.132 AND 255.255.255.192 = 128.1.2.128     不匹配!

·路由器 R1 收到分组后查找转发表。先检查第 1 行。

·路由器 R1 收到分组后查找转发表。接着检查第 2 行。

        128.1.2.132 AND 255.255.255.128 = 128.1.2.128     匹配!

        进行分组的直接交付(通过路由器 R1 的接口 1)。

1.2 最长前缀匹配

·使用 CIDR 时,在查找转发表时可能会得到不止一个匹配结果

·最长前缀匹配 (longest-prefix matching) 原则:选择前缀最长的一个作为匹配的前缀。

·网络前缀越长,其地址块就越小,因而路由就越具体。

·可以把前缀最长的排在转发表的第 1 行。

路由器 R1 如何转发目的地址是 128.1.2.196 的分组?

·路由器 R1 收到分组后查找转发表。先检查第 1 行。

        128.1.2.196 AND 255.255.255.192 = 128.1.2.192     不匹配!

·路由器 R1 收到分组后查找转发表。接着检查第 2 行。

        128.1.2.196 AND 255.255.255.128 = 128.1.2.128     匹配!

·路由器 R1 收到分组后查找转发表。接着检查第 3 行。

        128.1.2.196 AND 255.255.255.192 = 128.1.2.192     匹配!

问题:R1 从哪个接口向外转发分组?

最长前缀匹配: 选择前缀最长的一个作为匹配的前缀。故选择 接口 0 。

·网络前缀越长,其地址块就越小,路由就越具体(more specific)。

·可以把前缀最长的排在转发表的第 1 行,以加快查表。

转发表中的 2 种特殊的路由

主机路由 (host route)

·又叫做特定主机路由

·是对特定目的主机的 IP 地址专门指明的一个路由。

·网络前缀就是 a.b.c.d/32

·放在转发表的最前面

默认路由 (default route)

·不管分组的最终目的网络在哪里,都由指定的路由器 R 来处理。

·用特殊前缀 0.0.0.0/0 表示。

默认路由举例

只要目的网络不是 N1 和 N2,就一律选择默认路由,把 IP 数据报先间接交付默认路由器 R1,让 R1 再转发给下一个路由器。

路由器分组转发算法

 1.3 使用二叉线索查找转发表

·二叉线索 (binary trie):一种特殊结构的树,可以快速在转发表中找到匹配的叶节点。

·从二叉线索的根节点自顶向下的深度最多有 32 层,每一层对应于 IP 地址中的一位。

·为简化二叉线索的结构,可以用唯一前缀 (unique prefix) 来构造二叉线索。

·为了提高二叉线索的查找速度,广泛使用了各种压缩技术。

用 5 个唯一前缀构成的二叉线索

规则:先检查 IP 地址左边的第一位,如为 0,则第一层的节点就在根节点的左下方;如为 1,则在右下方。然后再检查地址的第二位,构造出第二层的节点。依此类推,直到唯一前缀的最后一位。每个叶节点代表一个唯一前缀。 为检查网络前缀是否匹配,必须使二叉线索中的每一个叶节点包含所对应的网络前缀和子网掩码。

在二叉线索中查找 IP 地址

欢迎一起学习~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Angular组件(二) 分割面板ShrinkSplitter

Angular组件(二) 分割面板ShrinkSplitter 前言 在Angular组件(一) 分割面板ShrinkSplitter文章中我们实现了Splitter组件,后来在业务场景中发现在开关右侧容器和底部容器时,使用起来不方便,ngModel绑定的值始终是左侧容器和顶部容器的大小&…

电路分享 —— 单片机 1个IO口检测多路按键

一、设计要求 设计要求:因为单片机的IO口数量较少,要求使用1路IO口检测4路按键。 二、设计思路 设计思路:单片机的IO口数量较少的情况下,使用1路IO口检测4路按键,可以通过检测电压值来进行区分,即使用IO口…

如何纯前端实现文件下载

业务场景 有一个下载文件的功能,不引入后端资源,纯前端应该如何实现? 解决方案 在vue2或者vue3项目中,可以把文件放在 public 文件夹下,然后使用a标签进行文件下载。 如:我要下载的文件是模版.xlsx 。首…

STM32学习笔记二——STM32时钟源时钟树

目录 STM32芯片内部系统架构详细讲解: 1.芯片内部混乱电信号解决方案: 2.时钟树: 1.内部RC振荡器与外部晶振的选择 2. STM32 时钟源 3.STM32中几个与时钟相关的概念 4.时钟输出的使能及其流程 5.时钟设置的基本流程 时钟源——单片机…

应用下载页源码简洁高大尚下载单页

首先可以设置多个下载源 软件截图可以滚动 暗夜主题交换 图片都可以自定义配置 精美的页面会让你眼前一亮的 源代码学习资料:https://pan.baidu.com/s/1ulE9zde2XMs-6E7eF3D3kg?pwdfhxq 密码:123

1178:单词数

题目描述 统计一篇文章里不同单词的总数。 输入 有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由大小写字母和空格组成,没有标点符号,遇到#时表示输入结束。每篇文章的单词数小于1000,每个单词最多由30个…

系统分析师-22年-下午题目

系统分析师-22年-下午题目 更多软考知识请访问 https://ruankao.blog.csdn.net/ 试题一必答,二、三、四、五题中任选其中两题作答 试题一 (25分) 说明 某软件公司拟开发一套博客系统,要求能够向用户提供一个便捷发布自已心得,及时有效的…

Cmake编译Opencv3.3.1遇到有些文件无法下载的错误解决:

前言: 对于,opencv有些配置文件错误并未致命,所以,有错误也不影响后续的编译:但是,后引用如果要用,在回过头来还是要解决的。 问题表述: 比如,有些文件下载的错误&am…

穷游网酒店数据采集与可视化分析与实现

摘 要 穷游网酒店数据采集与可视化分析大屏的背景是为了满足用户对酒店数据的需求以及提供数据洞察和决策支持。随着旅游业的快速发展,人们对酒店信息的需求日益增加,而穷游网作为一家专注于旅游信息的网站,拥有丰富的酒店数据资源。 这个大…

JS基础 - 遍历对象方法(6种)

初始值: var obj {a: 1,b: 2,c: 3,d: 4,e: 5,}; 第一种:for in for (let key in obj) {console.log(key ":" obj[key]);} 第二种:Object.keys 获取key Object.keys(obj).forEach((key) > {console.log(key ":" …

【乳腺肿瘤诊断分类及预测】基于Elman神经网络

课题名称:基于Elman神经网络的乳腺肿瘤诊断分类及预测 版本日期:2023-05-15 运行方式: 直接运行Elman0501.m 文件即可 代码获取方式:私信博主或QQ:491052175 模型描述: 威斯康辛大学医学院经过多年的收集和整理&a…

关于TongWeb部署应用报错java.lang.NoSuchFieldError: REFLECTION (by liuhui)

关于TongWeb部署应用报错java.lang.NoSuchFieldError: REFLECTION (by liuhui) 关于TongWeb部署应用报错java.lang.NoSuchFieldError: REFLECTION 问题现象:xml解析对象工厂类错误导致解析失败 解决办法:增加配置参数问题解决 -…

学习鸿蒙基础(2)

arkts是声名式UI DevEcoStudio的右侧预览器可以预览。有个TT的图标可以看布局的大小。和html的布局浏览很像。 上图布局对应的代码: Entry //入口 Component struct Index {State message: string Hello Harmonyos //State 数据改变了也刷新的标签build() {Row()…

MATLAB知识点:MATLAB的文件管理

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自第2章 上一章我们说过,MATLAB是一款非常强…

opencv-python计算视频光流

光流基本概念 光流表示的是相邻两帧图像中每个像素的运动速度和运动方向。具体:光流是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系&#xf…

软考复习之数据结构篇

算法设计 迭代法:用于求方程的近似根。 1、若方程无解,则算法求出的近似根序列就不会收敛,迭代过程会变成死循环,因此在使用迭代算法前应先考查方程是否有解,并在程序中对迭代的次数给予限制。 2、方程虽有解&#…

B3626 跳跃机器人——洛谷(疑问)

题目描述 地上有一排格子,共 �n 个位置。机器猫站在第一个格子上,需要取第 �n 个格子里的东西。 机器猫当然不愿意自己跑过去,所以机器猫从口袋里掏出了一个机器人!这个机器人的行动遵循下面的规则&#…

使用 Paimon + StarRocks 极速批流一体湖仓分析

摘要:本文整理自阿里云智能高级开发工程师王日宇,在 Flink Forward Asia 2023 流式湖仓(二)专场的分享。本篇内容主要分为以下四部分: StarRocksPaimon 湖仓分析的发展历程使用 StarRocksPaimon 进行湖仓分析主要场景和…

读AI3.0笔记10_读后总结与感想兼导读

1. 基本信息 AI 3.0 (美)梅拉妮米歇尔 著 四川科学技术出版社,2021年2月出版 1.1. 读薄率 书籍总字数355千字,笔记总字数33830字。 读薄率33830355000≈9.53% 1.2. 读厚方向 千脑智能 脑机穿越 未来呼啸而来 虚拟人 新机器人 如何创造可信的AI 新机器智…

【极数系列】Flink集成DataSource读取Socket请求数据(09)

文章目录 01 引言02 简介概述03 基于socket套接字读取数据3.1 从套接字读取。元素可以由分隔符分隔。3.2 windows安装netcat工具(1)下载netcat工具(2)安装部署(3)启动socket端口监听 04 源码实战demo4.1 po…