车载以太网 - 数据链路层 - VLAN

news2024/11/25 19:26:02

数据链路层通信

以太网二层数据链路层的寻址方式、帧结构、及 VLAN (Virtual LocalArea Network),其分为LLC(Logical Link Control)逻辑链路控制子层,和 MAC(Media Access Control)媒体访问控制子层,其中,MAC 子层负责以太网的总线访问机制、以太网顿格式、物理寻址方式LLC子层负责以太网帧的收发,并具有帧顺序控制、错误控制制及流控制等功能,用于解决二层计算机网络通信时的广播域问题,另外,VLAN 主要运作在二层交换机上。

        当网络中存在2个以太网 ECU 时,可通过点对点方式通信,若存在 3 个及以上以太网ECU时,则需连接交换机(Switch),上图由 4 个以太网ECU 与交换机搭建可构成 LAN(Local AreaNetwork)局域网,LAN 局域网通常指一个区域范围内由多台计算机设备互连成为计算机设备组,在以太网二层中,发送节点如何寻址发送报文给指定接收节点?需基于 MAC 地址寻址。

        MAC 地址由6字节(48 位)组成,每个网络设备均含唯一的单播 MAC 地址,回到刚才的问题,发送节点发送的报文中,报头部分包含收发节点的 MAC 地址,发送节点通过物理端口向交换机发送报文。

交换机工作原理

        交换机接收报文并传递给 MAC 层解析后,获取该报文源 MA 地址信信息,再根据交换机的源 MAC 地址表,查看对应源 MAC 地址映射的吻理端口,并从该端口将报文发送出去。

交换机的源MAC地址表从哪来?以及又是如何工作?

        首先每个交换机都维护一个源MAC 地址表(Source Address Table),简称 SAT,SAT 会列出交换机各个物理端口号 MAC 地址映射关系,比如当前物理端口 4 连接了 MAC 地址(00:16:81:00:00:02)的以太网 ECU3,该映射关系信息存放在 SAT 表中。SAT 表可预先人为的配置,也可通过交换机的自学习能力进行更更新。

MAC 地址表自学习功能

        我们知道以太网 ECU 与交换机连接,以太网数据经交换机转发,交换机解析出报文的源MAC 地址信息,并与该顿进入交换机的物理端口号进行映射,两者映射关系信息更新到 SAT表中,随后交换机解析报文的目的 MAC 地址信息,并在 SAT 中查找与之关联的物理端口。交换机根据不同的查询结果对报文处理:

        情况 1: 若在 SAT表中查找到对应的物理端口,且报文并未从该端口传入交换机,则交换机将以太网报文从该物理端口发出

        情况 2:在 SAT 表中未查询到目的 MAC地址映射的物理端口,交换机则将该报文进行泛洪处理

        泛洪:即交换机在所有物理端口中(除发送报文的端口外)发送报文。

以上图举例:ECU1 发送一条报文给 ECU3

        ECU1通过物理端口1将报文发送给交换机,交换机 MAC 层解析该报文,提取源 MAC地址信息并与物理端口号1的映射关系添加/更新到JSAT表中,再解析该报文的目的 MAC地址(即 00:16:81:00:00:02),查看 SAT表的映射关系,最后从物理端口 4 发送报文给 ECU3。

注意:交换机的自学习能力仅针对源MAC 地址与物理端口的映时学习

        前面介绍的是基于单播 MAC 地址寻址,即点对点通信,当以太网中传输报文的目的地不再是单个具体的接收者,而是一个成员不确定的组时,其数据链路层使用的是组播 MAC地址,任意一个以太网ECU 在包含唯一的单播 MAC 地址基础上,还允许包括一个以上的组播 MAC 地址,通过定义一组成员,组内成员通过共享的组播 MAC 地址接收组内成员。

以图示举例:ECU1 发送一条组播报文

        ECU1 发送一条组播报文(组播 MAC 地址 01:0000:00:00:01),经物理端口 1 至交换机,交换机根据组播 MAC 地址表进行批文转发,组播 MAC 地址表对应一组成员/物理端口的关系当交换机查询到该组成员包括ECU1、ECU2 及 ECU4 后,由 ECU1 发送的组播报文经交换机从物理端口2和4转发至ECU2及ECU3。

