深入了解路由器工作原理:从零开始的简单讲解

news2024/11/14 21:45:35

简介

在现代网络中,路由器扮演着至关重要的角色。它不仅连接了不同的设备,还确保数据能够准确地传输到目的地。本文将带你深入探讨路由器的工作原理,帮助网络基础小白们理解这一重要设备的基本功能。


路由器的构成

路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。当路由器从某个输入端口收到分组后,会根据分组的目的地(即目的网络),将该分组从某个合适的输出端口转发给下一跳路由器,直到该分组到达终点。这一过程称为分组转发,是网络层的主要工作。


路由器的两大部分

整个路由器可以划分为路由选择部分分组转发部分

  1. 路由选择部分:属于控制平面,其核心是路由选择处理机。路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,并定期更新和维护它。
  2. 分组转发部分:属于数据平面,由输入端口、交换结构和输出端口组成。

输入端口

输入端口的主要职责是接收和处理分组。这个过程包括以下几层处理:

  • 物理层:负责接收比特。
  • 数据链路层:按照协议接收并传送分组的帧,将帧的首部和尾部剥去后,分组被送入网络层。
  • 网络层:根据分组的目的地址查找转发表,将分组转发到合适的输出端口。

重点路由选择分组转发的区别在于,前者涉及多个路由器协同工作,而后者仅涉及单个路由器根据转发表进行数据转发。


转发表与路由表

在讨论路由选择的原理时,我们往往使用路由表这个名词来描述,但实际上,转发表路由表是有区别的。

  • 路由表:包含从目的网络到下一跳(用IP地址表示)的映射,是多个路由器协同工作的结果。
  • 转发表:依据路由表计算出来,必须包含完成转发功能所需的信息,如目的网络与相应输出端口和某些MAC地址信息的映射关系。转发表的结构应当使查找过程最优化,而路由表则需要对网络拓扑变化的计算最优化。

实现方式:路由表总是用软件实现的,但转发表可以用特殊的硬件来实现。


分组转发的高效处理

为了使分组转发更高效,通常会将转发表的副本放在每一个输入端口中,这些副本常称为“影子副本(Shadow Copy)”。这种分散化交换可以避免在路由器中的某一点上出现瓶颈。

线速处理:理想情况下,输入端口的处理速率能够跟上线路传送分组到路由器的速率,这种速率称为线速(Line Speed或Wire Speed) 。例如,对于OC-48链路(速率2.5Gbit/s),线速应当达到每秒处理100万以上的分组。


交换结构

交换结构是路由器的关键部分,它负责将分组从输入端口转发到合适的输出端口。为了提高路由器的转发速度,交换结构通常采用以下三种方式之一:

  1. 通过存储器:分组被复制到存储器中,再从存储器转发到输出端口。
  2. 通过总线:分组通过共享的总线直接传送到输出端口。
  3. 通过纵横交换结构:利用交叉结点控制纵横总线的接通或断开,将分组转发到输出端口。

举例:像Cisco公司的Catalyst 12000系列路由器就是采用纵横交换结构,其速率高达60Gbit/s。


输出端口

输出端口负责从交换结构接收分组并将其发送到外部线路上。当交换结构传送过来的分组速率超过输出链路的发送速率时,分组会暂时存放在输出端口的队列中。

重点:分组在路由器的输入端口和输出端口都可能会排队等候处理,提高查表和交换的性能可以避免这一问题。


路由器与交换机的比较

虽然路由器交换机都是基于存储转发的分组交换设备,但它们的工作原理和应用场景各有不同。

  1. 交换机:优点是即插即用,分组过滤和转发速度快。缺点是维护大的MAC地址表和ARP表,且对广播风暴无保护措施。
  2. 路由器:优点是能提供智能的路由选择和隔离广播域。缺点是配置复杂,处理时间较长。

应用场景:小网络用交换机,大网络则需结合路由器以提供更好的流量隔离和控制。


三层交换机

三层交换机在逻辑上等同于一个路由器加上支持VLAN的二层交换机。它能方便地在IP层进行多个VLAN的互连,处理速度快,但接口类型单一,支持的路由选择协议较少。

三层交换机的工作原理

