5.2.11 IP分组的转发(二)IP分组转发算法

news2024/11/18 15:42:48

5.2.11 IP分组的转发(二)IP分组转发算法

我们前面已经了解了路由器的结构以及直接交付和间接交付的概念,明白了路由器会根据路由协议生成路由表再根据路由表生成转发表,当路由器收到一个待转发的IP分组以后,会根据分组的转发算法,在转发表中为该分组寻找合适的出路。实际上在讨论路由选择的原理时,往往不去区分路由表和转发表的区别,在学习IP分组转发算法前我们先来认识路由表的结构。

一、路由表结构

路由表中,每一行成为一个路由表项,通常是由4列组成。分别是目的网络地址,子网掩码,下一跳路由器IP地址,接口如表

路由表项目的网络地址子网掩码下一跳路由器IP地址接口
作用指目的主机所在网络的网络地址要想到达第一列对应的目的网络,必须要把该分组转发给的路由器的IP地址,如果是直接交付,则可以用一横杠表示。要想把IP分组送达给该行第三列的下一跳路由器需要通过本路由器中对应某个接口的IP地址。指示通过本路由器的哪个接口送达给下一跳。

在明白了路由表结构以后我们就来学习IP分组的转发算法。

二、IP分组的转发算法

当一台路由器收到了一条待转发的IP分组以后,通过该算法为该分组如何去寻找合适的转发路径。算法如下

  1. 从待转发的IP分组首部中取出目的IP地址;
  2. 对路由表中的每一行都进行以下重复操作即**把取出的目的IP地址与路由表表项中子网掩码按位相“与”,**这里将结果设为N,这就像我们编程中的一个循环操作。
  3. 循环结束的判断条件是,结果N与第一列对应的目的网络地址是否相等,如果是相等就是找到了匹配项就跳出循环
  4. 跳出循环后就查看路由表项中的下一跳路由器IP地址,如果下一跳路由器IP地址指明的是直接交付,那就按照直接交付的方式送达给目的主机,否则就按照该行所指明的下一跳路由器的IP地址进行转发。
  5. 如果结果N与目的网络地址不匹配,从头到最后一行都检查过没有找到匹配项的情况下,对于路由器来说会把该IP分组丢弃,同时向被丢弃IP分组的源站发送一个ICMP的目的不可达的差错报告报文。

这里的算法相对好理解,根本原理还是目的主机的IP地址和每行对应的子网掩码相与,如果等于该行第一列的目的主机的IP地址,就相当于说找到了匹配项,就按照该行下一跳路由器进行转发,当然如果是下一跳没有的话就表明是直接交付。

三、两种特殊的路由

在日常业务中除了这种普通的到达目的网络地址的路由以外,还有两种特殊的路由即特定主机路由默认路由

(一)特定主机路由

特定主机路由:指出现在路由表第一列的不是一个网络地址,而是某台主机的IP地址。比如,在调试网络连接或路由表时,可能会需要为单个主机指定一条特殊路由。所以,特定主机路由主要用于网络测试,或者出于安全的考虑。

这里值得思考的是:对于特定主机路由来说,在路由表中应该如何表示呢?

根据特定主机路由的定义我们知道,路由表中第一列是一台主机的IP地址,就说明目的主机IP地址和第一列对应的表示特定主机的32位IP地址都要相同才算是匹配成功,也就是说该行对应的子网掩码应该是255.255.255.255,也就是全1的子网掩码。

(二)默认路由

我们来看另外一种情况,如果互联网中包含的物理网络很多,要想让路由表包含所有网络就会导致路由表表项数量变得很多从而使路由查找起来速度很慢,所以就引入了默认路由。

默认路由:是指如果互联网包含的物理网络很多,让路由表包含所有网络将使路由表表项数很多,查找起来速度较慢。于是把多个下一跳相同的表项合并成一个表项,即默认路由。

同理我们同样要思考的问题是:对于默认路由来说,在路由表中如何表示呢?

这里我们需要注意的是默认路由通常放在路由表的最后一行,并且该行对应的子网掩码为0.0.0.0,目的网络地址为0.0.0.0。如此以来在前面都没有匹配项的情况下无论目的IP地址是多少,因为目的地址要与子网掩码全0相与,最终的结果都是全零,也就是说肯定能够和该行匹配成功。

四、示例

例:某网络拓扑如图所示,从图中我们可以看出该网络拓扑中有两个局域网,由两台路由器,其中路由器R1有两个以太网口,分别是E1和E2连接了两个局域网,R1还有一个广域网的接口L0接了路由器R2,路由器R2的广域网接口L1接入了互联网,此外还有一个以太网口E0连接到了域名解析服务器DNS上,每个接口对应的IP地址都已经给出,对于局域网1、局域网2和路由器R1相连的两个以太网口E1和E2。

