理解网络设备的关键在于

理清这些设备运作的网络层级,与其解决的问题

首先,让我们看一下OSI模型,可以看到以传输层为界,分为软件层和硬件层,拥有良好的职责划分。

osi

从底层往上,每一层用的设备是:

  • 物理层:集线器(Hub),中继器(Repeater)
  • 链路层:桥接器(Bridge),网卡(Network card),2层交换机(2-layer switch)
  • 网络层:路由器(Router),3层交换机(3-layer switch)
  • 传输层:防火墙(Firewall)
  • 会话层及以上:防火墙(Firewall),终端设备(如PC,Phone,Server等)

在这其中,网关(Gateway)可以被使用在任何一层。

顾名思义,网关(Gateway)是将两个网络连接在一起的通道,可以在不同的网络模型上工作。它们基本上是一种代理,从一个系统中获取数据,解释数据并将其传输到另一系统。网关也称为协议转换器,可以在任何网络层上运行。网关通常比交换机或路由器复杂。

本文依次从物理层开始,逐层介绍以下常见的网络设备:

中继器、集线器、桥接器、交换机、路由器 ······

以太网

说到网络,那肯定要提及以太网(Ethernet)

以太网标准最初订于1983年IEEE 802.3,历经了多个附加标准后,从最初龟速的10 Mbit/s,发展至今日超神速的400Gbit/s的太比特以太网(Terabit Ethernet,TbE),或者被称为万兆以太网。

总线拓扑(Bus Topology)

bus

传统以太网常使用总线拓扑。将一同轴电缆布于建筑物内,并透过收发器(transceiver)将多台主机连结至此主干网路,其简单、便宜的特性,在当时很快就得到广泛的使用。

若节点A想发送以太网帧讯给节点D,只需在帧的目的地址(destination address)栏位,填上节点D的MAC地址。然而,因为共享介质的关系,传统以太网是以**广播(broadcast)**方式进行传输,尽管节点A只是想发送帧给节点D,但是线路上的『所有节点』也都将会收到该帧。

broadcast

这也带来了安全问题,例如,若节点C想拦截经过的帧时,只需开启混杂模式(promiscuous mode),就能监听、甚至修改帧内容。

中继器(Repeater)

中继器在物理层运行,由于「信号衰减和时序」的问题,每个版本的以太网都在不同缆线之上有最大传输距离的限制。

它的任务是在信号变得太弱或损坏之前,在同一网络上重新生成信号,以延长信号可以在同一网络上传输的长度。

当信号变弱时,他们会一点一点地复制信号并以原始强度重新生成信号,通常是一个2端口设备。

repeater

集线器(Hub)

集线器基本上是多端口中hub继器,并且通常是一种中央节点(central node)的概念。集线器连接来自不同分支的多条电线,例如星形拓扑结构中连接不同站点的连接器。

hu'b

但是集线器无法过滤数据,因此数据包还将发送到所有连接的设备。换句话说,通过集线器连接的所有主机的冲突域仍然是一个。而且,他们没有智能来找出数据包的最佳路径,这会导致效率低下和浪费。

因此,集线器连接起来的以太网可以被认为是「伪」星形拓朴,逻辑上仍属于总线(bus topology)。

同时也有,主动集线器:中继器+集线器

这些集线器具有自己的电源,可以清理,增强和中继信号以及网络。它既可以用作中继器,也可以用作布线中心,用于扩展节点之间的最大距离。

桥接器(Bridge)

因为存在碰撞(collision)的问题,提出了CSMA/CD来避免碰撞,但是不但速度慢、浪费频宽使用率,也带来布线上的诸多限制。

根本原因是因为这些节点都处在同一个冲突域中,因此就有了一个自然的想法

「尽量」让每个节点都有一个自己冲突域!

因此,就有了桥接器,用于连接多个传统以太网,成为『一个』大型以太网,同时还可以切开冲突域,进而减少碰撞机率,提升平均带宽。

bridge

图中,共有四个冲突域(但是是一个局域网)

那么何不多加几个端口,将冲突域切得更细呢?

交换机(Switch)

多端口桥接器(multiport bridge)便被称为交换器(switch),也因此桥接器(bridge)与交换器(switch)

时常被视为等价的。

这里指的是2层交换机,因此位于链路层,并且具有缓冲区,可以提高其效率(大量端口意味着每个端口更少的流量)和性能。

switch

所有的端口都是独立处理,为了让每个端口都是独立的冲突域

交换机可以在转发数据之前执行错误检查,这使得它非常高效,因为它不会转发有错误的数据包,而仅将正确的数据包转发到正确的端口,这也意味着交换机带有过滤功能(filtering)。

