开源无线路由器知识简介

由于做项目的需要和自己的爱好,最近在找关于无线路由器的资料,找到了些相关的资料,在这里总结一下。
一、无线路由器与无线AP的区别
AP为Access
Point简称,一般翻译为“访问节点”,无线AP主要是提供无线工作站对有线局域网和从有线局域网对无线工作站的访问,在访问接入点覆盖范围内的无线工作站可以通过它进行相互通信。通俗的讲,无线AP是无线网和有线网之间沟通的桥梁。
当前的无线AP可以分为两类:单纯型AP扩展型AP
  单纯型AP的功能相对比较简单,缺少路由功能,只能当无线集线器。它相当于一个无线交换机,接在有线交换机或路由器上,为跟它连接的无线网卡从路由器那里分得IP。
扩展型AP也就是市场上的无线路由器,由于它功能比较全面,大多数扩展型AP不但具有路由交换功能还有DHCP、网络防火墙和端口映射等功能。它是单纯型AP与宽带路由器的结合体;它借助于路由器功能,可实现家庭无线网络中的Internet连接共享,实现ADSL和小区宽带的无线共享接入,另外还可以把通过它进行无线和有线连接的终端都分配到一个子网,这样子网内的各种设备交换数据非常方便。简单地说,无线路由器就是AP、路由功能和交换机的集合体,支持有线无线主机组成同一子网,直接接上Modem。
  现在市场上的无线AP大多属于扩展型AP,它们在短距离范围内是可以相互联的;如果大家需要传输的距离比较远,那么就需要无线网桥和专门的天线等设备,其实无线网桥也是无线AP的一种。

二、理解路由的概念与原理
这里需要网络知识,可以稍微学习理解一下TCP/IP协议,以及数据链路层与网络层的交互。路由层的知识摘录如下

路由器工作在OSI模型中的第三层,即网络层;同时也是TCP/IP协议的第三层,即网际层。路由器利用网络层定义的“逻辑”网络地址(即IP地址)来区别不同的网络,实现网络的互连和隔离,保持各个网络的独立性。路由器不转发广播消息,而把广播消息限制在各自的网络内部。发送到其他网络的数据均先被送到路由器,再由路由器转发出去。
IP路由器只转发IP分组,把其余的部分挡在网内(包括广播),从而保持各个网络具有相对的独立性,这样可以组成具有许多网络(子网)互连的大型的网络。由于是在网络层的互连,路由器可方便地连接不同类型的网络,只要网络层运行的是IP协议,通过路由器就可互连起来。
  网络中的设备用它们的网络地址(TCP/IP网络中为IP地址)互相通信。IP地址是与硬件地址无关的“逻辑”地址。路由器只根据IP地址来转发数据。IP地址的结构有两部分,一部分定义网络号,另一部分定义网络内的主机号。目前,在Internet网络中采用子网掩码来确定IP地址中网络地址和主机地址。子网掩码与IP地址一样也是32bit,并且两者是一一对应的,并规定,子网掩码中数字为“1”所对应的IP地址中的部分为网络号,为“0”所对应的则为主机号。网络号和主机号合起来,才构成一个完整的IP地址。同一个网络中的主机IP地址,其网络号必须是相同的,这个网络称为IP子网。通信只能在具有相同网络号的IP地址之间进行,要与其它IP子网的主机进行通信,则必须经过同一网络上的某个路由器或网关(gateway)出去。不同网络号的IP地址不能直接通信,即使它们接在一起,也不能通信。

路由器有多个端口,用于连接多个IP子网。每个端口的IP地址的网络号要求与所连接的IP子网的网络号相同。不同的端口为不同的网络号,对应不同的IP子网,这样才能使各子网中的主机通过自己子网的IP地址把要求出去的IP分组送到路由器上。
  当IP子网中的一台主机发送IP分组给同一IP子网的另一台主机时,它将直接把IP分组送到网络上,对方就能收到。而要送给不同IP于网上的主机时,它要选择一个能到达目的子网上的路由器,把IP分组送给该路由器,由路由器负责把IP分组送到目的地。如果没有找到这样的路由器,主机就把IP分组送给一个称为“缺省网关(default
gateway)”的路由器上。“缺省网关”是每台主机上的一个配置参数,它是接在同一个网络上的某个路由器端口的IP地址。
想要更好的学习无线路由器的技术和知识,最好的办法就是实践,搞一块无线路由的开发板。有幸的是,由于我们可敬的Linux
hacker前辈们的努力,让现在许多MIPS芯片的无线路由产品变成了廉价的开发板,3、5百元有可以买到一个不错的。下面我就把搜到的资料分享一下:
三、开源的无线路由软件及相关产品
  针对无线路由器进行刷新固件的操作并且开源是在Linksys产品中首次出现的。过去,Linux爱好者们利用这些资源发展出了很多无线路由的Linux发行版,下面介绍一下主流的无线路由的Linux发行版:

