问题1:交换机的工作原理是什么?
当交换机收到数据时,它会检查它的目的MAC地址,然后把数据从目的主机所在的接口转发出去。交换机之所以能实现这一功能,是因为交换机内部有一个MAC地址表,MAC地址表记录了网络中所有MAC地址与该交换机各端口的对应信息。某一数据帧需要转发时,交换机根据该数据帧的目的MAC地址来查找MAC地址表,从而得到该地址对应的端口,即知道具有该MAC地址的设备是连接在交换机的哪个端口上,然后交换机把数据帧从该端口转发出去。
交换机获取MAC地址关联的接口,并将这种信息存储在内容可寻址存储器(CAM)表(端口地址表)中。
1. 交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写入MAC地址表中。
2. 交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由哪个端口进行转发。
3. 如数据帧中的目的MAC地址不在MAC地址表中,则向所有端口转发。这一过程称为泛洪(flood)。
4. 广播帧和组播帧向所有的端口转发。
例:某网络如图1所示。
图1 交换机地址表
表1端口/MAC地址映射表
MAC地址 | 端口 |
00-10-B5-4B-30-85 | E0/1 |
00-10-B5-4B-30-90 | E0/2 |
00-10-B5-4B-30-65 | E0/24 |
假设主机pc1向主机pc7发送一个数据帧,该数据帧被送到交换机后,交换机首先查MAC地址表,发现主机pc7连接在E0/24接口上,就将数据帧从E0/24接口转发出去。
如果主机pc1不知道pc7的MAC地址,则pc1将向网络广播一个ARP请求尝试获取pc7的MAC地址。交换机收到这个广播帧后,这个ARP请求中包含pc1主机的ip地址和MAC地址,此时交换机将pc1的MAC地址与端口映射,并写入MAC地址表。
综上:交换机的工作是离不开MAC地址表的,那么MAC地址表是如何构建的呢?
问题2:MAC地址表是如何构建的?
为快速转发报文,以太网交换机需要建立和维护MAC地址表。交换机采用源MAC地址学习的方法建立MAC地址表。
(1) 交换机初始状态
交换机的初始状态MAC地址表为空,如图2所示。
图2 交换机地址表初始状态
(2) 地址表源MAC地址学习
当计算机PC1要发送数据帧给计算机PC6时,因此时地址表是空的,交换机将向除PC1连接端口E0/1以外的其他所有端口转发数据帧。在转发之前,首先检查该数据帧的源MAC地址(00-10-B5-4B-30-85),并在交换机的MAC地址表中添加一条记录(00-10-B5-4B-30-85,E0/1)使之和端口E0/1相对应。
(3) 计算机PC6接收数据帧
计算机PC6收到发送的数据帧后,用该数据帧的目的MAC地址和本机的MAC地址比较,发现PC1找的正是它,则接收该数据帧,其他计算机丢弃数据帧。
计算机PC6回复PC1时,交换机直接从端口E0/1转发,并学习到(00-10-B5-4B-30-65)为PC6连接的端口,将其添加到地址表中,如图3所示。
图3 地址表源MAC地址学习
交换机的其他端口利用源MAC地址学习的方法在MAC地址表中不断添加新的MAC地址与端口号的对应信息。直到MAC地址表添加完整为止。
为了保证MAC地址表中的信息能够实时地反映网络情况,每个学习到的记录都有一个老化时间,如果在老化时间内收到地址信息则刷新记录。对没有收到相应的地址信息的则删除该记录。例如,计算机PC6停止了和交换机通信,达到老化时间后,交换机会将其对应的记录从MAC地址表中删除。
也可以手工添加交换机的MAC地址表的静态记录,手工配置的静态记录没有老化时间的限制。由于MAC地址表中对于同一个MAC地址只能有一条记录,所以如果手工配置了MAC地址和端口号对应关系后,交换机就不再动态学习这台计算机的MAC地址了。
问题3:交换机有哪些功能?
1. 学习
以太网交换机了解每一端口相连设备的MAC地址,并将地址同相应的端口映射起来存放在交换机缓存中的MAC地址表中。
2. 转发/过滤
当一个数据帧的目的地址在MAC地址表中有映射时,它被转发到连接目的节点的端口而不是所有端口(如该数据帧为广播/组播帧则转发至所有端口)。
3. 消除回路
当交换机包括一个冗余回路时,以太网交换机通过生成树协议避免回路的产生,同时允许存在后备路径。
冗余回路:简单点理解就是一根网线的两头同时插入一个交换机上,导致广播信息又传递回交换机进行广播,最终导致资源耗尽。
因为交换机默认开启STP协议,会自动阻塞掉几个端口,避免环路的产生。交换机的某端口刚插上的线,50秒内是该端口是不通的。
问题4:交换机有哪些工作特性?
1. 交换机的每一个端口所连接的网段都是一个独立的冲突域。
2. 交换机所连接的设备仍然在同一个广播域内,也就是说,交换机不隔绝广播(惟一的例外是在配有VLAN的环境中)。
3. 交换机依据帧头的信息进行转发,因此说交换机是工作在数据链路层的网络设备(此处所述交换机仅指传统的二层交换设备)。
问题5:交换机可以分成哪几类?
依照交换机处理帧时不同的操作模式,主要可分为两类:
1. 存储转发
交换机在转发之前必须接收整个帧,并进行错误校检,如无错误再将这一帧发往目的地址。帧通过交换机的转发时延随帧长度的不同而变化。
2. 直通式
交换机只要检查到帧头中所包含的目的地址就立即转发该帧,而无需等待帧全部的被接收,也不进行错误校验。由于以太网帧头的长度总是固定的,因此帧通过交换机的转发时延也保持不变。
帧:帧头,数据部分,帧尾。帧头和帧尾包含一些必要的控制信息,比如同步信息、地址信息、差错控制信息等;数据部分则包含网络层传下来的数据,比如IP数据包。
1. 二层交换技术
二层交换技术是发展比较成熟,二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。
具体的工作流程如下:
(1) 当交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的;
(2) 再去读取包头中的目的MAC地址,并在地址表中查找相应的端口;
(3) 如表中有与这目的MAC地址对应的端口,把数据包直接复制到这端口上;
(4) 如表中找不到相应的端口则把数据包广播到所有端口上,当目的机器对源机器回应时,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。
不断的循环这个过程,对于全网的MAC地址信息都可以学习到,二层交换机就是这样建立和维护它自己的地址表。
2. 路由技术
路由器工作在OSI模型的第三层---网络层操作,其工作模式与二层交换相似,但路由器工作在第三层,这个区别决定了路由和交换在传递包时使用不同的控制信息,实现功能的方式就不同。工作原理是在路由器的内部也有一个表,这个表所标示的是如果要去某一个地方,下一步应该向那里走,如果能从路由表中找到数据包下一步往那里走,把链路层信息加上转发出去;如果不能知道下一步走向那里,则将此包丢弃,然后返回一个信息交给源地址。
路由技术实质上来说不过两种功能:决定最优路由和转发数据包。路由表中写入各种信息,由路由算法计算出到达目的地址的最佳路径,然后由相对简单直接的转发机制发送数据包。接受数据的下一台路由器依照相同的工作方式继续转发,依次类推,直到数据包到达目的路由器。
而路由表的维护,也有两种不同的方式。一种是路由信息的更新,将部分或者全部的路由信息公布出去,路由器通过互相学习路由信息,就掌握了全网的拓扑结构,这一类的路由协议称为距离矢量路由协议;另一种是路由器将自己的链路状态信息进行广播,通过互相学习掌握全网的路由信息,进而计算出最佳的转发路径,这类路由协议称为链路状态路由协议。
路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程。
3. 三层交换技术
先来通过一个简单的网络来看看三层交换机的工作过程。
使用IP的设备A------------------------三层交换机------------------------使用IP的设备B
比如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地址及转发端口的对应关系,并记录进流缓存条目表,以后的A到B的数据,就直接交由二层交换模块完成。这就通常所说的一次路由多次转发。
总结:
二层交换机用于小型的局域网络。这个就不用多言了,在小型局域网中,广播包影响不大,二层交换机的快速交换功能、多个接入端口和低谦价格为小型网络用户提供了很完善的解决方案。
路由器的优点在于接口类型丰富,支持的三层功能强大,路由能力强大,适合用于大型的网络间的路由,它的优势在于选择最佳路由,负荷分担,链路备份及和其他网络进行路由信息的交换等等路由器所具有功能。
三层交换机的最重要的功能是加快大型局域网络内部的数据的快速转发,加入路由功能也是为这个目的服务的。如果把大型网络按照部门,地域等等因素划分成一个个小局域网,这将导致大量的网际互访,单纯的使用二层交换机不能实现网际互访;如单纯的使用路由器,由于接口数量有限和路由转发速度慢,将限制网络的速度和网络规模,采用具有路由功能的快速转发的三层交换机就成为首选。
一般来说,在内网数据流量大,要求快速转发响应的网络中,如全部由三层交换机来做这个工作,会造成三层交换机负担过重,响应速度受影响,将网间的路由交由路由器去完成,充分发挥不同设备的优点,不失为一种好的组网策略。