以太网交换
我们知道,通过 以太网协议 通讯的计算机需要通过网线连接到一起。那么,如何将多根网线连接在一起呢?
集线器
最简单的方式是将所有网线接到一个集线器( Hub
),如下图:
集线器
集线器内部构造很简单,可以理解成只是把所有网线连接到一起而已。换句话讲,集线器充当了 共用导线 的功能。
集线器构造
这样一来,某个端口发送出去的电信号,将传送到所有其他端口:
信号传输
也就是说,从一台计算机发送出来的数据,将传送到其他所有计算机上。以 A
往 B
发送数据为例:
数据广播
看起来就像 A
发起了 广播 ,所有其他计算机都可以收到这个数据。由于数据帧中包含 目的地址 ,最终只有 B
接收并处理这个数据。因此并无大碍,至少是可以正常工作的。
尽管如此,还是存在一些缺陷,主要体现在两方面:
- 所有计算机(端口)共享带宽;
- 所有计算机(端口)处于同一 冲突域 (一台计算机发送,其他只能等待);这两方面缺陷注定了集线器传输效率不高,在接入端口数较多的情况下更是如此。
总结一下,集线器工作于物理层,主要特点如下:
- 放大中继物理电信号;
- 所有端口同属一个冲突域;
- 所有端口共享带宽;
- 延伸网络访问距离;
- 扩展终端数量;
二层交换
为了解决 集线器 效率低下的尴尬,需要设计一种更高级的网络设备,根据目的 MAC
地址,将数据准确转发到对应端口。
如下图,中间节点是转发设备,与 3
台计算机连接。转发设备维护一张端口与对应计算机 MAC
地址的映射表。这样一来, 转发设备接到 A
机器发给 C
机器的数据后,根据目的 MAC
地址查映射表,将数据准确传送到对应的端口 3
。
根据目的地址转发数据
现在,传输模型现在更有针对性了,数据准确转发到正确的端口,其他端口不再收到多余的数据:
更有针对性的传输模式
不仅如此,计算机 A
与 B
通讯的同时,其他计算机也可通讯,互不干扰。每个端口是一个独立的冲突域,带宽也是独立的。
集线器 的缺陷全解决了!
以太网交换机
能够根据 以太网帧 目的地址转发数据的网络设备就是 以太网交换机 ( Ethernet Switch
):
交换机
长相跟 集线器 没啥区别嘛。当然了,很多网络设备都是一个满身端口的盒子,关键还得看内部构造。
再看看现实中的交换机长啥样:
一台真实的交换机
总结起来,以太网交换机是 二层网络设备 ,特点如下:
- 根据目的地址转发数据
- 每个端口是独立冲突域
- 每个端口带宽独立
MAC地址学习
在 二层交换 一节,我们讨论了一种根据映射表转发数据的方法。现在问题来了,映射表如何获得?
最原始的方式是,维护一张静态映射表。当新设备接入,向映射表添加一条记录;当设备移除,从映射表删除对应记录。
然而,纯手工操作方式多少有些烦躁。
好在计算机领域可以实现各种花式的自动化——通过算法自动学习映射表。先来看看大致思路:
映射表为空,先广播;同时学习A的地址
初始状态,映射表是空的。此时, A
向 B
发送一个数据帧 Frame1
,映射表查不到 B
的记录,将数据帧转发到其他所有端口。
交换机通过 Fa0/1
端口收到数据,便知道 A
连接 Fa0/1
端口,而数据帧的源地址就是 A
的地址!此时,可以将 A
的地址和端口 Fa0/1
作为一条记录加入映射表。交换机学习到 A
的地址!
根据映射表准确转发;同时学习B的地址
接着, B
向 A
回复一个数据 Frame2
。由于映射表已经有关于 A
的记录了,数据直接转发到端口 Fa0/1
。同样,交换机学习到 B
的地址。
地址学习完毕
当 C
开始发送数据时,交换机同样学到其地址,学习过程完成!这就是 MAC地址自动学习 的过程。
以太网络
以太网络可以由多个设备构建而成:
以太网络
图中的网络包含了两个连接设备,一个 集线器 ,一个 以太网交换机 。留几个思考题:
- 哪些端口是独立的冲突域?
- 哪些端口带宽是独立的?
- 哪些机器间传输数据互不干扰?
总结
本节,介绍了两种常见的网络连接设备:
集线器 工作在 物理层 ,只是放大中继物理电信号。集线器所有端口处于同一冲突域,也共享带宽。这个两个缺陷导致集线器传输效率不高。
以太网交换机 工作在 数据链路层 ,能理解 以太网帧 ,并根据目的地址进行转发。交换机每个端口都是独立的冲突域,带宽也是独立的,因此传输比集线器更有效率。
进行 以太网交换 ,交换机需要维护地址-端口映射表。交换机可以通过 MAC地址学习 自动完成这个过程。
下一步
订阅更新,获取更多学习资料,请关注我们的 微信公众号 :