Open-WRT
  国内最早兴起刷固件行动的人基本上都是将自己的设备刷新成Open-WRT,由此可见Open-WRT的影响力。该固件通过SSH加密协议来配置,和Cisco设备在很多指令和操作上类似,不过由于该固件的开发进度非常缓慢,新版本更新比较慢,所以它的角色已被DD
-WRT等新近“崛起”的固件所取代。
DD-WRT
  该固件是国内外目前最为流行的固件之一,它是在Open-WRT固件的基础上改进后发布的,很多功能都是取自Open-WRT。在应用范围上DD-WRT支持极多硬件平台,并且新版本的发布也很及时。
HyperWRT
  以稳定著称的第三方固件,不过功能上要比前两种稍逊一筹。从核心代码上比较,它是最接近于Linksys官方Firmware的固件。对很多用户来说,新功能、新应用的出现是他们刷新固件的主要动力,如果只是单一的稳定,那么直接使用官方默认固件即可。
Tomato
  这是一款非常火爆、逐渐流行的固件,个头比较小,外号“番茄”,实际使用起来非常稳定(与DD-WRT比较,我同事亲身体验的),基于SVG的图形化流量图非常有特色。它是由HyperWRT研发团队中的一个组员开发的。个小功能强是它的最大特点,这也是越来越多的玩家和无线路由器发烧友脱离DD-WRT阵营转投“番茄”门下的主要原因。

FreeWRT
  也是一个比较不错的发行版,他的一个重要特点是:你不仅可以下载源码来自己配置编译,还可以通过网页直接产生定制的镜像文件!
四、支持开源Linux的无线路由器产品及其购买指南
开源无线路由的硬件产品现在很多,都是MIPS核心的芯片,而且基本都是使用broadcom芯片为主CPU,并加miniPCI接口的无线网卡,flash存储器使用NOR
flash,内存有大有小(小到8MB,大到128MB)。软件支持的硬件型号在发行版的网站上有说明。
 但是产品哪里有售呢?买做好的产品,要是刷坏了不好办阿!所以一些商家把二手的无线路由加以改进(基本是加大RAM和Flash),并找出串口和JTAG口,引出USB口,拿裸板来卖,方便发烧友们折腾!这里我强烈建议买有引出JTAG接口的无线路由来折腾,这样比较安全,基本刷不死。
 淘宝上有很多这些开发板性质的无线路由,但是最有名卖家还属恩山淘宝店铺,他们不仅有许多开发板性质的Linksys无线路由裸板,还有自己的论坛,技术支持有保证。同时您也可以在他们的论坛中的个人物品转让或求购专区中找到二手转让的板子。
经过我的搜索还有一个很强悍的无线路由开发板:RouterStation
Pro,同时著名的无线设备生产商UBNT的产品,他们很值得一买,好像这个公司据说是UBNT的代理。
五、开源Linux的无线路由器刷机简要指南
对于刷机更新路由的固件,最简单的方法当然是在发行版的网站下载你所需要的刷机包(一个bin文件),通过登录路由的管理界面来更新,但设个方法可能并不能满足所有要求,特别是对于开发者来讲。

对于这些开源的Linux无线路由的所有软件都存在Nor flash里,而在flash里的内容主要有:
[email protected] WRT:/dev#
cat /proc/mtd
dev: size erasesize name
mtd0: 00040000 00010000 "cfe"

mtd1: 007b0000 00010000 "linux"
mtd2: 004dd400 00010000 "rootfs"

mtd3: 00010000 00002000 "nvram"
mtd4: 001f0000 00010000 "ddwrt"
(以
WRT300N Version 1.1刷上了DD-WRT为例)
cfeCommon Firmware Environment
通用固件环境,也就是嵌入是系统中的bootloader,或者电脑中的BIOS,负责初始化主板,并启动操作系统,同时具备网络功能、刷写其他分区、修改启动参数和操作主板上的硬件的能力,可以说是一个功能强大的bootloader。在这里有详细的介绍,boardcom还提供其源码(包含说明文档)和开发工具的下载。在cfe分区中存放了cfe及其使用的参数。
linux就是存放Linux内核的分区
rootfs就是存放Linux系统必须的根文件系统的分区。
nvram存放路由器在进入Linux系统后,运行路由和无线控制程序所需要的参数的分区,比如拨号是所需的帐户、秘密,路由器的名字、SSID等等,几乎所有关键的参数。顾名思义,Linux把这个分区当作非易失性的ram来使用。