示例

要求

  1. 将IP地址空间202.118.1.0/24划分为2个子网,分别分配给局域网1和局域网2,每个局域网需要分配的地址数据不少于120个。请给出子网划分结果。

    分析:因为 2 7 − 2 = 126 > 120 2^7-2=126>120 272=126>120,所以每个地址块中主机号部分为7为,也就是子网好部分只能是1位。所以每个地址块的网络前缀长度为24+1=25。

    答案:局域网1:202.118.1.00000000/25即202.118.1.0/25

    ​ 局域网2:202.118.1.10000000/25即202.118.1.128/25

  2. 请写出R1的路由表,使其明确到局域网1、局域网2、域名服务器的路由和互联网的路由。

    我们知道路由表结构如下,我们应对应网络拓扑结构填写路由表,按照例题中的要求是要写出四条路由

    1. 到局域网1的路由,从网络拓扑我们可以看出路由器R1到达局域网1属于直接交付,因为他他的以太网口和局域网1相连,从上个例题我们已经得到了局域网1和局域网2的网络地址,所以对于局域网1来说,我们刚刚分配给它的地址块是202.118.1.0/25所以其对应的子网掩码就是25个1和7个0,也就是255.255.255.128,因为对于路由器R1来说到达局域网1是直接交付,所以就没哟下一跳,从拓扑图中我们也能看出通过路由器R1的E1端口直接交付给局域网1。这里需要注意的是接口处应该写的是IP地址,但是拓扑图中没有给出,所以这里就直接用E1表示

    2. 通过到局域网1的路由可以得出局域网2的路由。

    3. 到达域名服务器,这里我们知道域名服务器是一台主机也不是一个目的网络,很显然这是刚才我们提到的一个比较特殊的路由,即特定主机路由,也就是路由表中第三行我们需要填写的是一个到达特定主机的路由。所以第一列写的就是该主机的IP地址,子网掩码就是全1,而要想到达域名服务器,对路由器R1来说就必须把分组送交给R2右边的L0接口,所以下一跳路由器的IP地址当然就是R2路由器的L0接口,接口就要填写本路由器的连接接口,即R1的L0接口,也就是其IP地址。当然这里我们也注意到下一跳路由器IP地址跟本路由器的接口IP地址二者应该在同一网段上只有如此他们才能进行通信。

    4. 如何到达互联网,这里很多人就会有疑问互联网的网络地址,这个问题就是隐含着让我们填写默认路由,因为对于路由器R1来说要么到达局域网1,要么到达局域网2,要么到达域名服务器,剩下的通信都是要到达互联网,所以第四条就应该填写默认路由,这里需要强调的是,默认路由的目的网络IP地址和子网掩码都是全0,下一跳路由器IP地址、接口与到达域名解析服务器是一致的。

      目的网络IP地址子网掩码下一跳路由IP地址端口
      202.118.1.0255.255.255.128E1
      202.118.1.128255.255.255.128E2
      202.118.3.2255.255.255.255202.118.2.2202.118.2.1
      0.0.0.00.0.0.0202.118.2.2202.118.2.1

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

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

相关文章

Background-1 基础知识 sqli-Labs Less1-Less-4

文章目录 一、Less-1二、Less-2三、Less-3四、Less-4总结 一、Less-1 http://sqli:8080/Less-1/?id1在第一关我们可以尝试增加一个单引号进行尝试 http://sqli:8080/Less-1/?id1错误显示如下: near 1 LIMIT 0,1 at line 1推测语法的结构 select *from where **…

2009年iMac装64位windows7

单位领导会花屏的iMac(24寸 2009年初版)我捡来用,应该大约是在2020年安装了32位windows7,发现不安装显卡驱动便不会花屏死机,于是就当简单的上网机用着,毕竟iMac的显示屏还是蛮不错的。现在要使用的1个软件…

linux中那些常用好玩的命令

前言 大家好,又见面了,我是沐风晓月,本文是专栏【linux基本功-基础命令实战】的第66篇文章,今天要分享是多个命令,在工作中不常用,但好玩。 专栏地址:[linux基本功-基础命令专栏] &#xff0c…

华为OD机试真题B卷 Java 实现【二叉树的所有路径】,附详细解题思路

一、题目描述 给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 二、思路与算法 最直观的方法是使用深度优先搜索。在深度优先搜索遍历二叉树时,我们需要考虑当前的节点以及它的孩子节点。 如果当前节点不是…

DAY 77 [ Ceph ] 基本概念、原理及架构

前言 在实现容器化的初期,计划使用 Ceph 作为容器的存储。都说存储是虚拟化之母,相对容器来说,存储也起到了至关重要的作用。 选用 Ceph 作为容器化存储理由如下: 方便后期横向扩展;Ceph能够同时支持快存储、对象存…