Byte 5/Bit 0:

0:Unicast address (node address)

1:Multicast address (group address)

Broadcast Address:FF:FF:FF:FF:FF:FF

以太网的通信模式包括:单播、组播及广播,我们可以通过以太网帧的目的 MAC 地址判定该报文的通信模式,首先看下 MAC 地址格式,MAC 地址共6个字节,从高字节到底字节依次传输,MAC地址Byte5 的首位为0时即单播MAC 地址,为1时即组播MAC地址,另外广播MAC地址为FF:FF:FF:FF:FF:FF,了解了MAC 地址格式后,我们整体查看下以太网帧结构,一条以太网帧由PRB 前导码、DA目的MAC地址、SA源MAC 地址、Type字段。

以太网帧

 Type: Value <1500(0x05DC)

Ethernet 802.3 Frame

Length in Byte

Type:Value>1536(0x0600),TYPE字段2个字节,含义和取值有关;当type 值大于1536时即为Ethernetll 标准格式;当type值小于等于1500时,即表示此顿报文有效负载的长度,且为Ethernet802.3标准格式,用于标识有效负载中包含的高层协议,图中显示部分Type值与高/层协议对应关系。

Ethernet ll Frame

0x0800:Payload contains IPv4-Packet

0x0806:Payload contains ARP-Packet

0x8100:VLAN Tag(see VLAN)

0x86DD:Payload contains IPv6-Packet

PRB:Preamble(Startoftransmission); 8个字节目前用于兼容早期以太网帧,表示一帧报文的开始

DA:DestinationAddress,目标MAC 地址6个字节

SA:SourceAddress,源 MAC 地址6个字节

Payload:46~1500Byte,负载数据段内容

CRC:Cyclic Redundancy Check,数据段 CRC 校验值

         VLAN是由IEEE802.1Q 协议定义,可实现从物理上一个局域网,划分为逻辑上若干个虚拟局域网,即便物理上多个以太网 ECU 连接在同一个交换机,但在逻辑层面进行了隔离,网段划分好之后,各 VLAN 内的广播报文仅在本网段内传播,不同 VLAN 间无法直接互相通信以图示举例:当ECU1(VLAN1)发送一条广播报文时

        只有属于同VLAN1域的ECU2会接收该广播报文,其中 ECU3 和ECU4 属于 VLAN2 中,无法直接与VLAN1中的ECU1、ECU2进行二层通信。

VLAN Tag

Type=8100

Ethernet Frame will expanded by VLAN Tag

Typical Priorities

0-2:Low Priority

3-5:Mid Priority

6-7:High Priority

VLAN Tag

PRIO:Priority(3 Bit)

CFl:Canonical Form Indicator (1 Bit)

VLAN ID:VLANidentifier (12 Bit)

VLAN 帧在原以太网帧基础上,通过在 SA 与Type 字段间添加了 VLAN 属性的标识,SA后面Type 值为0x8100标识该为 VLAN帧,随后携带了16 位的 VLAN TAG,VLAN TAG又分别PRIO、CFI和VLANID 标识符。

PRIO:长度为 3 bit,表示的优先级,取值范围为 0-7,值越大优先级越高。

CFI: (Canonical Format indicator) 长度为 1bit,标准格式指示位,以太网中 CFI的值默认为0。

VLANID:长度12bits,表示该所属的 VLAN,其中,VLANID 的取值范围0-4095。

VLAN通信过程

当前LAN 以太网中划分为2个VLAN(VLAN 1&VLAN 2),其中VLAN1包括ECU1和ECU2,VLAN2 包括ECU3 和ECU4,当VLAN1的ECU1发送一条以太网给到 ECU2,其中以太网包括 PRB、DA、SA、VLAN Tag、Type、Payload 及 CRC,交换机通过其物理端口接收该以太网帧,解析 MAC 地址信息,并根据 SAT表的映射关系从对应的物理端口发送给ECU2。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python中的异常处理

