对于二层交换机来说,它在转发报文时,只有四种类型的报文:广播、组播、未知单播、已知单播。虽然看起来比较简单,但是根据我多年的经验,能理解这四种报文转发机制的小伙伴不多,大多数人一直都很迷糊,但是还成功的活了这么多年:)。我们今天就来先看一下这四种报文中的三种:广播、组播、未知单播,下一篇文章会单独的介绍已知单播。
交换机对广播、组播、未知单播 三种报文处理方式相同
俗话说“物以类聚,人以群分”,估计有小伙伴会有疑问了,广播、组播、未知单播这三种类型的报文看起来差别挺大的,没有什么联系,为什么要放在一起讲呢?
这个世界总是屁股决定脑袋,每个人都有自己的立场,这几个报文对我们来说不一样,但是对于二层交换机来说,处理这三种报文的方式是一样的:将它们进行泛洪,所以会把它们放在一起讲述。
不过在讲解泛洪之前,我们先来认识一下什么是二层广播、组播和未知单播报文。
1. 二层广播报文
当二层交换机收到一个报文时,会取出报文的目的MAC地址,如果MAC地址为全FF,则这个报文就是二层广播报文,例如下面的wireshark抓包截图:
二层广播报文
2. 二层组播报文
如果二层交换机收到的报文的MAC地址是以 000:01:5E开头的报文,则这个报文就是二层组播报文,例如下面的wireshark抓包:
二层组播报文
3. 未知单播报文
那未知单播报文是什么呢?首先它是一个单播报文,那啥是单播报文呢?简单说除了广播和组播以外的报文,就是单播报文了,即目的MAC地址既不是全F,也不是01:00:5E开头的报文。例如下面的wireshark抓包的内容,就是单播报文了:
二层单播报文
那什么是未知单播报文呢?是指哪些在交换机MAC地址表中,没有表项的单播报文,例如下图:
MAC地址表
当交换机收到目的MAC地址为0000:2222:2222报文时,会查找MAC地址表,发现没有表项存在,就认为这个报文是未知单播报文。
相反的,当交换机收到目的MAC地址为0000:1111:1111报文时,能查找到表项,就认为这个报文是已知单播报文。
二层交换机对这三种报文全部泛洪处理
上面我们已经掌握交换机如何判别一个报文属于哪种类型,并且说了二层交换机对广播、组播、未知单播的处理方式相同,那到底怎么处理它们呢?网络界有一个专有名词,叫做泛洪,就是为它们专门定制的!
泛洪,英文单词是flooding,表示像洪水一样,会占满所有的空隙,不留任何空间。在交换机里,也是一样的,当一个端口收到上面所说的任何一种报文以后,就会从所有在同一个VLAN里、UP的端口转发出去,例如下图:
报文泛洪
当交换机端口P1收到广播、组播、未知单播中的任何一种,会在交换机内部复制4份,然后从P2-P5这4个端口都转发出去。就像洪水占满所有空隙一样,交换机也会把报文从所有的端口发送出去!
总结
经过上面的解释,各位小伙应该对二层交换机处理报文的机制有一定了解了吧,我在来做一个简单的总结:
- 在二层交换机的世界里,报文只分为4类:广播、组播、未知单播、已知单播;
- 二层广播报文是指目的MAC为全F的报文,即FF:FF:FF:FF:FF:FF;
- 二层组播报文指的目的MAC以01-00-5E开头的报文;
- 二层未知单播指的是在MAC不是广播和组播,在交换机中无表项的单播报文;
- 交换机对广播、组播、未知单播的处理方式相同:泛洪处理;