• 交换机之trunk access hybrid 以及vlan深入理解


    服务器开发系列


    一、802.1Q封装VLAN数据帧格式是?

    IEEE 802.1Q定义了关于支持VLAN特性的交换机的标准规范。分为由标记帧与无标记帧的帧。
    有标记帧(Tagged帧):加入了4字节VLAN标签的帧。
    无标记帧(Untagged帧):原始的、未加入4字节VLAN标签的帧。
    在这里插入图片描述
    其中VLAN tag解析如下:
    在这里插入图片描述
    标签协议识别符(Tag Protocol Identifier, TPID):
    一组16位的域其数值被设置在0x8100,以用来辨别某个IEEE 802.1q的帧成为“已被标注的”,而这个域所被标定位置与以太形式/长度与未标签帧的域相同,这是为了用来区别未标签的帧。
    优先权代码点(Priority Code Point, PCP):
    以一组3比特的域当作IEEE 802.1p优先权的参考,从0(最低)到7(最高),用来对数据流(音频、视频、文件等等)作传输的优先级。
    标准格式指示(Canonical Format Indicator, CFI):
    1比特的域。若是这个域的值为1,则MAC地址则为非标准格式;若为0,则为标准格式;在以太交换器中他通常默认为0。在以太和令牌环中,CFI用来做为两者的兼容。若帧在以太端中接收数据则CFI的值须设为1,且这个端口不能与未标签的其他端口桥接。
    虚拟局域网识别符(VLAN Identifier, VID):
    12位的域,用来具体指出帧是属于哪个特定VLAN。值为0时,表示帧不属于任何一个VLAN;此时,802.1q标签代表优先权。12位的值0x000和0xFFF为保留值,其他的值都可用来做为共4094个VLAN的识别符。在桥接器上,VLAN1在管理上做为保留值。这个12位的域可分为两个6比特的域以延伸目的(Destination)与源(Source)之48位地址,18位的三重标记(Triple-Tagging)可和原本的48位相加成为66比特的地址。

    VID与PVID之间区别是什么?
    PVID和PVID经常出现于二、三层交换机里,由于PVID和VID的设置不合理,造成VLAN划分变得混乱。
    PVID是交换机上的概念,说的是进入该端口的报文如果没有打vlan id就按pvid的值打上。
    VID是报文上的vlan tag的意思。

    VLAN
    不同vlan间的主机不能直接通信,需要通过路由器或三层交换机等网络层设备进行转发,设备提供vlan接口实现对报文进行三层转发的功能。
    vlan接口是一种三层模式下的虚拟接口,主要用于实现vlan间的三层互通,它不作为物理实体存在于设备上。每个vlan对应一个vlan接口,在为vlan接口配置了ip地址后,该接口即可作为本vlan内网络设备的网关,对需要跨网段的报文进行基于ip地址的三层转发。

    基于端口的vlan就是我们平常最常用的划分vlan的方法,将指定端口加入到指定vlan中之后,端口就可以转发指定vlan的报文。

    二、Access Trunk Hybrid是什么?

    交换机的三种端口类型是哪三种、特点?
    以太网端口有三种链路类型: Access、 Hybrid 和Trunk。
    ■ Access 类型的端口只能属于1个VLAN,一 般用于连接计算机的端口;
    ■ Trunk 类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口;
    ■ Hybrid 类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。

    Hybrid端口和Trunk端口在接收数据时,处理方法是一样的,唯一不同之处在于发送数据时:Hybrid端口可以允许多个VLAN的报文发送时不打标签,而Trunk端口只允许缺省VLAN的报文发送时不打标签。

    三、Access Trunk Hybrid数据处理流程是什么?

    交换机接口出入数据处理过程:
    在这里插入图片描述

    Acess端口收报文:
    Acess端口收报文
    判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发
    如果有则直接丢弃(缺省)
    Acess端口发报文:
    将报文的VLAN信息剥离,直接发送出去

    trunk端口收报文:
    Trunk端口收到报文
    判断是否有VLAN信息:如果没有,则打上端口的PVID,并进行交换转发
    如果有,判断该trunk端口是否允许该VLAN的数据进入:如果可以,则转发,否则丢弃
    Trunk端口发报文:
    比较端口的PVID和将要发送报文的VLAN信息,如果两者相等则剥离VLAN信息,再发送,如果不相等则直接转发

    hybrid端口收报文:
    Hybrid端口收一个报文
    判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则判断该hybrid端口是否允许该VLAN的数据进入:
    如果可以则转发,否则丢弃(此时端口上的untag配置是不用考虑的,untag配置只对发送报文时起作用)
    Hybrid端口发报文
    判断该VLAN在本端口的属性,如果是untag则剥离VLAN信息,再发送,如果是tag则直接发送

    在这里插入图片描述

    VID与PVID区别
    简单的说,VID(VLAN ID)是VLAN的标识,定义其中的端口可以接收发自这个VLAN的包;而PVID(Port VLAN ID)定义这个untag端口可以转发哪个VLAN的包。

    四、示例

    在这里插入图片描述
    1、pc1不能ping通pc2,因为同一交换机内从pc1进入交换机A的access口的数据包被打上了VLAN10的标记,而和pc2相连的access的是VLAN20,从上面总结的2不满足,无法ping通。同理,pc1和pc3也不能ping通。

    2、pc2和pc3能互ping通。因为数据包从pc2进入交换机A的access口时,被打上了VLAN20的标记;交换机A与B相连的access口是VLAN20,所以数据包可以从该口发出。发出的时候去掉了VLAN20的标记,到B时,由于没有标记,可以被B的左边的access口接收并打上VLAN10的标记。由于B的右边的access口也属于VLAN10,所以数据包可以从该口出(出的时候去除掉VLAN10的标记,并到达pc3)。

    在这里插入图片描述
    1、上图中pc1和pc3可以相通,因为数据包从pc1进入A的access口是打上了VLAN10的标记,A的右边trunk口可以接受数据包,并转发到B的trunk口(无论vid是否等于pvid)。而B的acces属于VLAN10所以pc3能收到数据包。
    2、同理,pc2和pc6相通

    补充学习
    学习:三层交换机怎么设置vlan间通信?
    https://www.jb51.net/network/450701.html
    有三台电脑pc0、pc1、pc2和一台二层交换机相连,二层交换机再和三层交换机相连。其中设置pc0和pc1属于vlan10,pc2属于vlan20
    在这里插入图片描述
    设置流程如下:
    1.先设置pc0和pc1、pc2的ip地址。
    2.在交换机Switch0上创建vlan 10和vlan 20。
    3.在二层交换机上将F0/1口和f0/2口划分到VLAN 10中。将F0/3口划分到VLAN 20中。
    4.在二层交换机上与三层交换机相连的端口(此处为F0/4端口)定义为trunk模式。
    5.对于三层交换机先开启它的路由功能。
    6.在三层交换机的接口f0/1上创建虚拟接口vlan10和vlan 20。
    7.在三层交换机与二层交换机相连的接口f0/1上配置成trunk模式。
    8.在pc0上通过cmd去ping pc1和pc2都能连通。

    五、最简单交换机应用

    1、对于普通用户,我们只要区别交换机上的lan口与wan口,家用交换机由多个lan口,一个wan口组成,将wan口接入到互联网上,lan接入到家中pc,这样,就可以进行局域网通信了。
    2、搭建了两个局域网,分别是10.20.30.-/255.255.255.0与10.20.40.-/255.255.255.0,相互之间是网络不通的,为了让局域网10.20.30.-与10.20.40.-通信,可以将两个交换机搭建的局域网的wan口接入到路由器上,即三层设备,既可实现不同局域网之间的通信了。

    总结

    通过本文的学习应该对Trunk access hybrid有了一定的了解,希望对你有所帮助。

    授人以鱼不如授人以渔。如您喜欢,请点赞收藏。

  • 相关阅读:
    异常解决!Mybatis实体类属性名和表中字段名不一致的处理方案
    前端 | HTML5基础知识
    Modularized Interaction Network for Named Entity Recognition
    使用Go env命令设置Go的环境
    VAD打断方案
    动作捕捉(Motion Capture)文件BVH的解读笔记
    200 套基于Java开发的Java毕业设计实战项目(含源码+说明文档)
    微信小程序通过获取键盘高度解决键盘弹出挡住输入框问题
    Idea如何提交代码到Git
    idea使用debug无法启动,使用run可以启动
  • 原文地址:https://blog.csdn.net/weixin_44834554/article/details/127897200