当一台主机通过三层交换机与另一个VLAN中的主机进行通信时,三层交换机会在处理第一个IP数据报时,完全与一个普通路由器一样,根据目的IP地址使用最长前缀匹配算法查找路由表,获得下一跳IP地址,并使用ARP获取下一跳IP地址对应的MAC地址,然后将IP数据报转发出去。

重点:三层交换机会将目的IP地址与下一跳MAC地址的映射关系记录在高速缓存中,当后续IP数据报到达时,就不再通过复杂的算法查找路由表,而是直接从缓存中查找相应的下一跳MAC地址进行转发。这种过程被称为“一次路由,多次转发/交换”。


实际应用中的选择

在实际应用中,典型的做法是:

  • 局域网内部:使用三层交换机实现广播域的隔离和VLAN间的路由。
  • 局域网与广域网互连:使用普通路由器实现不同网络类型的互连。

结论:虽然三层交换机的转发性能比普通路由器要高,但其接口类型单一,支持的协议较少。因此,在需要互连不同类型的异构网络时,仍需使用普通路由器。


结论

本文对路由器的工作原理进行了简明扼要的介绍,帮助基础小白们理解这一关键设备的基本构成和功能。通过对输入端口、交换结构、输出端口以及路由器与交换机的比较的详细讲解,读者可以更清晰地理解路由器在现代网络中的重要作用。


希望这篇文章对你有所帮助,如果你有任何问题或建议,欢迎在评论区留言。感谢你的阅读!
图文来源:《计算机网络教程》第六版微课版

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

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

相关文章

云计算实训12——配置web服务器、配置客户端服务器、配置DNS服务、实现DNS域名解析

一、配置web服务器 准备操作 首先在正式配置之前需要做以下操作 关闭防火墙 systemctl stop firewalld 永久关闭防火墙 systemctl disable firewalld 关闭selinux setenforce 0 永久关闭selinux vim /etc/selinux/config selinuxpermissive 还需要保证能够正常ping通www.bai…

使用uniapp开发小程序(基础篇)

本文章只介绍微信小程序的开发流程,如果需要了解其他平台的开发的流程的话,后续根据情况更新相应的文章,也可以根据uniapp官网的链接了解不同平台的开发流程 HBuilderX使用:https://uniapp.dcloud.net.cn/quickstart-hx.html 开发工具 开始…

【Django】在vscode中运行调试Django项目(命令及图形方式)

文章目录 命令方式图形方式默认8000端口设置自定义端口 命令方式 python manage.py runserver图形方式 默认8000端口 设置自定义端口

LIS系统源码,实验室管理信息系统LIS,.Net C#语言开发,支持DB2,Oracle,MS SQLServer等主流数据库

实验室管理信息系统LIS源码,采用.Net C#语言开发,C/S架构。支持DB2,Oracle,MS SQLServer等主流数据库。(LIS系统全套商业源码,自主版权,多家大型综合医院应用案例,适合二次开发&…

【Android】ListView和RecyclerView知识总结

文章目录 ListView步骤适配器AdpterArrayAdapterSimpleAdapterBaseAdpter效率问题 RecyclerView具体实现不同布局形式的设置横向滚动瀑布流网格 点击事件 ListView ListView 是 Android 中的一种视图组件,用于显示可滚动的垂直列表。每个列表项都是一个视图对象&…

spring IOC DI --DI详解

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 今天你敲代码了吗 文章目录 4.3 DI详解4.3.1属性注入4.3.2 构造方法注入4.3.3 Setter注入4.3.4 三种注入优缺点 4.4 Autowired 存在问题PrimaryQualifier 4.3 DI详解 依赖注入是一个过程,是指Ioc容器在创建Bean…

在 Android 上实现语音命令识别:详细指南

在 Android 上实现语音命令识别:详细指南 语音命令识别在现代 Android 应用中变得越来越普遍。它允许用户通过自然语言与设备进行交互,从而提升用户体验。本文将详细介绍如何在 Android 上实现语音命令识别,包括基本实现、带有占位槽位的命令处理,以及相关的配置和调试步骤…

C++:模板(函数模板,类模板)

目录 泛型编程 函数模板 函数模板格式 函数模板的原理 函数模板的实例化 类模板 类模板格式 类模板实例化 模板分为函数模板和类模板 在C中使用模板可以让我们实现泛型编程 泛型编程 如果我们需要实现一个加法add函数,那么会怎么实现呢? int…