换句话说,交换机划分主机的冲突域,但广播域保持不变。

hub-vs-switch

转发

forward

注意这里的转发是针对MAC地址转发的

当交换器欲转发以太网帧时,便查询转发表中是否有该目的地址的对应的端口条目,有的话,就直接转发至该端口;否则,将采取泛洪演算法(flooding algorithm):也就是说,复制以太网帧并传送到「除了来源端口以外」的「所有端口」。

这也被称之为单播泛洪(unicast flood),其本质上还是单播,若下个接收泛洪帧的交换器知道目的地址的端口,即可直接进行点对点转送,这点与**广播(broadcast )**截然不同。

广播域(Broadcast Domain)

之前提到了广播和单播,与之对应MAC地址也有单播地址(unicast address),广播地址(broadcast address)以及多播地址(multicast address)

单播:指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式。

广播:IPv6不支持广播,广播相应的功能由任播(anycast)代替ff:ff:ff:ff:ff:ff (广播地址)

多播:是指把信息同时传递给一组目的地址。它使用的策略是最高效的,因为消息在每条网络链路上只需传递一次,且只有在链路分叉的时候,消息才会被复制。

任播(anycast):是一种网络寻址和路由的策略,使得可以根据路由拓朴来决定送到“最近”或“最好”的目的地

广播风暴(broadcast storm)

尽管交换机能切割冲突域,刚才提到交换机不能分割广播域,若节点们位于相同的广播域,它们都将被迫处理、丢弃未知目的单播(泛洪)帧,以及广播、群播帧。

若帧数量较多,将导致整体网络效率降低,极端数量的帧,更可能瘫痪网络,此情形便被称为广播风暴(broadcast storm)。

广播风暴(broadcast storm)通常是因交换器之间的的连接方式中存在回圈、并联所造成,这不一定表示拓朴方式是错的,相反地,在业务上上常需要这些备用链结,以预防主交换器故障所造成的损失。

loop

为避免交换机连接方式中存在回圈,导致帧被无止境的复制、转送,Radia Perlman于1985年发明了著名的生成树协议(Spanning Tree Protocol, STP)。随后,IEEE则引进了RSTP(802.1w)以及MSTP(802.1s),以改善STP的收敛时间(convergence time)

切割广播域

连接至相连的交换机的设备,皆位于相同的广播网域,意味着随着服务器的增加,将使整个局域网的广播帧增加、效率下降。

因此,有了VLAN。VLAN则使得网络设备拥有了切割广播网域的功能。

VLAN,Virtual LAN,VLAN所指的LAN特指使用三层交换机分割的网络——也就是广播域

由于交换机(这里指2层交换机)的任务是转送同一局域网帧到对应的端口,「不同VLAN」的成员因为已位于不同的 (虚拟) 局域网,它们将无法透过交换机直接通信,只能借由外部设备或三层交换机通信

VLAN

依照端口 or MAC来分配VLAN ID,其中1号ID是预设VLAN

路由器(Router)

路由器是一种类似于三层交换机的设备,可以根据其IP地址路由数据包,因此是网络层设备。

路由器通常将LAN和WAN连接在一起,并具有动态更新的路由表,并根据此路由表来决定对数据包进行路由,这使网络可以跨越不同的协议。 路由器也划分通过它连接的主机的广播域。

路由器与三层交换机

相同之处

三层交换机既是交换机又是路由器:它可以被视为具有多个以太网端口并具有交换功能的路由器。3层交换机通过检查IP地址和MAC地址来启用数据包交换。因此,第3层交换机能够将端口隔离到单独的VLAN中,并在它们之间执行路由。与传统路由器一样,第3层交换机也可以配置为支持路由协议,例如RIP,OSPF和EIGRP。

不同之处

  • 路由器的功能是同时连接各种网络,三层交换机的主要功能是同时连接各种设备。
  • 路由器支持MPLS和VPN服务,而三层交换机不支持MPLS和VPN服务。
  • 路由器一般端口数量小于三层交换机
  • 路由器吞吐量低于三层交换机,因此交换能力低于三层交换机
  • 路由器一般价格高于三层交换机
  • 路由器支持诸如NAT,隧道,防火墙,IP地址分配(DHCP)等边缘技术,三层交互机并不支持
  • 在路由器中,转发由软件执行,而在三层交互机中,一般为ASIC实现(即硬件实现)
  • 此外,路由器是将LAN连接到WAN的设备,而交换机只是LAN设备

Reference