怎样把网站上传到服务器上,python做网站有优势,建大型网站要多少钱,北京微信网站建设报价学习思考#xff1a;一日三问#xff08;学习篇#xff09;之匹配VLAN 一、学了什么#xff08;是什么#xff09;1.1 理解LAN与V的LAN1.2 理解V的LAN怎么还原成LAN1.3 理解二层交换机眼中的V的LAN 二、为何会产生需求#xff08;为… 学习思考一日三问学习篇之匹配VLAN 一、学了什么是什么1.1 理解LAN与V的LAN1.2 理解V的LAN怎么还原成LAN1.3 理解二层交换机眼中的V的LAN 二、为何会产生需求为什么2.1 局域网肆意扩张后的分地运动 三、有什么用怎么做3.1 理解并灵活使用交换机对标签的处理方式3.2 用代码逻辑来理解VLAN匹配方式 一、学了什么是什么
1.1 理解LAN与V的LAN
家用路由器接口总能看到LAN的字样中文翻译过来称为局域网我们是否可以将家用路由器功能拆分为以下拓扑 倘若我们直接理解为LAN为交换机直连的链路就好处理了理解为仅需二层提供通讯无需三层路由的一块区域在此区域下可实现广播、组播与无目的MAC的单播帧泛洪区域。
那进一步我们再理解V的LAN就好理解了V就是虚拟的理解为逻辑上的组织一下语言就是“逻辑上的局域网”意味着这块区域不管长啥样逻辑上就是个局域网逻辑上和上面的LAN没啥区别三个电脑中的一台发广播帧其余两台都能收到OK理论存在实践开始。 上面是个乱七八糟的VLAN分配图咱们可以按照V的LAN的逻辑思维可以整理成底下这样V的LAN和实际LAN在逻辑上一致我们这里可以想象各自LAN被路由器隔离广播域如果需要V的LAN间互通我们按照三层路由逻辑做通就行假设我们有三层交换机则每个连接LAN的接口此时改名为V的LAN的Interface简称vlanif默认一个vlanif绑定着对应编号的V的LAN例如vlan 5逻辑上连接下图“路由器”的接口叫vlanif 5在此接口上配置IP作为vlan 5的网关再走路由互访就行更为复杂的路由方式那就起个OSPF或者静态就行。
1.2 理解V的LAN怎么还原成LAN
V的LAN在原有LAN的帧头中加了一个字段帧字段区别可见此篇文章没别的就聊聊VLAN 所以交换机收到时把帧头的“标签”贴上再转手传给其他交换机。扔给路由器或者计算机的时候把“标签”撕掉就行。就想象咱们平常送礼前撕标签的感觉就行。
1.3 理解二层交换机眼中的V的LAN
在二层交换机中V的LAN也是LAN但是要同贴上一样标签的LAN才是一个LAN不同标签的LAN就是不同LAN所以此时交换机按道理来说还需要在收发接口上维系一个标签清单允许哪些标签的帧从哪个接口出去而且对于没有标签的帧为了保持格式统一性应当打上接口的默认标签默认标签为1所有帧在交换机内都是带标签的遇到同为接口的默认标签号的接口发出就撕掉标签整理一下交换机需要这些东西
接口默认标签号接口允许通过标签清单
二、为何会产生需求为什么
2.1 局域网肆意扩张后的分地运动
局域网设备扩大后。广播范围也会越来越大有些敏感部门需要隔离其他业务部门所以在原有的庞大LAN范围内期望能利用一些二层的字段相互隔离不同类型的数据帧所以不妨把帧都打上标签用交换机匹配帧实现放行或拒绝带特定标签的帧。
三、有什么用怎么做
3.1 理解并灵活使用交换机对标签的处理方式
交换机常见的两种V的LAN接口Access和Trunk而我们实现的目标是终端发出的无标签帧带上指定标签准确到达同标签区域并以无标签的形式将帧发给目标主机。所以从需求来看两种接口类型可以想象成一种接口即带有标签放行清单与默认贴撕标签能力的接口。我们以Trunk接口为例来想象一下流程
若不标签的帧进入交换机前先打上接口默认标签带标签的帧进下一步此时匹配接口的标签清单清单里有就收到交换机内没有就把帧拦下来俗称丢弃查交换机MAC地址表选择接口转发此时匹配接口的标签清单清单有就发到对应接口处没有就不让帧出去俗称丢弃此时比对接口默认标签默认标签与帧的标签相同就拆掉标签如果不同就保持标签扔出去
OK此时就有人疑惑了假如是Access接口呢那就意味着接口默认标签号接口唯一允许通过标签清单指定VLAN标号此时代入上述过程再看看结果如下
收/发数据帧有无标签是否为接口默认标签动作收无否贴默认标签匹配清单唯一放行项收入交换机收有是匹配清单唯一放行项收入交换机收有否不匹配清单唯一放行项丢弃发有是匹配清单唯一放行项转至出接口撕掉标签发有否不匹配清单唯一放行项丢弃
因为交换机内部都是带标签的所以不存在发数据帧的时候有无标签帧
3.2 用代码逻辑来理解VLAN匹配方式
相信有些朋友看上述分析文字比较枯燥所以可以参考下面这些伪代码逻辑上还是比较清楚的
# 当模式为Access时VLAN列表仅有一个允许项即接口标签号默认为1
if InPort.mode Access:InPort.allow_vlan_list [Inport.default_tag]
if OutPort.mode Access:OutPort.allow_vlan_list [Outport.default_tag]
# 对齐带Tag的帧格式Port.default_tag默认为1
if Frame.tag null:Frame.add(InPort.default_tag)
# 如果帧标签在in接口允许清单中则进行下一步无则丢弃
if Frame.tag in InPort.allow_vlan_list:InPort.pass(Frame)# 查询MAC地址表有表项则丢到对应接口进行下一步无则丢弃OutPort Switch.search(Frame)if OutPort ! null:# 如果帧标签在out端口允许清单中则进行下一步无则丢弃if Frame.tag in OutPort.allow_vlan_list:# 如果帧标签和out接口默认标签一致则撕掉标签转发# 如果不一致则直接转发if Frame.tag OutPort.default_tag:Frame.take_off_tag()# out接口转发帧OutPort.forward(Frame)else:OutPort.discard(Frame)else:Switch.discard(Frame)
else:InPort.discard(Frame)