DJ4-3 路由器的工作原理

news2025/1/12 3:46:26

目录

一、路由器的整体结构

二、输入端口的功能

1. 三大模块

2. 查找与转发模块

三、交换结构

1. 经内存的交换结构

2. 经总线的交换结构

3. 经交换矩阵交换结构

四、输出端口的功能

五、排队

1. 输入端口排队

2. 输出端口排队


一、路由器的整体结构

路由器的两个核心功能:

  1. 运行路由协议或称路由算法(OSPF/RIP/BGP)
  2. 将分组从路由器的输入链路传送到正确的输出链路

路由器的体系结构:

根据路由器之间的通讯,路由处理器再运行路由协议,计算得到路由表,进而得到转发表。

二、输入端口的功能

1. 三大模块

模块名功能
线路端接将一条物理链路端接到路由器的物理层
数据链路处理实现路由器的数据链路层功能
查找与转发实现查找与转发功能,以便分组通过路由器的交换结构转发到适当的输出端口

输入端口示意图

在物理层,将接收到的信号转换为二进制序列。在数据链路层,解析数据帧得到数据报,再解析数据报得到目的主机的 IP 地址。

2. 查找与转发模块

确定将一个到达的分组通过交换结构转发给哪个输出端口。 通过查找转发表实现,这里的转发表是存储在输入端口的内存中。

如果不为每个输入端口设置内存存储转发表,则每个端口都需要查询路由器处理器内存中的转发表,从而形成瓶颈。

分布式交换:

  • 选路处理器计算转发表,给每个输入端口存放一份转发表拷贝。
  • 在每个输入端口本地做出交换决策,无须激活中央选路处理器。
  • 可避免在路由器中某个单点产生转发处理瓶颈。

输入端口也可直接称为端口,因为路由器的每个端口都是既能出也能入的。

目的:以线速完成输入端口的处理。

排队:如果数据报到达输入端口的速度快于输入端口将数据报转发到交换结构的速度,就会发生排队。

三、交换结构

功能:将分组从输入端口缓存交换/转发到恰当的输出端口缓存中。

三种类型的交换结构:经内存、经总线、经交换矩阵。

1. 经内存的交换结构

早期用计算机作为路由器时所采用的结构。

输入端口与输出端口之间的交换由 CPU(路由处理器)控制完成;

输入端口与输出端口类似 I/O 设备:

  1. 当分组到达输入端口时,通过中断向路由处理器发出信号,将分组拷贝到处理器内存中;
  2. 路由处理器根据分组中的目的地址查表找出适当的输出端口,将该分组拷贝到输出端口的缓存中。

输入端口与输出端口也和 I/O 设备一样只有缓存没有内存。

交换速度受总线带宽的速度限制,因为每个分组需要经过两次总线。

若总线带宽为每秒写入或读出 B 个分组,则总的转发吞吐量(分组从输入端口被传送到输出端口的总速率)小于 B/2 。

转发一个分组需要经过两次总线,而单位时间内总线写入或读出 B 个分组,因此单位时间内只能写入 B/2 分组和读出 B/2 个分组,即至多完成 B/2 个分组的转发。注意是写入 “和” 读出不是写入 “或” 读出。

2. 经总线的交换结构

输入端口通过一条共享总线将分组直接传送到输出端口,不需要路由处理器的干预。

每个输入端口的内存中都存有一份拷贝来的转发表,不再需要被路由处理器拷贝到路由器内存中查找。分组只用经过一次总线。

  • 每次只能有一个分组通过总线传送。
  • 分组到达一个输入端口时,若总线正忙,会被暂时阻塞,在输入端口排队
  • 路由器交换带宽受总线速率限制。

3. 经交换矩阵交换结构

纵横式交换机:由 2n 条总线组成,n 个输入端口与 n 个输出端口连接。

到达输入端口的分组沿水平总线穿行,直至与所希望的输出端口的垂直总线交叉点:

  • 若该条垂直总线空闲,则分组被传送到输出端口;
  • 否则,该到达的分组被阻塞,必须在输入端口排队。
  1. 输入端口通过查询自己内存中的转发表,来决定关闭哪个交叉点的开关。
  2. 不能有多个输入端口同时向一个输出端口转发分组。
  3. 同一时刻最多能够闭合三个开关,即转发三个分组。

四、输出端口的功能

取出存放在输出端口内存中的分组,并将其传输到输出链路上。

