交换机的作用
- 连接多个以太网物理段,隔离冲突域
- 对以太网帧进行高速而透明的交换转发
- 自行学习和维护MAC地址信息
交换机工程在二层,可以用来隔离冲突域,在OSI参考模型中,二层的作用是寻址,这边寻址指的是MAC地址,而交换机就是对MAC地址进行转发,在每个交换机中,都有一张MAC地址表,这个表是交换机自动学习的。
总的来说,交换机的作用是寻址和转发。 注意,这里的寻址和转发都是MAC地址
交换机的特点
- 主要工作在OSI模型的物理层,数据链路层
- 提供以太网的透明桥接和交换
- 依据链路层的MAC地址,将以太网数据帧通过交换机端口进行转发
交换机MAC地址表转发过程
交换机刚启动时,MAC地址表中无表项。以上图中的交换机就是刚刚启动时的MAC地址表。可以看出没有任何的表项,当加入PC的时候,交换机开始进行学习MAC地址。如下图:
- PCA发出数据帧(假设要发送给PCB)
- 交换机把PCA的帧中的源地址MAC_A与接受到此帧的端口E1/0/1关联起来
- 交换机检测自己的MAC地址表,没有发现目标地址
- 交换机把PCA的帧从所有其他端口发送出去(除了接收到帧的端口E1/0/1)
此时局域网内的所有主机都会收到此数据帧,但是只有PCB才会相应这个数据帧,并绘影一个数据帧。 交换机会把MAC_B与端口E1/0/2关联起来。此后就可以进行一对一单播了。
- PCA发出目的到PCD的单播数据帧
- 交换机根据帧中的目的地址,从相应的端口E1/0/4发送出去
- 交换机不在其他端口上转发此单播数据帧
传输过程
交换机在接收到数据帧以后
- 首先会记录数据帧中的源MAC地址和对应的接口到MAC表中
- 接着会检查自己的MAC表中是否有数据帧中目标MAC地址的信息
- 如果有则会根据MAC表中记录的对应接口将数据帧发送出去(也就是单播)
- 如果没有,则会将该数据帧从非接受接口发送出去(也就是广播)。
下图为数据经过单交换机的传输过程
-
主机A会将一个源MAC地址为自己,目标MAC地址为主机B的数据帧发送给交换机。
-
交换机收到此数据帧后,首先将数据帧中的源MAC地址和对应的接口(接口为f 0/1) 记录到MAC地址表中。
-
然后交换机会检查自己的MAC地址表中是否有数据帧中的目标MAC地址的信息,如果有,则从MAC地址表中记录的接口发送出去,如果没有,则会将此数据帧从非接收接口的所有接口发送出去(也就是除了f 0/1接口)。
-
这时,局域网的所有主机都会收到此数据帧,但是只有主机B收到此数据帧时会响应这个广播,并回应一个数据帧,此数据帧中包括主机B的MAC地址。如果没有主机相应这个广播,则会继续向下一个交换机或路由器传播。- 当交换机收到主机B回应的数据帧后,也会记录数据帧中的源MAC地址(也就是主机B的MAC地址),这时,再当主机A和主机B通信时,交换机根据MAC地址表中的记录,实现单播了。
下图为经多个交换机进行数据传播的过程。
-
主机A将一个源MAC地址为自己、目标MAC地址主机C的数据帧发送给交换机。
-
交换机1收到此数据帧后,会解析源MAC地址,并检查MAC地址表,发现没有目标MAC地址的记录,则会将数据帧广播出去,主机B和交换机2都会收到此数据帧。主机B会检查本机MAC地址,发现不一样,则不响应。
-
交换机2收到此数据帧后也会将数据帧中的源MAC地址和对应的接口记录到MAC地址表中,并检查自己的MAC地址表,发现没有目标MAC地址的记录,则会广播此数据帧。
-
主机C收到数据帧后,会响应这个数据帧,并回复一个源MAC地址为自己的数据帧,这时交换机1和交换机2都会将主机C的MAC地址记录到自己的MAC地址表中,并且以单播的形式将此数据帧发送给主机A。
-
这时,主机A和主机C通信就是一单播的形式传输数据帧了,主机B和主机C通信如上述过程一样,因此交换机2的MAC地址表中记录着主机A和主机B的MAC地址都对应接口f 0/1。
注意:
- 交换机具有动态学习源MAC地址的功能,并且交换机的一个接口可以对应多个MAC地址,但是一个MAC地址只能对应一个接口
- 交换机动态学习的MAC地址默认只有300S的有效期,如果300S内记录的MAC地址没有通信,则会删除此记录。
如何解决广播问题和安全问题
机器多了,交换机也就多了,交换机就难免会有广播问题。在同一个广播域里面,很多包都会在一个局域网里面飘啊飘,如果没有加密又被抓包了,很可能会导致敏感信息泄露。怎么解决呢?有两个方法:
(1) 物理隔离:
每个部门有单独的交换机,配置单独的子网,这样部门之间的沟通就需要路由器了。
这里的问题在于,如果每个部分都有单独的交换机,口多了浪费,少了又不够用
(2) 虚拟隔离:也就是VLAN,或者叫做虚拟局域网。
使用VLAN,一个交换机上会连属于多个局域网的机器,那么交换机怎么区分哪个机器属于哪个局域网呢?
- 我们只需要在原来的二层的同上加上一个TAG,里面有VLAN ID,一共12位。(12位可以划分4096个用户,如果用户超出了4096了什么办????)
- 如果我们买的交换机是支持VLAN的,当这个交换机把二层的头取下来的时候,就能够识别这个VLAN ID。这样只有相同VLAN的包,才会相互转发,不同VLAN的包,是看不到的。这样广播问题和安全问题就解决了
我们可以设置交换机每个口所属VLAN,比如VLAN10、VLAN11等,而且每个VLAN的口都是可以重置的。
那交换机之间应该怎么连接呢?对于支持VLAN的交换机,有一种口叫做Trunk口,它可以转发属于任何VLAN的口,交换机之间可以通过这种口相互连接。