车载以太网交换机入门基本功(2)— 初识VLAN

news/2024/9/19 2:25:53/文章来源:https://www.cnblogs.com/hirain123/p/18304851

       在《交换机入门基本功 -上》提到,交换机在物理层面划分通信区域并产生局域网(Local Area Network, LAN)。局域网具有一个特点:连线拓扑一旦确定,一定时间内不会发生通信区域的变动。在实际通信过程中,广播报文和未知目的地址的单播报文,需要通知到所有设备。通信区域的大小,影响了这个过程中需要通知设备的多少。然而,对设备不加选择的广播会造成广播泛滥。交换机此时并不具备设备选择的功能,通信区域内的所有设备们此时别无选择,只能不断地被“打扰”(“i”设备表示:交换机这个“e人”好可怕,默默哭泣ㄒoㄒ~~)。而且,这种广播泛滥还会占用带宽,造成线路冲突和性能下降等问题,甚至可能造成网络瘫痪。

       要解决这个问题,一个简单的想法是:改变局域网内的连线拓扑,这是否可行呢?答案是有用,但不多。理由很简单,如果只需要偶尔改变连线拓扑,每次只改变一两个设备,那就只是几根网线的拔插工作。但如果需要频繁改变通信区域,或者存在多个通信区域、且每次涉及的设备很多呢?千手观音都得说:这活太累了……

图 1  “千手观音”哭泣

       聪明的小伙伴可能会想到,如果不改变物理连线,而是限制报文的传播路径,让它们只能在特定范围内进行转发呢?没错,天无绝人之路,既然改变不了物理世界,那就在虚拟世界里大展身手,就是虚拟局域网(Virtual Local  Area Network, VLAN)的来源!

       VLAN技术在逻辑层面上,将局域网划分成多个区域,每个区域是独立的广播域,区域内可以进行广播通信,区域间不能进行直接通信。这样,无需修改实际的连线拓扑,就可以快速划分和修改广播域,可操作性和应变能力大大增强。设想一下,你一边在小组群讨论小组作业怎么写,一边在宿舍群讨论晚上吃什么,要是两个群的信息可以互相看到,那岂不是乱了套?!这种分群讨论方式的好处还有:如果临时加入了一名小组成员,那么只需要把这个人拉到小组群里就可以继续讨论,并不会影响之前的工作,简直不要太方便!

       那么,小伙伴可能又要问了:这么方便的VLAN,究竟是用了什么“魔法”做到的呢?

       神秘的魔法就是:VLAN ID ,简称VID,即不同VLAN的编号。通过在报文内增加额外字段,标明报文的VID,说明报文要在哪个VLAN下进行传输。

VLAN报文结构

       携带VID的报文结构遵循IEEE的802.1Q协议。IEEE(Institute of Electrical and Electronics Engineers)电气电子工程师学会,在电气及电子工程、计算机及其他技术领域做出卓越贡献,引领新技术发展步伐,制定国际和行业标准。802.1Q协议在MAC(Media Access Control)报文的基础上,定义了VLAN的标准化实现方案。

       首先介绍下不带VLAN的MAC报文,有两种格式,分别是IEEE 802.3在1982年颁布的格式,和以太网V2在1983年颁布的格式,二者只在部分字段有所区别,格式如图 2和图 3:

图 2 IEEE 802.3的MAC报文格式

图 3 以太网V2的MAC报文格式

       每个字段的含义如下:

  • PRE:Preamble前导码,长度为8个字节(一个字节有8位bit),用于时间同步,通常是连续的“10”值。
  • DA:Destination Address目的地址,长度为6个字节,表明该报文要发送到特定的MAC地址。
  • SA:Source Address源地址,长度为6个字节,表明发送该报文的MAC地址。
  • L/T:Length/Type,表明报文的长度/类型,长度2个字节;L长度字段取值在0-1500之间,T类型字段取值大于1536,1500-1536之间的取值未定义。T类型字段可表明的协议类型有IPv4、IPv6、ARP等。
  • DATA:数据,长度在46-1500字节之间。
  • FCS:Frame Check Sequence帧检测序列,使用CRC(Cyclic Redundancy Check)循环冗余校验算法,对包括DA、SA、L/T、DATA字段在内计算校验值,确保在传输过程中数据没有被篡改。

       进一步的,在上述MAC报文格式基础上,增加VLAN的说明字段。具体格式如图 4:

图 4 携带VLAN的MAC报文格式

       VLAN的说明字段介于SA和L/T之间,称之为Tag字段。Tag字段长度为4个字节,包括TPID和TCI两个部分:

  • TPID:Tag Protocol Identifier,Tag协议标识位,该字段的位置和不带tag报文的L/T字段重合,用于区分报文是否携带tag。
  • TCI:Tag Control Information,Tag控制信息,包含具体的VLAN控制信息。

       ​​​​​​​TCI字段又可分为三个部分:

  • PCP:Priority Code Point优先级代码位,长度为3bit,表明报文在同个VLAN内的优先转发顺序,需要和交换机队列配合使用,后面会进行介绍。
  • DEI:Drop Eligible Indicator丢弃使能位,长度为1bit,表明在传输过程中,如果数据过多影响传输效率,是否进行丢弃处理。取值为0表示不丢弃,1表示丢弃。
  • VLAN ID:简称VID,长度为12bit,表明报文所属的VLAN,这也是前文提到的任意划分广播域的“魔法”!

       除了在报文内增加Tag字段表明报文所属的VLAN,还需要依赖交换机进行实际转发。其中,交换机的端口属性在VLAN转发过程中非常关键。在《交换机入门基本功-3》将介绍交换机端口属性以及具体的转发过程。

       经纬恒润作为OPEN联盟会员和AUTOSAR联盟的高级合作伙伴,长期为国内外各大OEM和供应商提供涵盖TCP/IP、SOME/IP、DoIP、AVB、TSN、DDS等技术领域的设计和测试咨询服务,积极研发和探索车载网络前沿技术和工程应用。通过多个项目的实践经验,已建立了高质量、本土化的设计与测试一体化解决方案,为整车网络架构提供可靠支持。

