• 家用路由器内部设计


    Overview

    一直对路由器的内部设计存在疑惑,实际在找资料过程中也发现路由器有着不同的设计。

    下面是我找到的一张路由器的参考设计:

    这张图描述的路由器架构是十分清晰的。首先路由器对外接口有5个,这5个接口都接在一个可编程的交换机里面。

    这些接口的数据随后会汇聚成一路,到路由器的芯片里面。

    那么这5个物理接口是如何区分WAN口和LAN口的呢,这里是通过VLAN来将其引入路由器的核心模块。

    因为这个交换机是可编程的,于是我认为经过稍加修改,这个路由器可以修改成为多WAN口的路由器。

    外部的wifi接口通过桥接来巧妙地接到VLAN0上。

    这里将WAN口单独赋予一个VLAN,可以将WAN口和LAN口区分开,因为最终要汇聚成一路来引入

    到eth0里面。如果WAN口直接连接到CPU上,我想应该就不用为它单独划分一个VLAN了。

    为它单独划分VLAN的好处我想是可以通过修改软件设计,将这个路由器改成一个5口的交换机。

    提到改交换机这个思路,一般的做法是关闭路由器的DHCP,那么关闭DHCP后的路由器行为目前还不清楚,

    我想就是将VLAN0和路由器内部一些机制的通路给关了,

    后面通过学习openwrt应该可以进一步理解路由器的架构,不过不同路由器的架构设计是不一样的。

    下面再看一下dlink825的设计,这里有6口的交换机,P0-P3是做LAN口,wifi直接连接到路由器芯片,

    WAN口直通到eth1。这里大体的设计和上面的图是差不多的。

    下面再分享一篇文章,有助于加深对路由器内部结构的理解。

    http://www.diffen.com/difference/LAN_vs_WAN

    下面是其中的一张表格(翻译)

    LAN

    WAN

    代表 局域网 广域网
    覆盖 本地(家庭,学校,办公室) 广大的区域(比如城市)
    速度 1000Mbps 小于150Mbps
    案例 一个办公室内的网络 internet
    技术 Ethernet MPLS, ATM, Frame Relay 和 X.25
    组成 二层的交换机和网桥 路由器、多层次的交换机,ATM,Frame-relay的交换机
    产生的问题 LAN很少出问题,因为只是管理很少的机器 因为是一个大的系统,所以比较容易出问题
    数据传输错误 很少的传输错误 大量的传输错误
    拥有者 个人也可以拥有 WAN(像Internet) 不是属于任何人的,而是需要国际之间协作、维护的
    花费 便宜 像海底电缆这样的设置肯定要花很多钱,但是使用WAN的成本是很低的
    带宽 大量的带宽 带宽比较小,比如国家之间的出口带宽
    拥堵 大量

    因为个人用户一般是连接到ISP来上网的,带宽受限,所以设置一个WAN口来连接internet,多个LAN口来做局域网是合理的。

    如果关闭DHCP,两台电脑连接到LAN口我想也可以互相通信(交换机模式),只要手动设置IP地址就可以了。

    数据包分析

    家用路由器不同于一般的路由器,一般教科书上所讲到的路由器是多WAN口的路由器,

    而现在市面上的家用路由器只有一个WAN口,有多个LAN口。下面用数据包发送的流程来分析一下家用路由器的

    工作流程。

    家用路由器的和商业路由器的区别我认为有以下几点:

    1.通过交换机实现多LAN口

    2.单WAN口

    3采用NAT来实现共享上网

    4.成本低,功能少

    1.通过交换机实现多LAN口

    这个设计相当于一个交换机和一个路由器连接。下面仔细分析一下计算机间的通讯流程。

    这里假设计算机里面已经有了指向网关(也就是路由器)的一个项路由表项。

    一般用户需要使用网络,比如HTTP应用,都是在网络层之上的。而路由器和交换机工作在IP层和MAC层。

    所以一般来说,用户的数据都需要加上IP头和MAC头。

    DHCP

    实际上DHCP就是方便计算机自动获取IP地址,这样用户就不用操心了,否则用户就需要自己配IP地址了。

    LAN口之间的计算机通信

    这种情况和两台电脑之间直连的情况是一样的。电脑上首先要填入自己的IP,默认的网关和子网掩码

    当电脑发出去的包的目的IP是在同一个子网内的时候,会发送给同一个子网的电脑。所以说只经过交换机就行了。

    当然了,802.3帧格式要求application前面要加上IP头和MAC帧头,所以需要知道对方的MAC地址。

    通过广播ARP请求就可以知道对方的MAC地址,然后将帧包好发出去。

    LAN口和WAN口之间的通讯

    LAN口的计算机数据要过WAN口,需要通过交换机和路由器。

    首先,电脑检测自己的目标IP地址不在同一个网段中,这时候就需要路由器帮忙了。

    它会将这个数据发送给路由器,让路由器来处理。不过,有了IP地址不够,要在ethernet上传输

    还需要有MAC地址,于是它发送一个arp请求给网关,然后就得到了网关的MAC地址。接下来就可以

    将帧封装好发送给网关了。这里的网关就是家用路由器内部的路由器模块,更实际的说,是在一块CPU里面。

    网关内部将这个数据包做NAT转换就可以发送到下一跳了,一般是ISP的机器。

    WAN口到ISP之间的协议就不一样了,根据抓包可以看到多了一层PPPOE的协议

     VLAN的处理

    这里WAN口和LAN口做在了一个交换机上面。通过VLAN的隔离(MAC层隔离),交换机上的WAN口和LAN口的数据就不会互通了。VLAN的数据需要路由模块的转发。

    2.NAT

    关于NAT,网上的资料很多,这里就不提了。位于NAT内的机器是不能直接被暴露到

    internet的。一些运营商的做法,使得家庭用户无法暴露自己的设备(如监控摄像头)到internet,因为

    他们采用了NAT。部分网友采用投诉的办法来让运营商取消对自己做的NAT。

  • 相关阅读:
    关于 HSSF 和 XSSF 功能的开发者入门指南 (Apache POI 操作 Excel)
    在Windows上安装MySQL(免安装ZIP版)
    Linux下解决中文乱码问题
    VMware安装VMware Tools
    (RHEL)Linux下的oracle(11g R2)安装过程
    每天学一点Python
    简单的Datatable转List,Json
    C# 刷票程序
    一些顿悟,和新的开始!
    每天学一点Python(2)
  • 原文地址:https://www.cnblogs.com/tanhangbo/p/4504560.html
Copyright © 2020-2023  润新知