MM32F3273G8P火龙果开发板MindSDK开发教程15 - 获取msa311加速器的方向改变事件

MM32F3273G8P火龙果开发板MindSDK开发教程15 - 获取msa311加速器的方向改变事件 1、功能描述 类似手机里横屏竖屏检测,当方向发生变化时,横屏竖屏自动切换。 当msa311方向改变时,会产生中断,然后从寄存器Reg 0x0C(Orientation _…

图解LeetCode——20. 有效的括号

一、题目 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类…

i.MX RT1010跨界MCU调试利器(FreeMASTER上手体验)

FreeMASTER是一款基于PC的免费工具,用于可视化和调试嵌入式实时应用程序。它可以帮助开发人员快速实现深入嵌入式系统的数据测试和调试,它为嵌入式系统设计师提供了一个强大的、可视化的调试环境,在调试、验证和追踪实时应用程序时尤其有用。…

Atair 柱状比例图

如何熟练掌握可视化库和应对使用过程的疑难问题? 基本用法不妨访问 GeeksforGeeks 疑难问题优先搜索 https://stackoverflow.com 尽量使用官方文档: numpy的学习访问 https://numpy.org/doc/stable/user/index.html 例如: 一则 altair 使用过…

@antv/g2plot 特殊 散点图 x轴为category 调整了legend 的marker

下面代码演示了如何使用 antv/g2plot 创建一个散点图,并对其进行基本的样式和布局配置。 具体来说,代码中的 data 数组定义了散点图的数据系列,每个数据对象包含了分类、值和 y 轴字段三个属性。而 cateMap 对象则定义了每个分类对应的颜色和…

玩转ChatGPT:名单排序

一、写在前面 最近在文秘工作中,碰到一个名字排序的问题,大概的规则: (1)按照第一个汉字的首字母的英文单词排序,从A-Z; (2)若第一个字的首字母一致,则比较…

【920信号与系统笔记】第三章 连续信号的正交分解

连续信号的正交分解 3.1引言3.3信号表示为傅里叶级数(FS)三角傅里叶级数1. 本质展开式1展开式2展开条件-狄利克雷条件分量概念补充 指数傅里叶级数使用条件形式1(按连续信号的正交分解定义展开)形式2(由三角函数形式的傅里叶级数推导&#xf…

力扣笔记(每日随机一题)——最佳买卖股票时机含冷冻期

问题(中等) 给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 卖出股票后&a…

Unity HybridCLR + Xlua + Addressable 要点记要

接入缘由 老工程原本是C#,想做热更,于是接入了Xlua和Addressable。由于工程老,人手也不够,只是新代码使用Xlua,老功能(尤其是核心战斗还是C#)。大半年后觉得并不能达到预期需求。于是通过再接入…

vue-element-admin项目学习笔记(4)路由分析二:动态路由及permission.js

路由模块非常重要,自己基于这个框架进行开发,这个必须吃透!! 前情回顾: vue-element-admin项目学习笔记(1)安装、配置、启动项目 vue-element-admin项目学习笔记(2)main.…

改KendoReactUI组件,实现多个子元素的样式不一样

before after 问题描述 使用KendoReact RadioButton 组件,当用户选中当前项时需要显示不同颜色,试图通过找到KendoUI中对应的class name,然后修改这个class name下面的css来达到目的,但不起作用解决办法 用js控制style核心代码 …

华为OD机试之查找众数及中位数(Java源码)

查找众数及中位数 题目描述 众数是指一组数据中出现次数量多的那个数,众数可以是多个。 中位数是指把一组数据从小到大排列,最中间的那个数,如果这组数据的个数是奇数,那最中间那个就是中位数,如果这组数据的个数为偶…

从0开始搭建react项目(函数组件)

目录 项目搭建步骤 本地开发环境 脚手架构建项目 关联Git仓库 strictMode 严格模式 路由配置 路由传参 路由守卫 数据绑定 生命周期 父子组件通信 redux持久化 安装Sass 安装postcss-pxtorem(移动端项目) 安装axios 环境变量 本地代理 …

直播预告:CoremailHVV经验分享与重保整体解决方案发布

面对更具有目的性、针对性的网络攻击压力,重保既是抵抗攻击的重要举措,也是数字经济时代下企业发展的刚需。 正值重保期,企业在面对多样化的攻击手段、持续化的攻击行为、剧增化的攻击危害,应该如何应对重保大考? 6月1…

供应链安全

供应链安全 目录 文章目录 供应链安全目录本节实战可信任软件供应链概述构建镜像Dockerfile文件优化镜像漏洞扫描工具:Trivy检查YAML文件安全配置:kubesec准入控制器: Admission Webhook准入控制器: ImagePolicyWebhook关于我最后…