AI学习记录 - 规范化输出对接现有系统的实例

假设我们有一个学生管理系统,通过prompt提示,格式化输出然后对接现有系统,也是通过react实现,因为这只是一个知识分享,没弄太复杂(使用react实现)。 学生管理系统 1、设计好prompt getMemory()…

大屏数据看板一般是用什么技术实现的?

我们看到过很多企业都会使用数据看板,那么大屏看板的真正意义是什么呢?难道只是为了好看?答案当然不仅仅是。 大屏看板不仅可以提升公司形象,还可以提升企业的管理层次。对于客户,体现公司实力和品牌形象,…

Linux shell编程学习笔记66:ping命令 超详细的选项说明

0 前言 网络信息是电脑网络信息安全检查中的一块重要内容,Linux和基于Linux的操作系统,提供了很多的网络命令,今天我们研究最常用的ping命令。 1 ping命令 的功能、格式和选项说明 1.1 ping命令 的功能 简单来说, ping 命令 会…

编写SpringBoot的自定义starter包

starter项目 先来看一下Starter的官方解释: Spring Boot Starter 是一种方便的依赖管理方式,它封装了特定功能或技术栈的所有必要依赖项和配置,使得开发者可以快速地将这些功能集成到Spring Boot项目中。Spring Boot官方提供了一系列的Star…

首次 Cloudberry Database 社区聚会 · 北京站,8月3日,诚邀

近期 Greenplum 源码归档及走向闭源在圈内讨论火热,原有开源用户面临断档风险。作为 Greenplum 衍生版和开源替代,Cloudberry Database 由原厂核心开发者打造,与其保持兼容,并且具备更新内核和更丰富功能。Cloudberry Database 逐…

代理协议解析:如何根据需求选择HTTP、HTTPS或SOCKS5?

代理IP协议是一种网络代理技术,可以实现隐藏客户端IP地址、加速网站访问、过滤网络内容、访问内网资源等功能。常用的IP代理协议主要有Socks5代理、HTTP代理、HTTPS代理这三种。代理IP协议主要用于分组交换计算机通信网络的互联系统中使用,只负责数据的路…

【MATLAB实战】基于UNet的肺结节的检测

数据: 训练过程图 算法简介: UNet网络是分割任务中的一个经典模型,因其整体形状与"U"相似而得名,"U"形结构有助于捕获多尺度信息,并促进了特征的精确重建,该网络整体由编码器,解码器以及跳跃连接三部分组成。 编码器由…

UE4/5 对话系统

参考教程:UE4甜筒教艺术生学蓝图#21.UE4对话系统(1)--唠嗑案例展示_哔哩哔哩_bilibili 说来惭愧两年前看的教程,现在才记录一下,很好的教程推荐大家观看 1.首先创建两个枚举,内容如下 2.创建三个结构体,内容如下 3.再…

SSRF:服务端请求伪造

SSRF漏洞原理 SSRF漏洞通常是因为服务端应用程序提供了从其他服务器获取数据的功能,但未对目标地址或协议进行适当的过滤和限制。攻击者可以通过这个漏洞发送构造好的恶意请求,让服务器以自己的身份去访问其他资源,与文件包含漏洞有些许相似…

遍历dom元素下面的子元素的方法,vue中原始标签的ref得到是该元素的dom及下面包含的子dom,与组件ref是引用不同

研究到这个的目的来源是 想用div 遍历方式 替代之前的table tr td 那种框选功能,觉得div灵活,可以随便在外面套层,td与tr之间就不能加div加了布局就乱,然后使用之前的原理( const cellList tableIdR.value.querySelec…

Caché 数据库摘要与手册索引

因为设置了 VIP 可见,对于无法直接阅读该篇博客的,建议直接阅读官方博客,链接如下: Cach & Ensemble 2018.1.4 – 2018.1.9 | Documentation Home Page (intersystems.com)https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls 目录 一、简介 0、…

【Socket 编程】应用层自定义协议与序列化

文章目录 再谈协议序列化和反序列化理解 read、write、recv、send 和 tcp 为什么支持全双工自定义协议网络计算器序列化和反序列化 再谈协议 协议就是约定,协议的内容就是约定好的某种结构化数据。比如,我们要实现一个网络版的计算器,客户端…