固件在路由器上扮演什么特定角色?


0

如果路由器正确实现了标准网络协议(DNS,DHTCP,TCP / IP等),那么相同的固件(实现这些协议)是否不适用于所有路由器?

我想我想知道为什么路由器都使用不同的固件?为什么同一路由器制造商中的不同型号使用不同的固件,以及为什么似乎有一个庞大的开源社区,他们喜欢为路由器编写自定义固件。这使我相信,路由器的固件可能不仅限于某些协议的实现。

所以我问:除了实现DHCP / DNS / etc 外,固件还做哪些(特定的)事情?

编写自己的固件有哪些具体用例?

Answers:


2

首先,您必须了解路由器不过是具有专用网络硬件的嵌入式(超紧凑型)计算机。

路由器的固件由路由器运行的操作系统,驱动程序和应用程序组成。它本质上是一个磁盘映像,就像Dell或HP在出厂之前用来初始化其计算机的磁盘映像一样。

由于路由器是嵌入式设备,因此它们必须尽可能高效且小巧。这就是将固件作为单个文件分发的原因。该文件根据路由器的确切型号进行定制。没有针对不存在的硬件的驱动程序,也没有针对固件设计的路由器不支持的功能的应用程序。

固件没有“实现” DNS / DHCP / etc。该固件包含实现了这些协议/服务(应用程序DNSMasqDHCPd等等)。就像有许多可以处理*.zip文件的应用程序一样,有许多可以完成这些角色的应用程序都具有稍微不同的功能,或者允许稍有不同的自定义。你可能想交换DNSMasq出来Bind,例如)。这些实际上是在台式机或服务器上可以找到的具有相同作用的应用程序。

其次,许多制造商确实在每个固件的核心使用相同的内核。许多人使用精简的Linux操作系统。路由器固件的相似性使DD-WRT之类的开源固件项目可以在数百种不同的路由器模型上工作。否则,这只会​​需要太多的工作。

之所以出现这些开放源代码固件社区,是因为在路由器上运行的软件很少依赖于硬件。您可以轻松安装其他应用程序,例如OpenVPN,流媒体服务器和代理,只要路由器具有足够的CPU能力和内存来支持您想做的事情即可。


1

路由器的固件不仅仅处理网络协议。它告诉设备如何操作。它决定了打开设备时的操作。它可以提供Web,telnet,ssh等界面供用户管理。它包含您设置的所有自定义设置。它所做的不仅仅是处理网络协议。可以将其视为设备的操作系统。

人们已经编写了自定义路由器固件来替换制造商的固件,从而替换了dd-wrt和tomato。

本质上,假设硬件功能强大且有足够的空间,则您可以编写固件来执行几乎任何您想做的事情。


1

固件特定于硬件及其功能。这适用于路由器,电话(不仅是智能手机),大型路由器,交换机,网桥(随便命名)。固件的某些部分执行低级任务,例如从闪存/磁盘存储中读取数据,下一部分介绍如何与无线电通讯或与板载LAN芯片通讯。对于(A)DSL路由器,还有一部分负责拨号和DHCP,DNS等。其他部分负责为您提供WEB界面,您可能会猜到,路由器的选项在路由器之间因硬件功能而(这就是为什么同一路由器制造商的不同型号使用不同的固件部分的原因)。

所有这些与硬件或表示有关的部分(drivers为简单起见,我们都称其为“部分”)由某个中央程序告知操作方法。该程序管理各种驱动程序/模块之间的交互,并且不允许它们执行无意义的操作。kernel为简单起见,我们再次将此中央管理器称为a 。

考虑到以上内容,您可能会说“ 嘿,它看起来像一个linux / windows /任何盒子”,看着这种结构!。好吧,没错!它既没有键盘也没有鼠标,但实际上是一台小型的任务专用计算机。其中许多家用路由器确实使用Linux(不是Windows)或能够运行Linux(例如Tomato)。

至于为什么有人为他们编写新固件的原因 -假设您的路由器没有实现您关心的特定功能(在我的情况下是静态分配的DHCP)。但是这里有一个Tomato路由器固件,它具有此功能,并且确实支持路由器的硬件。为什么不使用它?(除了放弃制造商的保修)。我会的,我会的。因此,答案是- 人们为我们的路由器编写不同的固件,因为对它的需求是由原始制造商的能力不足/不愿意/缓慢地实现功能引起的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.