草庐IT

路由器内部到底是啥结构?不懂就不算网工人

网络工程师俱乐部 2023-04-04 原文

晚上好,我是老杨。

记得月初给大家分享过一篇《10张图告诉你:服务器的内部结构到底有多妙》,不少小友表示涨了不少知识。所以,老杨想着,今天再发一篇,但是主角换成路由器

很多网工在工作中都会接触到路由器,但是对它的内部结构可能不甚清晰,但多了解总是有益无害的。

要知道,网络中路由器主要采用了四种类型:

只读内存 (ROM)

闪存

随机存取内存(RAM)

非易失性RAM(NVRAM)

在所有类型的内存中,RAM是会在路由器启动或供电间隙时丢失其内容的唯一一种内存。

所以,今天这篇文章,主要说明下路由器的每种内存的主要用途。

想要深入学习路由器的小友们,也欢迎添加老杨微信,咨询系统学习的方式哈

01 ROM

ROM保存着路由器的引导(启动)软件,这是路由器运行的第一个软件,负责让路由器进入正常工作状态。

有些路由器将一套完整的IOS保存在ROM中,以便在另——个IOS不能使用时,作救急之用。ROM 通常做在一个或多个芯片上,焊接在路由器的主机上。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

02 闪存

闪存的主要用途是保存10S软件,维持路由器的正常工作。若路由器安装了闪存,它便是用来引导路由器的IOS软件的默认位置。

只要闪存容量足够,使可保存多个IOS映像,以提供多重启动选项。闪存要么做在主机板的SIMM上,要么做成张PCMCIA卡。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

03 RAM

RAM的作用很广泛,在此不可能一一列出。但有两样东西值得一提,即IOS系统表与缓冲。IOS通过RAM满足其所有的常规存储需要。

NVRAM的主要作用是保存IOS在路由器启动时读入的配置数据。这种配置称为“启动配置”。

04 接口

所有路由器都有“接口”(Interface) 。在前面,我们已列出了路由器支持的部分接口类型。

在采用I0S的路由器中,每个接口都有自己的名字和编号,一个接口的全名由它的类型标识以及至少一个数字构成。编号自零0开始。

对那些接口已固定下来的路由器,或采用模块化接口,只有关闭主机才可变动的路由器,在接口的全名中,就只有一个数字,而且根据它们在路由器中物理顺序进行编号。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

例如,Ethernet0 是第一个以太网接口的名称;而Serial2是第三个串口的名称。

若路由器支持“在线插入和删除”,或具有动态(不关闭路由器)更改物理接口配置的能力(卡的热插拔),那么一个接口的全名至少应包含两个数字、中间用一个正斜杠分隔(/)。

其中,第一个数字代表插槽编号,接口处理器卡将安装在这个插槽上;第二个数字代表接口处理器的端口编号。

比如在一个7507路由器中,Ethernet5/0代表的便是位于5号槽上的第一个以太网接口——假定5号槽插接了一张以太网接口处理器卡。

有的路由器还支持“万用接口处理器”(VIP) 。VIP上的某个接口名由三个数字组成,中间也用一个正斜杠分隔(/)。接口编号的形式是“插槽/端口适配器/端口”。

例如, Ethemet4/0/1 是指4号槽上第一个端口适配器的第二个以太网接口。

初次接触这些编号方式,也许会觉得有些迷惑,但不要担心,有办法可以让路由器告诉我们它的所有接口的全名。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

05 控制台端口

几乎所有路由器都在路由器背后安装了一个控制台端口。控制台端口提供了一个EIA/TIA—232( 以前叫作RS— 232)异步串行接口、使我们能与路由器通信。

至于同控制台口建立哪种形式的物理连接,则取决于路由器的型号,有些路由器采用一个DB25母连接(DB25F) ,有些则用RJ45 连接器。

编辑

添加图片注释,不超过 140 字(可选)

通常,较小的路由器采用RJ45控制台连接器,而较大路由器采用DB25 控制台连接器。

06 辅助端口

大多数Cisco路由器都配备了一个“辅助端口”(Auxiliary Port)。它和控制台湍口类似,提供了一个EIA/TIA—232异步串行连接,使我们能与路由器通信。辅助端口通常用来连接Modem ,以实现对路由器的远程管理。

远程通信链路通常并不用来传输平时的路由数据包,它的主要的作用是在网络路径或回路失效后访问一个路由器。

07 配置文件

共有两种类型的IOS 配置:

1)运行配置

2)启动配置

两者均以ASCII文本格式显示,所以,我们能够很方便地阅读与操作。一个路由器只能路由器的处理器负责执行处理数据包所需的工作。

比如维护路由和桥接所需的各种表格以及作出路由决定等等,路由器处理数据包的速度在很大程度上取决于处理器的类型。

08 内存