ddwrt应该是DD-WRT使用的分区,但我将其备份出发现,什么数据都没有,功能我尚不明确。
对于刷机来说,首先要有刷机的原料:刷机包或者bin文件。获得这些东西一是通过发行版的网站获得,还有就是从一台已经刷好的路由中备份出来,在者就是通过源代码编译出你所要的程序。在这里我之简要介绍一下如何从一台已经刷好的路由中备份出各个分区的其中一种简单的方法:
(1)打开路由的ftp服务;
(2)通过传口或者网口登录无线路由,并执行以下命令:
[email protected]
WRT:~# mount -t ramfs ramfs /mnt
[email protected] WRT:~# dd if=/dev/mtd/0
of=/tmp/cfe.bin
512+0 records in
512+0 records out
[email protected]
WRT:~# cp /tmp/cfe .bin
/mnt/
(3)通过PC机的ftp软件,下载已经在/mnt中的分区备份。
这样就简单的备份出了cfe分区。别的分区也可同样备份出来,对于DD-WRT的rootfs分区,可能可以备份出后解开镜像文件来研究,他是一个squashfs文件系统。
如果你的路由参数被破坏了,你还可以通过刷回备份的nvram分区来恢复,方法如下:
如前所诉,通过ftp发送nvram备份到路由,然后执行:
[email protected]
WRT:~# cd /mnt
[email protected] WRT:/mnt# mtd write nvram.bin
nvram
[email protected] WRT:/mnt#
reboot
这样重启后设置的内容都恢复了,别的分区也可如此恢复。
其实以上介绍的方法就是一种可以在路由器的系统还可运行,并可登录的情况下刷机的方法:将备份出的分区直接在Linux下刷入系统。
如果你的系统被破坏了,无法启动,那就的看破坏的程度了:

(1)如果是Linux分区被破坏了,无法进入Linux系统,但可以进入cfe,那就可以通过cfe的tftp方式恢复。

这种恢复方式需要连接出路由板上的UART接口(也就是论坛上说的TTL),你必须制作一个连接线,它本质上是通过一个USB转串口的芯片来实现。其实也可以将USB转串口芯片改成232电平转换芯片(比如MAX232),然后接至电脑的串口。这些东西学过电子的朋友一定不难;但是你如果嫌麻烦,你可以在恩山论坛或者淘宝购买。
路由和PC间连接好了TTL和网线后,你就可以在路由上电时,在PC的串口工具中按住CTRL-C来进入cfe命令行模式,使用tftp的方法刷机。
(2)如果是cfe都被破坏了,那就是有通过JTAG口来恢复了。
这种方法你必须现制作一个并口的JTAG线,使用网上的brjtag.exe来操作路由,他可以在路由器的所有软件都被破坏后对路由器进行擦除、刷机和备份等操作。所以可以说他是砖机的救星,所以这也是我在开头推荐大家购买有JTAG接口的路由的原因。

以上对于两种方法,内容比较多。由于篇幅有限,以后我会在博客中详细介绍,你也可以到恩山的论坛上找资料。
六、总结
  在一个网络飞速发展的今天,了解一点网路的知识和原理是很有益的,对于一个普通的电子爱好者,对于一个电子工程师是很重要的,对于一个嵌入式系统的工程师是必须的。而学习实践网络的好机会就是“玩”无线路由。而最好“玩”的无线路由就是开源无线路由器,从中你可以学到很多知识和技术。本文整理并介绍了一点无线路由的基本概念、路由的运作原理、主流的开源无线路由的Linux发行版、硬件购买指南及简单的刷机指南,希望对于大家认识和学习开源无线路由有一点帮助。

开源无线路由器知识简介,布布扣,bubuko.com

时间: 2024-11-11 09:35:59

开源无线路由器知识简介的相关文章

字符编码知识简介和iconv函数的简单使用

字符编码知识简介和iconv函数的简单使用 字符编码知识简介 我们知道,在计算机的世界其实只有0和1.期初计算机主要用于科学计算,而我们知道一个数,除了用我们常用对10进制表示,也可以用2进制表示,所以只有0和1就可以进行科学计算,但是为了便于计算,大神们还是向计算机中引入的编码,比如通常我们用补码表示一个负数.所以编码这个东西,是从一开始就伴随着计算机的.到现在,我们的生活已经完全离不开计算机了,计算机也不仅仅用于科学计算了,更多地应用系信息处理.那计算机怎样表示与我们生活息息相关的事物呢,一

磁珠知识简介

