1. 当前位置:网站首页 > 技术教程

路由器能隔离广播,要VLAN有什么用?


在上文用VLAN这把砍刀将一个超级大广播域,切割成N个小广播域,每一个小广播域用一个VLAN代表。每一个交换机的端口分配一个VLAN,拥有相同的VLAN的端口属于同一个VLAN,同一个广播域。

 
一个交换机有48端口,被平均分成3个VLAN,分别为VLAN 10、20、30,每个VLAN 有16个端口。当一个广播报文从任意一个端口接收到,只扩散到其中的15个端口。
 
问题来了,交换机与交换机之间的互联端口如果只有一个,分配什么VLAN比较合适呢?

10、20还是30?

都不合适。如果分配10,那么VLAN 20、30的广播报文就无法从互联端口流走。
 
有同学可能会说,交换机之间使用3个互联端口,分别分配10、20、30,可以完美解决问题。
 
但是这样会浪费端口资源。如果有100个VLAN的流量需要从交换机之间互联端口穿梭,则需要100个端口,每一个端口属于一个VLAN。而交换机只有48个端口啊,剩下的52个端口从哪里来?
 
以上的做法很不现实。解决这个问题很简单,只要让交换机之间的互联端口属于每一个VLAN,属于每一个广播域。交换机之间这种互联端口类型叫Trunk,属于任何广播域。
 
当广播报文需要进入交换机之间的互联端口,必须明确告知接收方交换机,该广播报文属于哪个广播域,哪个VLAN,那发送交换机是怎么做的呢?
 
很简单。只要在广播报文里嵌入一个VLAN标签,规范这项技术的标准是IEEE 802.1Q。

接收交换机只要从广播报文里将VLAN标签提取出来,然后将广播报文扩散到属于该VLAN的所有端口,包括Trunk口。上文说了,Trunk口默认属于所有广播域。
 
通过以上方式,一个广播报文唰地一下就扩散到所有属于该广播域(VLAN)的所有端口。而不属于该广播域(VLAN)的端口不会受到该条广播报文的骚扰,因为它们永远听不到这条广播。广播报文的隔离就是这样来实现的。
 
当然,任何时候都有特殊情况的发生。有些广播报文是交换机自身产生的,那么这个广播报文属于哪个广播域(VLAN)呢?
 
如果是ARP广播报文,通常是交换机的三层接口触发的,而三层接口会绑定二层接口。交换机根据二层接口属于哪个VLAN,以此来推断ARP广播报文属于哪个VLAN。然后打上VLAN标签,在该VLAN广播域里进行扩散。
如果是Cisco PVST+消息,每一个消息自己会携带自己的VLAN ID。
如果是RSTP消息呢,消息没有明确告知交换机VLAN值。交换机呢,也不着急,什么VLAN标签也不打,让消息在trunk里自由扩散。接收交换机收到之后也不着急,而是将任何没有携带VLAN标签的报文,默认认为是Native VLAN广播域的报文,并在Native VLAN广播域进行扩散。由于Native VLAN默认值 =1,而VLAN1一般不会分配给终端用户。所有终端用户永远也收不到类似的广播报文。


VLAN隔离广播报文讲的差不多了,继续讲报文开头的故事。

一台开机的电脑,发出DHCP广播报文,被交换机扩散到属于该VLAN(10)的广播域。DHCP大神也在VLAN10里,自然听到了。大神给电脑分配了一个IP地址、网络掩码、网关、DNS服务器,分别如下:
 
IP = 10.1.1.2
Mask = 255.255.255.0
Gateway = 10.1.1.1
DNS = 10.1.1.1
 
并将消息以单播的方式发给这台电脑。同学们这里会有点疑惑,电脑在获得IP地址之前,还没有IP地址,大神怎么将消息单播给这台电脑呢?
 