了解更多

       请致电 010-64840808转6116或发邮件至market_dept@hirain.com(联系时请说明来自博客园)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/744614.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基础知识

主要是怕忘记,就当简单的记事本了,随时补充( 32位&64位 32(x86) 函数参数在函数返回地址上方 64(x64) 前六个参数依次保存在 RDI、RSI、RDX、RCX、R8、R9寄存器中 剩余的保存在栈上 各寄存器主要功能系统调用 步骤 1.加载系统调用号 将系统调用号加载到rax寄存器 2.准备…

NewSQL-TiDB 分布式数据库运维技术从0到1实战入门

一、TiDB简介 TiDB 是一种新型的分布式数据库,它结合了传统关系型数据库的易用性和 NoSQL 数据库的高性能、可扩展性。作为一款 NewSQL 数据库,TiDB 旨在解决大规模在线事务处理(OLTP)系统的需求,同时支持 JSON、图形等非关系型数据结构。 TiDB 的优势兼容性:TiDB 兼容 M…

W外链有哪些功能?短网址/活码/私信卡片

在当今互联网高速发展的时代,短网址生成平台已经成为网络营销、社交媒体推广以及个人用户分享链接时不可或缺的工具。在众多短网址生成平台中,W外链短网址生成平台凭借其独特的功能和优势,赢得了广大用户的青睐。本文将详细介绍W外链短网址生成平台的核心功能,帮助读者更好…

[FireshellCTF2020]Caas 1

c语言编译器 打开之后看见是个输入框,随便输入然后发现报错是c语言的,尝试输出helloword #include <stdio.h>int main() {printf("Hello, World! \n");return 0; }给我们了一个文件,运行一下编译器没跑了,直接 #include "/flag"报错中漏了flag

网页文件加载失败如何重试

本文由 ChatMoney团队出品 在我们开发网站应用时,我们可能会遇到脚本加载失败的情况,导致脚本加载失败的原因有很多,比如用户的网络问题、终端设备问题、用户浏览器版本等诸多因素。 解决方案 在 JavaScript 中,我们可以创建一个监听来监听脚本加载失败的情况,然后针对加载…

rust各种库

ndarray ndarray 是 NumPy 库中的一个核心数据结构,它是一个用于表示多维数组的对象。ndarray 在存储和操作大型多维数组时非常高效,广泛应用于科学计算、数据分析、机器学习等领域。 在 Rust 开发中,ndarray 库可以作为替代 NumPy 库。 Github 地址:https://github.com/r…

mormot2 api-jwt签名和验签

mormot2 api-jwt签名和验签api-jwt签名和验签 1)根据指定的参数来生成签名2)验证签名并获取参数的值 本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/18304797

记一次Burp与NEW_xp_CAPTCHA工具联动爆破验证码

首先下载NEW_xp_CAPTCHA工具 地址:https://github.com/smxiazi 我下载的是大佬直接发布的打包好的环境,包括对应python3.6.6与NEW_xp_CAPTCHA工具脚本下载完后直接点击运行即可本地访问http://127.0.0.1:8899/,看到这个页面,证明没问题然后就是burp导入插件jar。这里要下载…

nginx对访问路径进行限制【部分接口可以内外网访问、剩余接口只可以内网访问】

前言 最近这段时间的项目被查出了安全漏洞、然后做了一些安全措施的整改。整改后、BOSS又提了个很有意思的思路。 涉及到小程序端的请求接口、内外网都可以访问。 涉及到后台管理的请求接口、只允许内网访问。开干开干 由于项目引进了gateway网关、一开始的时候。我…

ASP.NET Core-本地化

1.安装扩展ResXManager用于管理本地化资源文件 2.添加资源文件Resource.resx 使用工具ResXManager增加其他资源文件,具体参考ResXManager使用 3.注册本地化public static class ServiceCollectionExtensions {public static IServiceCollection AddLanguage(this IServiceColl…

vit的自注意力机制的范围

在Vision Transformer (ViT) 中,自注意力机制的范围是指模型在处理图像块时,每个图像块能够与其他哪些图像块进行交互。ViT的自注意力机制具有全局范围,这意味着在自注意力层中,每个图像块都可以与其他所有图像块进行交互,而不管它们在原始图像中的空间位置如何。以下是Vi…

如何通过ip地址来获取主机名字,查看IP和MAC地址的命令

[基于MS]查看MAC地址命令: 1、使用ipconfig /all,可以看到具体配置。 (查看IP地址,网关,DNS MAC地址等 ) 2、如果和局域网中的其它计算机通信过的话,可以用arp -a命令查看其MAC地址。 3、另外还可以用nbtstat -a [IP] ,不过只能查看某台具体机器的MAC地址(查看其他机器的…