当交换结构将分组交付给输出端口的速率超过输出链路速率时,就需要排队与缓存管理功能。

  • 当输出端口的缓冲区溢出时,就会出现延时和丢包。

在数据链路层,根据采用的链路技术的不同,将 IP 分组封装成不同的链路帧。在物理层,根据采用的物理链路的不同,如:双绞线、光纤、无线电磁波,将数据转换为不同的信号。

五、排队

路由器中排队的位置有:

  1. 输入端口的内存中
  2. 交换结构中(如果采用的是内存交换方式)
  3. 输出端口的内存中

1. 输入端口排队

当交换结构的速度慢于输入端口的速度时,就会在输入端口的缓冲区发生排队。

会导致排队延时和由于输入缓冲区溢出导致的丢包!

线头阻塞(Head-of-the-Line(HOL)blocking):在队列前面的被阻塞的数据报会阻止队列中的其它数据报被转发。

2. 输出端口排队

当经过交换结构到达的速度快于输出端口的处理线速时,就会在输出端口的缓冲区发生排队。

当输出端口的缓冲区溢出时就会发生丢包!

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

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

相关文章

一秒钟给硬盘文件做个树状结构目录

一秒钟给硬盘文件做个树状结构目录 一、背景 对于长时间坐在电脑前的打工人来说,若没有养成良好文件分类习惯的话,年终整理电脑文件绝对是件头疼的事情。 给磁盘文件做个目录,一目了然文件都在哪里?想想都是件头疼的事情。 对于…

golang 实现 ldif 数据转成 json 初探

theme: Chinese-red 「这是我参与11月更文挑战的第 8 天,活动详情查看:2021最后一次更文挑战」 上一篇我们分享了如何将 ldif 格式的数据,转换成 json 数据的思路并画相应的简图 这一次,我们就来实现一下 实现方式如下&#xff…

P1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演)

[国家集训队]Crash的数字表格 / JZPTAB 题目描述 今天的数学课上,Crash 小朋友学习了最小公倍数(Least Common Multiple)。对于两个正整数 a a a 和 b b b, lcm ( a , b ) \text{lcm}(a,b) lcm(a,b) 表示能同时整除 a a a 和…

『pyqt5 从0基础开始项目实战』10.日志记录 鼠标右键打开(保姆级图文)

目录 导包和框架代码实现右键功能实现日志展示弹窗编写一个日志文件用于测试日志展示完整代码main.pythreads.pydialog.py 总结 欢迎关注 『pyqt5 从0基础开始项目实战』 专栏,持续更新中 欢迎关注 『pyqt5 从0基础开始项目实战』 专栏,持续更新中 导包和…

Python常用练习小例子

Python常用练习小例子 1、输出九九乘法表 源码如下: # 九九乘法表 for i in range(1, 10):for j in range(1, i1):print({}x{}{}\t.format(i, j, i*j), end)print() # 换行,相当于print(end\n) 其中,rint({}x{}{}\t.format(i, j, i*j), e…

Kubespray v2.21.0 离线部署 Kubernetes v1.25.6 集群

文章目录 1. 前言2. 预备条件3. 配置代理4. 下载介质5. 初始化配置6. 安装部署工具6.1 配置 venv 部署环境6.2 配置容器部署环境 7. 配置互信8. 编写 inventory.ini9. 编写 offline.yml10. 部署 offline repo11. 部署 kubernetes 1. 前言 Kubespray 是 Kubernetes incubator 中…

【Python合集】程序员系列代码之“这么好的天气应该去放风筝,而不是在搬砖,好想去放风筝哦~”(附完整代码)

导语 ☽ ☽ ☽ ☽ ☽ ☽ 文案丨April 19th, 2023 ☆ ☽ ☽☽ ☽☽ ☽ 江滩边摇摇晃晃的风筝 是春日越冬归来的信号 风筝蹦蹦跳跳 看盎然春意四处热闹阿姨路过菜摊子 带把香椿回家炒蛋细子摘桑 被酸得直口水嗲嗲裹着棉袄 托起霸缸到处晒大阳妹子没管倒春寒 提前换上短…

HttpServletRequest

1、HttpServletRequest对象 在Servlet API中,定义了一个HttpServletRequest接口,它继承自ServletRequest接口,专门用于封装HTTP请求消息 1.1 获取请求行信息的相关方法 当访问Servlet时,请求消息的请求行中会包含请求方法、请求…