此时电脑虽然没有IP地址,默认使用0.0.0.0这个地址,这个地址是无意义的,大神也知道是无意义的,大神并不care。但是电脑有自己的MAC地址啊,大神发出的单播报文只要填写目的MAC = 这台电脑的MAC,是不是就可以将消息单播给这台电脑了?
 
是的。
 
坐在电脑后的老王登场了,想Ping 10.1.2.2这台电脑玩玩,敲完命令回车,老王盯着屏幕看,以下是屏幕背后发生的故事。
 
电脑发现10.1.2.2和自己10.1.1.2并不在一个广播域。有同学可能会问,电脑知道怎么这两个IP地址不在一个广播域的?
 
电脑想笑但是忍住了,一个广播域内每台电脑的网段必须相同,否则就不是一个广播域。显然 10.1.2.2的网段 = 10.1.2,10.1.1.2的网段= 10.1.1,两个网段号明显不相同。
 
既然不在一个广播域,老王的电脑10.1.1.2能ARP广播发现10.1.2.2的MAC地址吗?
不能啊,不同的广播域有VLAN隔离着呢!
 
不在一个广播域,ARP广播也会被VLAN隔离,不会到达对方(10.1.2.2)的广播域,你觉得老王的电脑会发ARP广播请求对方的MAC地址吗?
 
不会的,电脑没那么傻!
 
无法发现对方的MAC地址,就无法完成二层以太协议头的封装,那么不同广播域的电脑就无法通信,囚徒困境?
 
并不是。
 
每个广播域都有一个特殊的角色,它的名字叫网关。网关可以代理转发不同广播域电脑之间的通信。比如上文中的网关=10.1.1.1就是这个特殊的角色。
 
老王电脑一旦发现对方和自己不在一个广播域,就会知道需要将Ping报文发给网关。
虽然知道网关的IP = 10.1.1.1,但光知道这个还不行,还需要ARP广播获得网关的MAC地址才能把Ping报文扔给网关。
 
由于网关IP = 10.1.1.1 和老王的电脑IP = 10.1.1.2,属于同一个网段,同一个广播域,那么ARP广播自然可以到达网关,那么就可以获得网关的MAC地址。
 
老王电脑将Ping报文扔给网关,网关收到这个目的IP = 10.1.2.2 的Ping报文怎么处理呢?
 
电脑
收到目的IP = 自己的IP,会将报文扔给CPU处理。
收到目的IP≠自己IP的报文会直接扔掉,气量太小,所以做不了网关。
 
网关
收到目的IP = 自己的IP,也会将报文扔给CPU处理。这是网关的主机(End System)一面,和普通电脑没有任何区别。
网关如果收到目的IP≠自己IP,会查询路由表做流量转发,这是网关的路由器(Intermediate System )的另一面,这就是路由器区别于普通电脑的一面。
 
网关发现自己另外一个接口IP = 10.1.2.1/24 与Ping报文的目的IP =10.1.2.2在一个相同的广播域,于是认为目标主机应该就在这个广播域。于是发出ARP广播请求对方的MAC地址。一旦获得MAC地址,就可以将Ping报文扔给这台10.1.2.2电脑。
 
总结一下
 
路由器
作为每一个广播域的优秀代表,不光可以为自己服务,而且可以为广播域其它电脑服务。

路由器尽管气量很大,但是只服务单播报文。遇到广播报文只会扔给CPU,不会转发。

一个广播域的接口,使用不同的网段。如果试图使用相同的网段、或者部分重叠的网段,路由器会拒绝使用。

 
交换机
使用VLAN来隔离广播域,一个VLAN一个广播域。

本文最后更新于2021-3-6,已超过 3个月没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
获取更多资讯请加入交流群

    协助本站SEO优化一下,谢谢!
    关键词不能为空
版权说明

本文地址:http://dufengvip.cn/post-497.html
未标注转载均为本站远程,转载请注明文章出处:

联系我们

在线咨询:点击这里给我发消息

QQ交流群:KirinBlog

工作日:9:00-23:00,节假日休息

扫码关注