Python中的异常处理 在Python编程中&#xff0c;异常是指程序出现了不正常的情况&#xff0c;比如语法错误、运行时错误等等。这些异常会导致程序崩溃&#xff0c;所以我们需要在程序中使用异常处理来避免这种情况的发生。 什么是异常处理&#xff1f; 异常处理是一种技术&a…

chatgpt赋能python:Python如何把多行合并成一行

Python如何把多行合并成一行 如果你常常需要处理文本数据&#xff0c;你就会遇到将多行文本合并成一行的需求。在Python中&#xff0c;这个任务非常简单&#xff0c;本文将介绍如何使用Python实现把多行合并成一行。 什么是多行文本&#xff1f; 在编程和文本处理中&#xf…

【MySQL高级篇笔记-其他数据库日志(下) 】

此笔记为尚硅谷MySQL高级篇部分内容 目录 一、MySQL支持的日志 1、日志类型 2、日志的弊端 二、慢查询日志(slow query log) 三、通用查询日志(general query log) 1、问题场景 2、查看当前状态 3、启动日志 方式 1 &#xff1a;永久性方式 方式2&#xff1a;临时性…

回归预测 | MATLAB实现基于LSTM-AdaBoost长短期记忆网络结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于LSTM-AdaBoost长短期记忆网络结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于LSTM-AdaBoost长短期记忆网络结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于LSTM-Ad…

chatgpt赋能python:Python如何将多个图像合并输出?

Python如何将多个图像合并输出&#xff1f; 如果您需要将多个图像合并为一个&#xff0c;并将其输出到一个文件中&#xff0c;则Python提供了一些简单的解决方案。在本文中&#xff0c;我们将介绍如何使用Python进行该操作&#xff0c;并附上示例和用法说明。 PIL库 Python …

计算机图形学与opengl C++版 学习笔记 第11章 参数曲面

目录 11.1 二次贝塞尔曲线(三点)11.2 三次贝塞尔曲线(四点)11.3 二次贝塞尔曲面(3x3控制点)11.4 三次贝塞尔曲面(4x4控制点)补充说明 在20世纪50年代和60年代在雷诺公司工作期间&#xff0c;皮埃尔贝塞尔&#xff08;Pierre Bzier&#xff09;开发了用于设计汽车车身的软件系统…

【信息与内容安全复习】第二章知识要点总结

1.网络媒体信息的获取流程 2.三原色原理 3.颜色特征表达的特点、问题和主要方法 4.文本特征表达的方式 5.网络媒体信息与网络通讯信息 6.网络媒体信息获取方法 7.补充 8.视觉特征表达的应用 9.颜色特征表达举例之颜色直方图 10.纹理特征和局部特征 答&#xff1a; 1.网络媒体…

Redis从入门到精通【高阶篇】之底层数据结构字典(Dictionary)详解

文章目录 0.前言1. 字典的结构2. 源码解析2.1. 字典的结构体2.2. 字典的函数接口dictAdddictFinddictResize 3. 字典/哈希表的优缺点3.1 优点3.1.1. 快速的查找时间3.1.2. 动态调整大小3.1.3. 灵活的数据类型3.2 缺点 4.总结5. Redis从入门到精通系列文章 0.前言 上个篇章回顾…

java三大特性之【多态】

多态 1.1 概念1.2 实现条件1.3 方法重写&#xff08;override&#xff09;与方法重载&#xff08;overload&#xff09;1.4 向上转型1.5 向下转型 1.1 概念 同样的一个方法/行为&#xff0c;经过不同的对象&#xff0c;表现出不同的行为&#xff0c;这样的现象就称为多态。 举…

今天就详细告诉你发票识别软件能识别哪些内容

既然大家点进这篇文章&#xff0c;说明大家对增值税发票识别技术非常感兴趣。本文会先介绍增值税发票识别技术的相关知识&#xff0c;然后再具体介绍识别增值税发票的软件有哪些。 增值税发票识别技术是一种基于图像识别和深度学习算法的自动化技术&#xff0c;它可以快速准确…

