固件在路由器上起什么具体作用?

固件在路由器上起什么具体作用?

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

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

所以我问:除了只是实施 DHCP/DNS/等等?

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

答案1

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

固件路由器由操作系统、驱动程序和应用程序路由器运行的。它本质上是一个磁盘映像,就像戴尔或惠普在计算机出厂前初始化时使用的磁盘映像一样。

由于路由器是嵌入式设备,因此需要尽可能高效和小巧。这就是固件以单个文件形式分发的原因;此文件是根据路由器的确切型号定制的;不存在不存在的硬件的驱动程序,也没有固件所针对的路由器不支持的功能的应用程序。

固件不“实现”DNS/DHCP/等。固件包含一个实现这些协议/服务的应用程序(DNSMasqDHCPd等)。就像有许多不同的应用程序可以处理*.zip文件一样,也有许多不同的应用程序可以履行这些角色,所有应用程序都具有略有不同的功能,或允许略有不同的自定义。例如,您可能想要换成DNSMasqBind。这些实际上是您在履行这些角色的桌面或服务器上可能找到的相同应用程序。

二、生产厂家众多每个固件的核心都使用相同的核心。许多都使用精简版 Linux 操作系统。路由器固件的相似性使得像 DD-WRT 这样的开源固件项目能够在数百种不同的路由器型号上运行;否则,这需要做太多工作。

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

答案2

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

人们编写了自定义路由器固件来取代制造商的固件,因此有了 dd-wrt ​​和 tomato。

本质上,只要硬件功能强大并且有足够的空间,您就可以编写固件来执行任何您想做的事情。

答案3

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

所有这些与硬件或演示有关的部分(drivers为简单起见,我们将其称为)都由某个中央程序来指示要做什么。该程序管理各种驱动程序/模块之间的交互,并且不允许它们做无意义的事情。为简单起见,我们再次将该中央管理器称为kernel

考虑到以上情况,你可能会说嘿,看看这个结构,它看起来像一个 Linux / Windows / 不管什么盒子!。嗯,没错!它没有键盘也没有鼠标,但实际上它是一台小型、专门用于任务的计算机。许多家用路由器确实使用 Linux(不是 Windows)或能够运行 Linux(例如 Tomato)。

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

相关内容