所有从这两种类型中选择一种。 运行配置有时也称作“活动配置”,驻留于RAM ,包含了目前在路由器中“活动”的I0S配置命令。配置IOS时,就相当于更改路由器的运行配置。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

09 启动配置

启动配置驻留在NVRAM中,包含了希望在路由器启动时执行的配置命令。

启动完成后,启动配置中的命令就变成了“运行配置”(有时也把启动配置称作“备份配置”)。

这是由于修改并认可了运行配置后,通常应将运行配置复制到NVRAM里,将作出的改动“备份”下来,以便路由器下次启动时调用。

10 进程

所谓I0S“进程”、是指一个在路由器上运行的特殊软件任务,用于实现某种功能。

例如,IP包的路由选择是由一个进程完成的;

而AppleTalk包的路由选择是由另一个进程完成的。

I0S进程的其他例子如路由协议以及内存分配例程等等。

当我们将命令放人配置文件对IOS进行配置时,实际就相当于对构成IOS各进程的行为加以控制,所有这些进程都在路由器上同时运行。

至于能在一个路由器上运行的进程数量和种类,则取决于路由器CPU的速度以及安装的RAM容量。

可以看出,这类似于PC上运行的程序数取决于CPU的类型以及配备的RAM容量。

整理:老杨丨8年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

有关路由器内部到底是啥结构?不懂就不算网工人的更多相关文章

  1. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  2. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  3. ruby - rails 3 redirect_to 将参数传递给命名路由 - 2

    我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use

  4. ruby - 是否有用于序列化和反序列化各种格式的对象层次结构的模式? - 2

    给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最

  5. ruby-on-rails - Rails 3,嵌套资源,没有路由匹配 [PUT] - 2

    我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle

  6. ruby-on-rails - 一般建议和推荐的文件夹结构 - Sinatra - 2

    您将如何构建一个简单的Sinatra应用程序?我正在制作,我希望该应用具有以下功能:“应用程序”更像是一个包含所有信息的管理仪表板。然后另一个应用程序将通过REST访问信息。我还没有创建仪表板,只是从数据库中获取东西session和身份验证(尚未实现)您可以上传图片,其他应用可以显示这些图片我已经使用RSpec创建了一个测试文件通过Prawn生成报告目前的设置是这样的:app.rbtest_app.rb因为我实际上只有应用程序和测试文件。到目前为止,我已经将Datamapper用于ORM,将SQLite用于数据库。这是我的第一个Ruby/Sinatra项目,所以欢迎任何和所有建议-我应

  7. ruby-on-rails - Rails - 从命名路由中提取 HTTP 动词 - 2

    Rails中有没有一种方法可以提取与路由关联的HTTP动词?例如,给定这样的路线:将“users”匹配到:“users#show”,通过:[:get,:post]我能实现这样的目标吗?users_path.respond_to?(:get)(显然#respond_to不是正确的方法)我最接近的是通过执行以下操作,但它似乎并不令人满意。Rails.application.routes.routes.named_routes["users"].constraints[:request_method]#=>/^GET$/对于上下文,我有一个设置cookie然后执行redirect_to:ba

  8. ruby-on-rails - 如何在 Rails 中设置路由的默认格式? - 2

    路由有如下代码:resources:orders,only:[:create],defaults:{format:'json'}resources:users,only:[:create,:update],defaults:{format:'json'}resources:delivery_types,only:[:index],defaults:{format:'json'}resources:time_corrections,only:[:index],defaults:{format:'json'}是否可以使用1个字符串为所有资源设置默认格式,每行不带“默认值”散列?谢谢。

  9. ruby - 如何在 ruby​​ 中复制目录结构,不包括某些文件扩展名 - 2

    我想编写一个ruby​​脚本来递归复制目录结构,但排除某些文件类型。因此,给定以下目录结构:folder1folder2file1.txtfile2.txtfile3.csfile4.htmlfolder2folder3file4.dll我想复制这个结构,但不包含.txt和.cs文件。因此,生成的目录结构应如下所示:folder1folder2file4.htmlfolder2folder3file4.dll 最佳答案 您可以使用查找模块。这是一个代码片段:require"find"ignored_extensions=[".cs"

  10. ruby - 是否可以从也在该模块中的类内部调用模块函数 - 2

    在这段Ruby代码中:ModuleMClassC当我尝试运行时出现“'M:Module'的未定义方法'helper'”错误c=M::C.new("world")c.work但直接从另一个类调用M::helper("world")工作正常。类不能调用在定义它们的同一模块中定义的模块函数吗?除了将类移出模块外,还有其他解决方法吗? 最佳答案 为了调用M::helper,你需要将它定义为defself.helper;结束为了进行比较,请查看以下修改后的代码段中的helper和helper2moduleMclassC

随机推荐