本文许多文字和图片使用了湖科大教书匠(高军老师)的 PPT,在此表示感谢。正是他让非科班的我能以奇妙的方式走进网络的世界。
文章目录
- 1 【物理层】集线器(Hub)——共享式以太网
- 1.1 为什么使用集线器?
- 1.2 集线器的特点
- 1.3 为什么使用转发器?
- 2 【链路层】网桥(Bridge)——多级共享式以太网
- 2.1 为什么使用网桥?
- 2.2 网桥的工作原理
- 2.3 透明网桥的自学习算法
- 3 【链路层】交换机(Switch)——交换式以太网
- 3.1 为什么使用交换机?
- 3.2 交换机的工作原理
- 3.3 交换机的自学习算法
- 3.4 交换机的类型
- 4 【网络层】路由器(Router)——交换式以太网之间的“中介”
- 5 总结
1 【物理层】集线器(Hub)——共享式以太网
1.1 为什么使用集线器?
早期的以太网最初采用无源的粗同轴电缆(即不包含电源线)作为共享总线来传输帧,属于基带总线局域网,传输速率为 2.94Mb/s。后来发展到使用价格相对便宜的细同轴电缆。
然而,实践证明这种使用无源电缆线和大量机械接口的总线型以太网并不像人们想象的那么可靠。若总线上的某个机械连接点接触不良或断开,则整个网络通信就不稳定或彻底断网。
于是,以太网发展出来了一种使用大规模集成电路来替代总线、并且可靠性非常高的设备,叫作集线器(Hub)。站点连接到集线器的传输媒体也转而使用更便宜、更灵活的双绞线电缆。目前最常用的是两端为 RJ-45 插头的双绞线电缆。
上图中,两种都属于共享式以太网(即使用集线器进行连接的以太网),它们的区别如下:
共享式以太网 | 逻辑拓扑 | 物理拓扑 | 碰撞检测(由网卡负责) |
---|---|---|---|
使用细同轴电缆的共享总线型以太网 | 总线型 | 总线型 | CSMA/CD 协议 |
使用集线器和双绞线的星型拓扑的共享式以太网 | 总线型 | 星型 | CSMA/CD 协议 |
1.2 集线器的特点
集线器的特点如下:
- 集线器只工作在物理层,它的每个接口仅简单地转发比特,并不进行碰撞检测。碰撞检测的任务由各站点中的网卡负责。
- 集线器一般都有少量的容错能力和网络管理功能。例如,若网络中某个站点的网卡出现了故障而不停地发送帧,集线器可以检测到这个问题,在内部断开与出故障网卡的连线,使整个以太网能正常工作。
- 使用集线器的以太网采用 10BASE-T 星型以太网标准 IEEE802.3i。
- “10”表示传输速率为 100Mb/s。
- “BASE”表示采用基带信号进行传输。
- “T”表示采用双绞线作为传输介质。
- 10BASE-T 以太网的通信距离较短,每个站点到集线器的距离不能超过 100m,因此两站点间的通信距离最大不能超过 200m。
1.3 为什么使用转发器?
共享总线以太网中两站点之间的距离不能太远,否则它们之间所传输的信号就会衰减到使 CSMA/CD 协议无法正常工作。
在早期广泛使用粗同轴电缆或细同轴电缆共享总线以太网时,为了提高网络的地理覆盖范围,常用的是工作在物理层的转发器(中继器)。IEEE802.3 标准规定,两个网段可用一个转发器连接起来,任意两个站点之间最多可以经过三个网段。如下图所示:
随着使用双绞线和集线器的 10BASE-T 星型以太网成为以太网的主流类型,扩展网络覆盖范围就很少使用转发器了。
【注】10BASE-T 星型以太网还可使用光纤和一对光纤调制解调器来扩展站点与集线器之间的距离。信号在光纤中的衰减和失真很小,因此使用这种方法可以很简单地将站点与集线器之间的距离扩展到 1000m 以上。
2 【链路层】网桥(Bridge)——多级共享式以太网
2.1 为什么使用网桥?
以太网集线器一般具有 8~32 个接口,如果要连接的站点数量超过了单个集线器能够提供的接口数量,就需要使用多个集线器,这样就可以连接成覆盖更大范围、连接更多站点的多级星型以太网(或多级共享式以太网)。
如下图,如果我们想在两个网段即部门 A 和部门 B 之间进行通信,就需要加入一个新的集线器,将部门 A 的集线器和部门 B 的集线器连接起来。这样,两个网段就合并为了一个网段。
假设部门 A 和部门 B 各有 x 台主机(或站点),则:
- 未连接主干集线器前:如果部门 A 的某台主机发送了一个广播帧(即目的 MAC 地址为 FF-FF-FF-FF-FF-FF),则只有部门 A 的 x-1 台主机收到广播帧。
- 连接主干集线器后:如果部门 A 的某台主机发送了一个广播帧(即目的 MAC 地址为 FF-FF-FF-FF-FF-FF),则部门 A 和部门 B 总共 2x-1 台主机都能收到广播帧。
显然,网段扩大,可以广播的范围也变大了。我们把这种现象称为广播域扩大。然而这会出现一个负面情况:
- 未连接主干集线器前:两个互不干扰的碰撞域——部门 A、部门 B,每个碰撞域只有 x 个站点使用 CSMA/CD 协议争用资源。
- 连接主干集线器后:一个大的碰撞域——部门 A + 部门 B,该碰撞域有 2x 个站点使用 CSMA/CD 协议争用资源。
我们把这种现象称为碰撞域(或冲突域)扩大。因此,使用集线器扩展的共享式以太网既是一个大的广播域,也是一个大的碰撞域,它会出现大量的碰撞冲突,导致平均吞吐量太低。
从以上分析我们可以看到,使用集线器扩展的共享式以太网,广播域和碰撞域是一对矛盾:若广播域变大,则碰撞域变大;若广播域变小,则碰撞域变小。但我们希望:广播域变大,而碰撞域不变。对于上面例子,我们希望将广播域扩大到两个网段,但碰撞域仍然保持在各网段自己的范围内。
为达成这个目的,我们引入了网桥。网桥在扩大广播域的同时,也隔断了碰撞域的扩大,从而加大了网络的吞吐量。网桥在数据链路层扩展了共享式以太网,它知道哪些帧需要广播、哪些帧去往哪个网段、哪些帧不去往哪个网段。从这个意义上来说,网桥比集线器更“聪明”了。
2.2 网桥的工作原理
网桥一般包含以下几个结构:
- 接口管理软件
- 网桥协议实体
- 转发表:存储网桥端口和 MAC 地址的映射关系。
- 缓存:暂存发来的 MAC 帧。
- 接口:网桥一般包含多个接口,每个接口连接一个网段。
不妨来讨论以下网络中网桥的工作情况。如图所示,该网桥有 2 个端口,端口连在每个网段的集线器上。每个网段即为一个碰撞域,而左右两个网段却成为了一个广播域。
网桥的转发表通常由自学习算法(下节将详细介绍)得出,这里暂且认为已得出了完整的转发表,则该转发表如下:
MAC 地址 | 接口 |
---|---|
A | 1 |
B | 1 |
C | 1 |
D | 2 |
E | 2 |
F | 2 |
(1)主机 A 发送 MAC 帧:A->D,即源 MAC 地址为 A,目的 MAC 地址为 D。
- 该 MAC 帧通过左集线器后,发给主机 B 和 C。主机 B 和 C 发现该帧不是发给自己的,遂丢弃。
- 该 MAC 帧通过左集线器后,被网桥的端口 1 接收。网桥通过查找转发表,发现目的地址为 D 应从端口 2 发出,于是将该 MAC 帧从端口 2 转发出去。
- 该 MAC 帧通过右集线器后,发给主机 D、E 和 F。主机 E 和 F 发现该帧不是发给自己的,遂丢弃;主机 D 发现该帧是发给自己的,遂接收。
(2)主机 A 发送 MAC 帧:A->C,即源 MAC 地址为 A,目的 MAC 地址为 C。
- 该 MAC 帧通过左集线器后,发给主机 B 和 C。主机 B 发现该帧不是发给自己的,遂丢弃;主机 C 发现该帧是发给自己的,遂接收。
- 该 MAC 帧通过左集线器后,被网桥的端口 1 接收。网桥通过查找转发表,发现目的地址为 C 应从端口 1 发出,而端口 1 是该帧的接收端口,于是丢弃该 MAC 帧。
(3)主机 A 发送 MAC 广播帧,即源 MAC 地址为 A,目的 MAC 地址为 FF-FF-FF-FF-FF-FF。
- 该 MAC 帧通过左集线器后,发给主机 B 和 C。主机 B 和 C 发现该帧是发给自己的,遂接收。
- 该 MAC 帧通过左集线器后,被网桥的端口 1 接收。网桥不用查找转发表,而是会通过除接收该帧的接口的其他接口转发该广播帧,于是从端口 2 转发该 MAC 帧。
- 该 MAC 帧通过右集线器后,发给主机 D、E 和 F。主机 D、E 和 F 发现该帧是发给自己的,遂接收。
【注】网桥的接口在向其连接的网段转发帧时,会执行相应的媒体接入控制协议,对于共享式以太网就是 CSMA/CD 协议。
2.3 透明网桥的自学习算法
透明网桥(Transparent Bridge)中的“透明”,是指以太网中的各站点并不知道自己所发送的帧将会经过哪些网桥的转发,最终到达目的站点。也就是说,以太网中的各网桥对于各站点而言是看不见的。
透明网桥的标准是 IEEE802.1d,它通过一种自学习算法(基于以太网中各站点间的相互通信)逐步建立起自己的转发表。
自学习算法的规则如下:
- 网桥收到帧后进行登记(即自学习),登记的内容为帧的源 MAC 地址和进入网桥的接口号。
- 网桥根据帧的目的 MAC 地址和网桥的转发表对帧进行转发,包含以下三种情况:
- 明确转发:网桥知道应当从哪个接口转发帧。
- 盲目转发:网桥不知道应当从哪个接口转发帧,只能将其通过除进入网桥的接口外的其他所有接口转发。
- 丢弃:网桥知道不应该转发该帧,将其丢弃。
- 转发表中的每条记录都有其有效时间,到期自动删除。
依然以前面的例子说明自学习算法的流程。
(1)初始时,网桥的转发表为空白。
MAC 地址 | 接口 |
---|---|
(2)主机 A 发送 MAC 帧:A->B,即源 MAC 地址为 A,目的 MAC 地址为 B。
- 该 MAC 帧通过左集线器后,发给主机 B 和 C。主机 C 发现该帧不是发给自己的,遂丢弃;主机 B 发现该帧是发给自己的,遂接收。
- 该 MAC 帧通过左集线器后,被网桥的端口 1 接收。网桥发现该帧的源地址为 A,于是将 A 映射为端口 1,记录到转发表中。
MAC 地址 | 接口 |
---|---|
A | 1 |
- 网桥并不知道目的地址 B 是在哪个网段中,因此将该帧进行盲目转发,从除接收该帧的接口的其他接口转发该帧,于是从端口 2 转发该 MAC 帧。
- 该 MAC 帧通过右集线器后,发给主机 D、E 和 F。主机 D、E 和 F 发现该帧不是发给自己的,遂丢弃。
(3)主机 D 发送 MAC 帧:D->A,即源 MAC 地址为 D,目的 MAC 地址为 A。
- 该 MAC 帧通过右集线器后,发给主机 E 和 F。主机 E 和 F 发现该帧不是发给自己的,遂丢弃。
- 该 MAC 帧通过右集线器后,被网桥的端口 2 接收。网桥发现该帧的源地址为 D,于是将 A 映射为端口 2,记录到转发表中。
MAC 地址 | 接口 |
---|---|
A | 1 |
D | 2 |
- 同时,网桥通过查找转发表,发现目的地址为 A 应从端口 1 发出,于是从端口 1 转发该 MAC 帧。
- 该 MAC 帧通过左集线器后,发给主机 A、B 和 C。主机 B 和 C 发现该帧不是发给自己的,遂丢弃;主机 A 发现该帧是发给自己的,遂接收。
(4)主机 C 发送 MAC 帧:C->A,即源 MAC 地址为 C,目的 MAC 地址为 A。
- 该 MAC 帧通过左集线器后,发给主机 A 和 B。主机 B 发现该帧不是发给自己的,遂丢弃;主机 A 发现该帧是发给自己的,遂接收。
- 该 MAC 帧通过左集线器后,被网桥的端口 1 接收。网桥发现该帧的源地址为 C,于是将 C 映射为端口 1,记录到转发表中。
MAC 地址 | 接口 |
---|---|
A | 1 |
D | 2 |
C | 1 |
- 同时,网桥通过查找转发表,发现目的地址为 A 应从端口 1 发出,而端口 1 是该帧的接收端口,于是丢弃该 MAC 帧。
以上即为透明网桥的自学习算法的过程。
3 【链路层】交换机(Switch)——交换式以太网
3.1 为什么使用交换机?
网桥的接口数量很少,通常只有 2~4 个,一般只用来连接不同的网段,因此采用了一种交换式集线器(Switching Hub),它本质上是具有多个接口的网桥,常称为以太网交换机(Switch)或二层交换机。“二层”是指以太网交换机工作在数据链路层(包括物理层)。
交换机内部的转发表也是通过自学习算法,基于网络中各主机间的通信,自动地逐步建立起来的。
仅使用交换机(而不使用集线器)的以太网就是交换式以太网。现在使用的以太网基本上都是交换式以太网。
3.2 交换机的工作原理
交换机的每个接口可以连接计算机,也可以连接集线器或另一个交换机。
(1)当交换机的接口与计算机或交换机连接时,可以工作在全双工方式,并能在自身内部同时连通多对接口,使每一对相互通信的计算机都能像独占传输媒体那样,无碰撞地传输数据,这样就不需要使用 CSMA/CD 协议了。
(2)当交换机的接口连接的是集线器时,该接口就只能使用 CSMA/CD 协议并只能工作在半双工方式。
3.3 交换机的自学习算法
交换机的自学习算法与网桥相同,通过下例说明交换机建立转发表的过程。为方便起见,把转发表的表项表示为<MAC 地址, 接口>
。
(1)初始时,两个交换机的转发表为空白。
交换机 1 的转发表 | 交换机 2 的转发表 |
---|---|
(2)主机 A 发送 MAC 帧:A->B,即源 MAC 地址为 A,目的 MAC 地址为 B。
- MAC 帧被交换机 1 的端口 1 接收,交换机 1 发现该帧的源地址为 A,于是将 A 映射为端口 1,记录到转发表中。
表项 | 交换机 1 的转发表 | 交换机 2 的转发表 |
---|---|---|
1 | <A, 1> |
- 交换机 1 并不知道目的地址 B 是在哪个网段中,因此将该帧进行盲目转发,从除接收该帧的接口的其他接口转发该帧,于是从端口 2~6 转发该 MAC 帧。
- 主机 B 接收该帧,而主机 X、E、D 丢弃该帧。
- MAC 帧被交换机 2 的端口 3 接收,交换机 2 发现该帧的源地址为 A,于是将 A 映射为端口 3,记录到转发表中。
表项 | 交换机 1 的转发表 | 交换机 2 的转发表 |
---|---|---|
1 | <A, 1> | <A, 3> |
- 交换机 2 并不知道目的地址 B 是在哪个网段中,因此将该帧进行盲目转发,从除接收该帧的接口的其他接口转发该帧,于是从端口 1,2,4,5,6 转发该 MAC 帧。
- 主机 F、G、H、I、J 丢弃该帧。
(3)主机 H 发送 MAC 帧:H->A,即源 MAC 地址为 H,目的 MAC 地址为 A。
- MAC 帧被交换机 2 的端口 4 接收,交换机 2 发现该帧的源地址为 H,于是将 H 映射为端口 2,记录到转发表中。
表项 | 交换机 1 的转发表 | 交换机 2 的转发表 |
---|---|---|
1 | <A, 1> | <A, 3> |
2 | <H, 2> |
- 同时,交换机 2 通过查找转发表,发现目的地址为 A 应从端口 3 发出,于是从端口 3 转发该 MAC 帧。
- MAC 帧被交换机 1 的端口 6 接收,交换机 1 发现该帧的源地址为 H,于是将 H 映射为端口 6,记录到转发表中。
表项 | 交换机 1 的转发表 | 交换机 2 的转发表 |
---|---|---|
1 | <A, 1> | <A, 3> |
2 | <H, 6> | <H, 2> |
- 同时,交换机 1 通过查找转发表,发现目的地址为 A 应从端口 1 发出,于是从端口 1 转发该 MAC 帧。
- 主机 A 接收 MAC 帧。
3.4 交换机的类型
一般的交换机都采用存储转发方式。这种方式将帧放入高速缓存并检查是否正确,正确则转发,不正确则丢弃。延迟大,可靠性较高,可支持不同速率的端口转换。
为了减小交换机的转发时延,某些交换机采用了直通(Cut-Through)交换方式。
采用直通交换方式的交换机,在接收帧的同时就立即按帧的目的 MAC 地址决定该帧的转发接口,然后通过其内部基于硬件的交叉矩阵进行转发,而不必把整个帧先缓存后再进行处理。直通交换的时延非常小,但不检查差错就直接将帧转发出去,有可能会将一些无效帧转发给其他主机。不可支持不同速率的端口转换。
总结如下:
类型 | 使用缓存? | 检查差错? | 延迟 | 支持不同速率的端口转换? |
---|---|---|---|---|
存储转发方式 | √ | √ | 大 | √ |
直通交换方式 | x | x | 小 | x |
4 【网络层】路由器(Router)——交换式以太网之间的“中介”
尽管路由器不属于链路层设备,但我认为还是很有必要提一下,为读者形成一个完整的网络设备体系。
路由器是一种具有多个输入和输出端口的计算机,其任务是连接不同的网络(异构网络)并完成路由转发。在多个逻辑网络(即广播域)互联时必须使用路由器。路由器可以连接不同的 LAN、WLAN 和 WAN,肩负起隔离广播域的责任。
当源主机向目的主机发送数据报时,路由器先检查源主机与目的主机是否连接在同一个网络上:
- 若是同一个网络,那么直接交付而无需通过路由器。
- 若不是同一个网络,那么路由器按照路由表将数据报转发给下一个路由器,称为间接交付。
5 总结
共享式以太网:
交换式以太网:
各种不同的以太网:
图片 | 类型 | 设备 | 碰撞检测? | 碰撞域隔离? |
---|---|---|---|---|
共享式以太网 | 同轴无源电缆 | √ | x | |
共享式以太网 | 集线器 | √ | x | |
物理层扩展的共享式以太网 | 集线器 | √ | x | |
链路层扩展的共享式以太网 | 网桥、集线器 | √ | √ | |
交换式以太网 | 交换机 | x | √ | |
链路层扩展的交换式以太网 | 交换机 | x | √ |
各种设备的区别:
设备 | 隔离碰撞域? | 隔离广播域? |
---|---|---|
集线器/转发器/中继器 | x | x |
网桥/交换机 | √ | x |
路由器 | √ | √ |