磁珠的全称为铁氧体磁珠滤波器,是目前应用发展很快的一种抗干扰元件,廉价.易用,滤除高频噪声效果显著.还有一种是近年来问世的一种超小型非晶合金磁性材料制作的磁珠,它和铁氧体不是同一种材料.(注:请区别于电'技术中的"绝缘瓷珠"--编者) 磁珠的主要原料为铁氧体,是一种立方晶格结构的亚铁磁性材料.这种材料的特点是高频损耗非常大,具有很高的导磁率,使电感的线圈绕组之间在高频高阻的情况下产生的电容最小.当导线中有电流穿过时,铁氧体对低频电流几乎没有什么阻抗,而对较高频率的电流会产生较大的衰减.

PL/SQL 基础知识简介

1.PL/SQL代码块 PL/SQL 代码块是指令的集合,支持所有的DML,NDS,DBMS_SQL,DDL. :DML 是数据操纵语言(Data Manipulation Language)包括,Insert ,update,delete : DDL是数据定义语言(Data Definition Language ),包括,Alter,create,drop,truncate,Grant,revoke : NDS本地动态SQL(Native Dynamic SQL) 2.PL/SQL代码块结构

Android JNI知识简介

Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互.JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C.C++ 和汇编语言)编写的应用程序和库进行交互操作. 1.从如何载入.so档案谈起 由于Android的应用层的类都是以Java写的,这些Java类编译为Dex型式的Bytecode之后,必须靠Dalvik虚拟机(VM: Virtual Machine)

Java知识简介与环境变量配置问题

一.在学习一门语言中,不仅需要掌握其语法结构,开发平台以及环境也是很重要的.在开始Java学习之前首先对其进行压缩包的下载安装,以及开发平台环境下载安装.基于此下面文章就此展开: 1.        下载并安装JDK包,然后进行快速正确安装操作.(具体安装步骤网上很多,不在赘述.) 2.        安装成功后,需要对其进行环境变量配置,这一点有点特别,特别针对C语言.C#语言开发的同学更应该注意. 环境变量配置步骤如下: 打开:计算机属性->高级->环境变量选项卡->系统变量->

开源-基本知识普及 来自互联网

 一.开源软件发展的保障:分发协议 前不久,4月26日,是 世界知识产权日.知识产权日旨在促进人们树立尊重知识.崇尚科学和保护知识产权的意识,营造鼓励创新和保护知识产权的法律环境. 在4月28日,我们发布了来自BlenderCN社区罗聪翼的文章< 自由的成本--当开源遇上伪自主>,为大家介绍了国内两起涉嫌侵犯Blender分发协议,伤害开发者权益的事件,痛陈国内开源软件权利维护之路漫长且艰难.文章一经发出,迅速在微博上引起了一场关于维护开源软件权利的讨论,我们希望透过这一事件,引起大家对开

c++开源爬虫-Larbin简介

原文地址:http://leihuang.net/2014/06/16/Larbin-Introduction/ 因为最近学校实训,做的是一个搜索相关的项目,并且是c++的一个项目,所以就想到了larbin,于是接下来几天就现研究研究其源码,再根据项目需求修改其源码. 不多说,直接进入今天的正题.今天的目的就是简单了解下larbin. Larbin简介 larbin是一种开源的网络爬虫/网络蜘蛛,由法国的年轻人Sébastien Ailleret独立开发,用c++语言实现.larbin目的是能够

SpringCloud(1) 架构演进和基础知识简介

一.传统架构演进到分布式架构 简介:讲解单机应用和分布式应用架构演进基础知识 (画图) 高可用 LVS+keepalive 1.单体应用:开发速度慢.启动时间长.依赖庞大.等等 2.微服务:易开发.理解和维护.独立的部署和启动等等 不足:分布式系统(分布式事务问题).需要管理多个服务(服务治理) 二.微服务基础知识简介 微服务核心知识 :网关.服务发现注册.配置中心.链路追踪.负载均衡器.熔断 1.网关:路由转发 + 过滤器 /api/v1/pruduct/       商品服务 /api/v1

solr基础知识简介

1.1 solr简介 ApacheSolr作为搜索服务器,实现站内搜索具有封装性好和良好的扩展性,多门户社区多采用solr进行搜索引擎的建设.ApacheSolr 是一个开源的搜索服务器,Solr使用 Java语言开发,主要基于 HTTP 和Apache Lucene 实现. 1.2 solr实现原理 Solr对外提供标准的http接口来实现对数据的索引的增加.删除.修改.查询.在Solr中,用户通过向部署在servlet 容器中的Solr Web应用程序发送 HTTP 请求来启动索引和搜索.S