Spring入门案例--bean实例化

bean实例化 对象已经能交给Spring的IOC容器来创建了,但是容器是如何来创建对象的呢? 就需要研究下bean的实例化过程 ,在这块内容中主要解决两部分内容,分别是 bean是如何创建的实例化bean的三种方式, 构造方法,静态工厂 和 …

USB TO SPI / USB TO I2C 软件概要 1 --- 专业版调试器

所需设备: 1、USB转SPI_I2C适配器(专业版); 软件概述: SPI类: USB TO SPI 1.0-Slave SPI从机软件,适合单步调试,支持SPI工作模式0、1、2、3,自动跟随主机通讯速率,自动接收数据; USB TO SP…

21、指标监控

文章目录 1、SpringBoot Actuator1、简介2、1.x与2.x的不同3、如何使用4、可视化 2、Actuator Endpoint1、最常使用的端点2、Health Endpoint3、Metrics Endpoint4、管理Endpoints1、开启与禁用Endpoints2、暴露Endpoints 3、定制 Endpoint1、定制 Health 信息2、定制info信息1…

springboot集成nacos配置管理

官方文档:Nacos Spring Boot 快速开始 个人实践: Namespace定义环境,例如:开发环境、测试环境、生产环境。 Group定义不同的应用。 DataId用来区分配置,例如:mysql配置,redis配置&#xff0…

web集群

1. 简述静态网页和动态网页的区别 1.更新和维护: 静态网页内容一经发布到网站服务器上,无论是否有用户访问,这些网页内容都是保存在网站服务器上的。如果要修改网页的内容,就必须修改其源代码,然后重新上传到服务器上…

新一代异步IO框架 io_uring | 得物技术

1.Linux IO 模型分类 相比于kernel bypass 模式需要结合具体的硬件支撑来讲,native IO是日常工作中接触到比较多的一种,其中同步IO在较长一段时间内被广泛使用,通常我们接触到的IO操作主要分为网络IO和存储IO。在大流量高并发的今天&#xff…

【golang学习笔记】——(三)golang vscode编译第一个程序

这里有一个盲区的坑,先埋下,待会再讲。 一、工程创建 首先是在一个自己需要的文件夹下创建一个.go空文件,老传统,这里就是hellowrold.go,致敬原神Brian Kernighan(1978年出版的《The C Programming Langua…

数据库----------自增长约束、非空约束

目录 1.自增长约束(auto_increment) 1.概念 2.特点 3.指定自增字段初始值 4.delete和truncate在删除后自增列的变化 2.非空约束(not null) 1.概念 2.语法 3.添加非空约束 4.删除非空约束 1.自增长约束(auto_increment) 1.概念 在MysQL中,当主键定义为自增…

Can we learn better with hard samples

摘要 在深度学习中,小批量训练通常用于优化网络参数。然而,传统的小批处理方法可能无法学习到数据中代表性不足的样本和复杂的模式,从而导致泛化的时间更长。为了解决这一问题,提出了一种传统算法的一种变体,它训练网…

【基于 Arduino 的 RFID门锁】

【基于 Arduino 的 RFID门锁】 1. 概述2. 射频识别的工作原理3. RFID 和 Arduino4. Arduino RFID门锁门禁项目5. 源代码 在本教程中,我们将了解什么是 RFID,它是如何工作的以及如何制作基于 Arduino 的 RFID 门锁。您可以观看以下视频或阅读下面的书面教…

CTFWIKI-PWN-ret2syscall

该题目是在32位下 目录 先进行checksec ​编辑 ida 1.execve() 2.寄存器 3.流程图 4.我们需要先看看execve()函数的函数调用号 5.使用ROPgadget来查看 我们先进行查看eax|ret 查看 pop ebx,ecx,edx,ret 查找 /bin/sh的地址 查找int 0x80 查看字符偏移量 附上流程…

2023-04-13 工作记录--CSS/JS-ios 文本渐变色 和 文本超出省略号处理 共用时,出现省略号未显示问题

CSS/JS-ios 文本渐变色 和 文本超出省略号处理 共用时,出现省略号未显示问题 一、前言 ⭐️ 最近写项目,发现一个bug:ios 文本渐变色 和 文本超出省略号处理 共用时,出现省略号未显示问题,如下图:图1是非i…