AI问答:前端需要掌握的设计模式/vue项目使用了哪些设计模式/vue项目开发可以使用哪些设计模式

一、理解什么是设计模式 设计模式是对软件设计开发过程中反复出现的某类问题的通用解决方案。 设计模式是一个在软件设计领域中被广泛应用的概念&#xff0c;它指的是一套被公认为有效的解决特定问题的设计思路和方法。 设计模式更多的是指导思想和方法论&#xff0c;而不是现…

零基础学 MySQL(基础版)

零基础学 MySQL(基础版) 1. 引出 思考一个问题&#xff1a; 淘宝网&#xff0c;京东、微信&#xff0c;抖音 都有各自的功能,那么当我们退出系统的时候&#xff0c;下次再访问时&#xff0c;为什么信息还存在? 2. 解决之道 2.1 解决之道—文件、数据库 为了解决上述问题&…

chatgpt赋能python:Introduction

Introduction 在机器学习中&#xff0c;模型的训练是非常重要的步骤之一。模型训练意味着为数据拟合合适的参数&#xff0c;以便能够准确地预测未来的值。Python是一种功能强大的编程语言&#xff0c;提供许多库和框架来训练机器学习模型。在本文中&#xff0c;我们将探讨如何…

FFmpeg编程入门

标题 播放器框架常用音视频术语解复用器和编解码器FFmpeg库简介FFmpeg有8个常用库&#xff1a; FFmpeg函数简介封装格式相关编解码器相关 FFmpeg数据结构简介关系数据结构分析 播放器框架 流程&#xff1a;媒体文件通过复用器将音频流&#xff0c;视频流&#xff0c;字幕流分离…

iCache dCache

前言 CPU 和 RAM 之间存在多级高速缓存&#xff0c;一般分为 3 级&#xff0c;分别是 L1、L2、L3。 另外&#xff0c;我们的代码都是由两部分组成的&#xff1a;指令、数据。 L1 Cache 比较特殊&#xff0c;每个 CPU 会有两个 L1 Cache&#xff0c;分别为 iCache&#xff08;指…

互联网 Java 工程师高级面试八股文汇总(1260 道题目附解析)

今年的行情&#xff0c;让招聘面试变得雪上加霜。已经有不少大厂&#xff0c;如腾讯、字节跳动的招聘名额明显减少&#xff0c;面试门槛却一再拔高&#xff0c;如果不用心准备&#xff0c;很可能就被面试官怼得哑口无言&#xff0c;甚至失去了难得的机会。 现如今&#xff0c;…

苹果将在 iOS 17 引入新功能,Safari隐私浏览有重大更新

苹果公司正在对Safari隐私浏览系统进行重大更新&#xff0c;为用户在浏览网页时提供更好的保护&#xff0c;防止第三方跟踪器。 iPhone制造商说&#xff1a;先进的跟踪和指纹保护有助于防止网站使用最新的技术来跟踪或识别用户的设备。隐私浏览现在可以在不使用时锁定&#xf…

MODIS数据下载

MODIS数据常用下载网址&#xff1a; Find Data - LAADS DAAC 在下载之前需要注册一个账号&#xff0c;才可进行下载。 1.选择数据产品&#xff0c;本人选取MOD09Q1数据产品&#xff08;250m8天合成的反射率数据&#xff09; 2.设置时间限制如下 3.找到感研究区域所在的位置&…

chatgpt赋能python:Python怎么拦截Windows浏览器的请求

Python怎么拦截Windows浏览器的请求 Python是一种流行的编程语言&#xff0c;并且被广泛用于Web开发。在这篇文章中&#xff0c;我们将深入探讨Python如何拦截Windows浏览器的请求。 什么是拦截请求? 拦截请求是指在网络传输过程中&#xff0c;对请求进行截获并进行处理的过…

C++结构体

目录 一、结构体的概念 二、结构体定义和使用 三、结构体数组 四、结构体指针 五、结构体嵌套结构体 六、结构体做函数参数 七、结构体中const使用场景 一、结构体的概念 结构体属于用户自定义的数据类型&#xff0c;允许用户存储不同的数据类型 二、结构体定义和使用 语法&…