前言
在介绍交换机之前,首先要了解的 计算机网络基础 和 什么是MAC地址与IP地址?。如下是OSI七层网络模型的简单介绍:
序号 | 名称 | 描述 |
---|---|---|
一层 | 物理层(PHY) | 负责驱动网络上信号的收发器,发送和接受位 。 |
二层 | 数据链路层(MAC) | 负责创建在网络上传送的帧,包含mac地址的帧。 |
三层 | 网络层(IP) | 负责创建在网络上传送的包,包含IP地址的包。相关协议包括:ICMP IGMP IP(IPV4 IPV6) |
四层 | 传输层(TCP/UDP) | 负责不同主机上的应用程序之间建立连接。 |
五层 | 会话层 | 用户应用程序与网络的接口 |
六层 | 表示层 | |
七层 | 应用层 | 应用层是一组需要网络通信的应用程序。 |
一、以太网交换机的作用
首先,这里强烈推荐B站视频:交换机工作原理。为什么需要交换机呢?在以太网中连接在同一介质上的各个节点是共享链路的,也就是各个节点之间争夺链路的使用权时会发生冲突,即这些节点是属于同一个冲突域。而以太网的逻辑拓扑结构是总线型的,采用避免冲突的方式是依据 CSMA/CD 协议,做法时检测到冲突时,网络传输会有一个回退,在这个回退时间内是不发生任何传输的。而同属于一个冲突域的节点越多,发生冲突的概率也就越大。并且退避时间是根据二进制指数算法得到,冲突发生的越多,退避时间越长,从而影响网络的传输效率。至此,通过交换机来转发,将不同节点的冲突域隔离,使得交换机的每个端口就是一个冲突域,如下图所示:
在功能上,以太网交换机的主要的功能就是充当邮递员的角色,将数据包发送到正确的位置,包括有如下:
- 学习:以太网交换机会记录每一个端口上连接设备的mac地址,并将mac地址同端口号形成映射,登记在地址表中;
- 转发/过滤:当一个数据帧的目的MAC地址在MAC地址表中有映射时,它被转发到连接目的节点的端口;当目的mac地址在地址表中找不到对应端口映射时,会转发给所有端口(这个过程称为“泛洪”,以广播/组播的方式),直到有端口回应,此时交换机会记录这个目的MAC地址与端口号的对应关系,打到自学习的目的;
- 消除冗余:以太网交换机通过生成树协议避免回路的产生,同时允许存在后备路径。
二、交换机的分类
2.1 二、三、四层交换机
根据交换机工作在OSI网络模型中不同层可以将交换机分为二、三、四层交换机。如下表:
名称 | 工作区域 | 原理 | 描述 | 优点 | 缺点 |
---|---|---|---|---|---|
二层交换机 | 数据链路层 | 通过mac地址,实现对同一个子网内可以进行数据交换 | 可以识别数据包中的源MAC地址信息,根据MAC地址转发到对应的目的MAC地址,并将这些源MAC地址和目的MAC地址的端口记录在内部的一个地址表中(MAC映射表) | 数据交换是通过识别MAC地址实现的,速度非常快 | 无法处理大量跨越IP子网的数据包,只能依赖于路由器进行管理。 |
三层交换机 | 数据链路层 + 网络层 | 基于IP地址转发数据包,具有VLAN(虚拟局域网)功能 | 对来的数据包进行路由选择,产生一个MAC地址与IP地址的映射表,找到对应的目的IP地址,然后查询MAC地址表,找到这个IP地址的MAC对应信息,再通过二层通信原理将数据包交换。当同样的数据流再次通过时,就无须路由,直接通过二层转发,实现一次路由,多次转发。 | 解决了传统二层交换依赖路由器转发时每次都要路由,效率很低的缺点 | |
四层交换机 | 基于端口 | 不仅基于第二层桥接和第三层路由选择,同时也基于TCP/UDP应用端口来做出转发决定的能力,能够基于应用对数据流进行优先级划分 |
下一章节会更加详细介绍二、三层交换机,四层交换机暂略。
2.2 存储转发和直通式
根据交换机收到数据包后不同的操作模式,主要可分为两类:
名称 | 描述 |
---|---|
存储转发 | 1)交换机在转发之前必须接收整个帧,并进行错误校检,如无错误再将这一帧发往目的地址。 2)帧通过交换机的转发时延随帧长度的不同而变化。 |
直通式 | 1)交换机只要检查到帧头中所包含的目的地址就立即转发该帧,而无需等待帧全部的被接收,也不进行错误校验。 2)由于以太网帧头的长度总是固定的,因此帧通过交换机的转发时延也保持不变。 3)尽管速度快,但是由于不进行checksum,会转发很多的错误数据包。 |
三、交换机的工作原理和流程
下面主要还是以二、三、四层交换机分类来接绍交换机的工作,四层暂不介绍。
3.1 二层交换机
二层交换机是工作在数据链路层,通过MAC地址对数据包进行转发,同时会将这些MAC地址和对应的端口号记录在一张地址表中。二层交换的步骤如下:
- 假设交换机从端口01收到一个数据包,分别读取数据包中的源MAC地址(00_11)和目标MAC地址(00_22),源MAC地址的所对应的端口号会被记录到地址表中(形成 00_11 --> 01的映射关系)。
- 交换机会根据目的MAC地址(00_22)在地址表中查找对应的端口号。
- 如果表中有这个目的MAC地址对应端口号的记录,那就把这个数据转发到对应的端口。
- 如果表中没有找到这个目的MAC地址对应的端口号,就会把这个数据包广播到所有的端口上,也就跟小蝌蚪找妈妈一样,这个傻儿子(目的MAC地址)是不是你家(端口号)的。当有端口给出回应,交换机会将数据转发到这个端口,并将这个端口与目的MAC地址形成映射,登记在地址表中,完成交换机的学习过程。
- 地址表中的每个表项在建立后开始进行倒计时,每次发送数据都要刷新记时。对于长期不发送数据的主机,其MAC地址的表项在生存期结束时删除。
传统的二层交换机的所有端口都在同一个广播域,但是如果有需求需要同一台主机更换到不同的广播域,又不想重新连线,就在二层交换机的基础上引入了VLAN(虚拟局域网)。如下图VLAN的使用所示:
3.2 三层交换机
在介绍三层交换机之前,我们知道二层交换机无法完成来自不同子网的数据包的转发,必须要通过路由器的路由才行。那么什么是子网?子网的划分是将IP地址与子网掩码按位相与(IP&子网掩码),常用的子网掩码如255.255.255.0(换算为二进制:1111_1111_1111_1111_1111_1111_0000_0000)。IP&子网掩码结果相同的两个IP地址是属于同一个子网的。那么为什么要划分子网,TCP/IP协议规定,不同子网之间是不能直接进行通信的,如果要通信需要通过网关来通信。
所以三层交换机是通过IP地址进行转发,内部通过查表的方式再进行二层转发。三层交换的步骤如下:
- 假设A要给B发送数据,已知目的IP,那么A就用子网掩码取得网络地址,判断目的IP是否与自己在同一网段。
- 如果属于同一子网,但不知道转发数据所需的MAC地址,A就发送一个ARP请求,B返回其MAC地址,A用此MAC地址封装数据包并发送给交换机,交换机利用二层通信,查找MAC地址表,将数据包转发到相应的端口。
- 如果目的IP地址来自不同子网,那么A要实现和B的通讯,在流缓存条目中没有对应MAC地址条目,就将第一个正常数据包发送向一个缺省网关,这个缺省网关一般在操作系统中已经设好,对应第三层路由模块。所以可见对于不是同一子网的数据,最先在MAC表中放的是缺省网关的MAC地址;然后就由三层模块接收到此数据包,查询路由表以确定到达B的路由,将构造一个新的帧头,其中以缺省网关的MAC地址为源MAC地址,以主机B的MAC地址为目的MAC地址。通过一定的识别触发机制,确立主机A与B的MAC地址及转发端口的对应关系,并记录进流缓存条目表。
- 当建立了源IP地址和目的IP地址之间的一条通路后,三层交换机在收到该A到B的包时,就没有必要每次将接收到的数据包进行拆包来判断路由,而是直接将数据包进行二层转发。这就通常所说的一次路由、多次转发。