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

news2025/2/2 15:34:37

        在上一章节中,我们讲解了数据链路层与物理层的接口MIIM,在本章中我们主要介绍车载网络中的数据链路层。

目录

数据链路层与网络层的区别

数据链路层:负责“同一链路”或“局域网/子网”内的可靠传输

传输范围:

主要功能:

通路的确定:

网络层(IP):负责整个网络范围(可能跨多个子网/链路)的寻址与路由

传输范围:

主要功能:

通路的确定:

数据链路层的主要功能

        1. 封装与解封装

        2.介质访问控制

        3. 差错检测与处理

        4. 与物理层交互

        5. 对上层的抽象与屏蔽

ARP协议

ARP协议在局域网内没有找到目标IP怎么办?

1. 目标 IP 不在同一个子网、需要通过网关(路由)转发

2. 目标 IP 在本地子网,但无人应答

3. 后续处理或错误信息

通路建立流程


        在传统的 IEEE 802 体系中,数据链路层被进一步拆分成了两层:

  • LLC(Logical Link Control,逻辑链路控制子层)
  • MAC(Media Access Control,介质访问控制子层)

     但是截止到目前,很多厂商可能可能只有MAC协议。这是因为在实践中,LLC 子层对于许多已经成熟的局域网(尤其是以太网)来说,常常已经被“弱化”或“合并”到 MAC 中去,或者直接由 上层协议栈(TCP/IP)来处理逻辑链路方面的控制和复用。对于车载网络而言,厂商通常更关注 底层总线访问、帧格式、仲裁、错误检测 等 MAC 级别的功能,而对 LLC 层的需求不大,或者说直接由其他高层协议代替了 LLC 的功能。至于 LLC 子层,大多厂商直接让 IP 层(OSI 第三层)去对接 MAC 报文,或者使用 VLAN/QoS 等扩展,实际上并不额外区分 LLC。

数据链路层与网络层的区别

        在 OSI 模型中,数据链路层网络层(IP 层) 都是把数据“送到对面”,但它们关注的 范围实现方式 不同,层次职责 也不同。

数据链路层:负责“同一链路”或“局域网/子网”内的可靠传输

  • 传输范围

    • 主要在 同一个物理链路同一个局域网(同一个子网/广播域) 内工作。
    • 典型场景:以太网交换机的某个端口到主机之间,或者共享介质上的多台主机之间(Wi-Fi、CAN总线等)。
  • 主要功能

    • 帧的封装/解封装(添加 MAC 地址、CRC 校验等)。
    • 介质访问控制(MAC)和错误检测纠正。
    • 确保在本链路里,数据能正确发送到目标MAC地址的设备上。
  • 通路的确定

    • 数据链路层不需要考虑跨越多个网络的转发和路由;
    • 只要“下一跳”或者“同网段”的设备能收到帧,就完成了它的使命。

换句话说,数据链路层 关注的是:“在同一个物理/局域链路上,A 怎么把数据帧送到 B”。如果要跨越多个路由器,数据链路层只负责“到下一跳”的那一段。

推理 持续 一秒

在 OSI 模型中,数据链路层网络层(IP 层) 确实都是把数据“送到对面”,但它们关注的 范围实现方式 不同,层次职责 也不同。一个简要的对比是:

网络层(IP):负责整个网络范围(可能跨多个子网/链路)的寻址与路由

  • 传输范围

    • 面向 整个互联网或更大范围 的网间互联;可以跨越多个局域网、路由器、运营商网络等。
  • 主要功能

    • 逻辑寻址(IP地址):给每个主机或网络接口分配全球唯一或私有的 IP 地址,方便路由转发。
    • 路由选择:根据路由表、路由协议决定 “下一跳”(要发给哪一个路由器或设备),直到数据包抵达目标 IP 所在子网。
    • 分片与重组(若链路层 MTU 不足时,IP 可做分片)。
  • 通路的确定

    • IP 协议层面会选出一条可能跨多个路由器/子网的路径,让包最终到达目标 IP;
    • 在每一跳内部,则调用数据链路层把包封装成帧,发送给下一跳设备。

也就是说,网络层 关注的是:“我在全网范围内,如何选择路由,把数据包一跳一跳地传到目的 IP 地址所在的网络”。每一跳之间再由数据链路层去完成“具体链路/局域网内”的传送。

数据链路层的主要功能

        在 OSI 七层模型 中,数据链路层(第2层)主要负责把来自网络层的 分组(packet) 再次包装(封装)为 帧(frame),并通过底层 物理层 发送到目标主机。它有以下关键职责:

        1. 封装与解封装

        从网络层(IP 层)接收 IP 包,在它前面加上 MAC 帧头(源 MAC、目的 MAC、Type/Length 等),并在帧末尾附加 CRC/FCS 校验,形成 以太网帧。在接收方向,去掉 MAC 帧头和 CRC,然后把还原后的 IP 包提交给网络层。详细的帧讲解可以移步这位博主的博客:https://blog.csdn.net/chendemingxxx/article/details/143323667

        2.介质访问控制

        数据链路层负责 控制 同一物理介质上 多个节点 的访问。在 无线网络车载总线 等场景,各种 仲裁、时隙分配、优先级 策略也属于数据链路层范畴。

        3. 差错检测与处理

        帧头或帧尾附带 CRC(循环冗余校验)或 FCS(帧检验序列),用来检测传输过程中可能出现的比特差错。出现校验错误时,通常 丢弃 该帧,并由上层(如 TCP)或链路层重传(某些协议提供)来保证可靠性。

        4. 与物理层交互

        数据链路层将成帧后的数据 送入物理层 进行实际信号发送,也从物理层接收比特流并组装成帧。不同物理介质(双绞线、光纤、无线)会对帧的 传输速率、调制方式、带宽 等有不同要求,数据链路层要与物理层相互适配。与此同时他还屏蔽不同物理媒介的实现差异,对上层而言提供 统一的“发送帧/接收帧” 功能。有兴趣的可以看看上一章

        5. 对上层的抽象与屏蔽

        上层(网络层)只需要知道如何处理 IP 分组,不必关心具体链路是 以太网无线局域网CAN 总线 还是 其它协议。数据链路层统一为网络层提供了 “发送/接收分组” 的接口,把底层介质访问与设备寻址、错误校验等复杂度都 封装 起来。

ARP协议

在局域网中,ARP(Address Resolution Protocol) 的工作原理是:

  1. 主机要向目标IP发送数据,先检查是否在本地子网内(根据子网掩码等判断)。
  2. 如果目标IP在同一个子网,则主机会 ARP广播 询问 “谁是 目标IP,请告诉我你的MAC地址。”
  3. 如果目标主机在网内并且在线,就会以单播方式回应自己的MAC地址。
  4. 如果长时间无人应答(因为目标IP确实不在网内、或主机离线等),则 ARP 请求 最终 超时;主机获取不到目标的MAC地址,发送 IP 分组也随之 失败

ARP协议在局域网内没有找到目标IP怎么办?

1. 目标 IP 不在同一个子网、需要通过网关(路由)转发

        如果 目标IP 不在本地子网,本机会根据 路由表 决定是否将数据发送给 默认网关(Default Gateway)。此时:

  1. 主机会去 ARP 解析 默认网关的 IP → MAC,得到网关的 MAC 地址。
  2. 把目标IP包封装到以太网帧(或其他二层帧)中,目的 MAC 填写的是 网关的 MAC
  3. 网关接收到帧后,再根据路由表进行进一步转发。

所以,如果目标 IP 不在本地子网范围,主机并不会直接 ARP 目标IP,而是 ARP 网关IP。只要网关IP可以解析到MAC地址(网关在线),即便目标IP不在本地,也能通过网关进行转发(至其他网络)。

2. 目标 IP 在本地子网,但无人应答

        若 目标 IP 确实在 同一子网,主机就会 ARP广播 目标IP请求。但如果对方设备不在线、或根本不存在这个IP:

  1. ARP 请求 发送后得不到任何应答。
  2. 操作系统会 重试 若干次,超过一定次数/时间后,ARP 请求超时。
  3. 主机在 IP 层会得到一个“不可达”或“ARP 超时”的结果,进而报错给应用程序或上层协议(如可能返回 host unreachable)。

这种情况下,ARP 表中永远没有记录下这条 IP→MAC 映射,后续网络层对这个目标的发送也都会失败。

3. 后续处理或错误信息

  • 当 ARP 请求失败,主机往往会在应用层或传输层产生错误,例如 ICMP “Destination Host Unreachable” 或者底层返回“ARP 超时”等。
  • 具体行为由操作系统网络栈和路由配置决定。通常你在 ping 一个不存在的 IP 时,过一段时间就会看到 “Request timed out”“Destination Host Unreachable”

通路建立流程

        当客户端想连接到某个远程服务器(例如 IP= 10.0.0.2, 端口=80)时,首先由操作系统检查 目标 IP 是否和自己位于同一子网:

  • 如果在同一子网,则会 ARP 查询该 目标 IP 的 MAC 地址;
  • 如果不在同一子网,则根据 路由表 选择下一跳(一般是 默认网关),对 网关的 IP 进行 ARP,获取 网关 MAC。随后,客户端将 TCP 数据(带有 SYN 标志) 封装进 IP 包,并用 数据链路层帧头 标明“目的 MAC=网关的 MAC”(若跨网)或“目的 MAC=目标主机”,然后通过物理层送出。

当数据包(含 SYN)到达下一跳(例如网关)后,网关会根据其 路由表 判断下一跳是谁、ARP 获取下一跳 MAC 地址、重新封装成新的帧,再转发出去。经过若干路由器/交换机,最终 目标服务器 收到该 IP 包,解析出其中的 TCP SYN。

服务器看见客户端要建立连接(SYN),随即发回一个 SYN+ACK 报文:此时服务器同样需要检查路由表,若客户端 IP 不在本地网,就将 SYN+ACK 发给其网关,再逐跳转发回到客户端。客户端收到后再发送最终的 ACK。这一来一回完成 TCP 三次握手,至此双方的 TCP 连接在逻辑上正式建立。

有了这个连接后,客户端与服务器后续的数据交换(如 HTTP 请求与响应)就可以基于此 TCP 连接 进行;在链路层,依旧会不断根据 下一跳 MAC 来封装帧、发送物理信号,但对于应用程序而言,这些底层过程被操作系统和网络设备透明地处理了。

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

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

相关文章

ArkTS高性能编程实践

文章目录 概述声明与表达式函数数组异常 概述 本文主要提供应用性能敏感场景下的高性能编程的相关建议,助力开发者开发出高性能的应用。高性能编程实践,是在开发过程中逐步总结出来的一些高性能的写法和建议,在业务功能实现过程中&#xff0…

阿里新发的大模型Qwen2.5-max如何?

阿里新发布的大模型Qwen2.5-Max是一款性能卓越、技术先进的大型语言模型,其在多个方面展现了突出的表现。以下是基于我搜索到的资料对Qwen2.5-Max的详细评价: 技术特点 超大规模预训练数据:Qwen2.5-Max采用了超过20万亿tokens的超大规模预训…

走向基于大语言模型的新一代推荐系统:综述与展望

HightLight 论文题目:Towards Next-Generation LLM-based Recommender Systems: A Survey and Beyond作者机构:吉林大学、香港理工大学、悉尼科技大学、Meta AI论文地址: https://arxiv.org/abs/2410.1974 基于大语言模型的下一代推荐系统&…

第1章 量子暗网中的血色黎明

月球暗面的危机与阴谋 量子隧穿效应催生的幽蓝电弧,于环形山表面肆意跳跃,仿若无数奋力挣扎的机械蠕虫,将月球暗面的死寂打破,徒增几分诡异。艾丽伫立在被遗弃的“广寒宫”量子基站顶端,机械义眼之中,倒映着…

MCU内部ADC模块误差如何校准

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。 一、ADC误差校准引言 MCU 片内 ADC 模块的误差总包括了 5 个静态参数 (静态失调,增益误差,微分非线性…

【Rust自学】15.4. Drop trait:告别手动清理,释放即安全

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 15.4.1. Drop trait的意义 类型如果实现了Drop trait,就可以让程序员自定义当值离开作用域时发生的操作。例如文件、网络资源…

【Block总结】CPCA,通道优先卷积注意力|即插即用

论文信息 标题: Channel Prior Convolutional Attention for Medical Image Segmentation 论文链接: arxiv.org 代码链接: GitHub 创新点 本文提出了一种新的通道优先卷积注意力(CPCA)机制,旨在解决医学图像分割中存在的低对比度和显著…

信息学奥赛一本通 1607:【 例 2】任务安排 2 | 洛谷 P10979 任务安排 2

【题目链接】 ybt 1607:【 例 2】任务安排 2 洛谷 P10979 任务安排 2 注:ybt1607中n最大达到 1 0 4 10^4 104,洛谷P10979中n最大达到 3 ∗ 1 0 5 3*10^5 3∗105,本题解统一认为n最大达到 3 ∗ 1 0 5 3*10^5 3∗105。 【题目考点…

OFDM系统仿真

1️⃣ OFDM的原理 1.1 介绍 OFDM是一种多载波调制技术,将输入数据分配到多个子载波上,每个子载波上可以独立使用 QAM、PSK 等传统调制技术进行调制。这些子载波之间互相正交,从而可以有效利用频谱并减少干扰。 1.2 OFDM的核心 多载波调制…

【Go语言圣经】第四节:复合数据类型

第四章:复合数据类型 本节主要讨论四种类型——数组、slice、map和结构体。 数组和结构体都是有固定内存大小的数据结构。相比之下,slice 和 map 则是动态的数据结构,它们可以根据需要动态增长。 4.1 数组 数组是一个定长的由特定类型元素…

完美还是完成?把握好度,辨证看待

完美还是完成? 如果说之前这个答案有争议,那么现在,答案毋庸置疑 ■为什么完美大于完成 ●时间成本: 做事不仅要考虑结果,还要考虑时间和精力,要说十年磨一剑的确质量更好,但是现实没有那么多…

Many Whelps! Handle It! (10 player) Many Whelps! Handle It! (25 player)

http://db.nfuwow.com/80/?achievement4403 http://db.nfuwow.com/80/?achievement4406 最少扣你50DKP! 第二阶段 当奥妮克希亚升空后,在10秒内引出50只奥妮克希亚雏龙,随后击败奥妮克希亚。 World of Warcraft [CLASSIC][80猎人][Grandel][最少扣你5…

【React】PureComponent 和 Component 的区别

前言 在 React 中,PureComponent 和 Component 都是用于创建组件的基类,但它们有一个主要的区别:PureComponent 会给类组件默认加一个shouldComponentUpdate周期函数。在此周期函数中,它对props 和 state (新老的属性/状态)会做一…

MongoDb user自定义 role 添加 action(collStats, EstimateDocumentCount)

使用 mongosh cd mongsh_bin_path mongosh “mongodb://user:passip:port/db”这样就直接进入了对应的db 直接输入: 这样 role “read_only_role" 就获得了3个 action, 分别是 查询,列举集合,集合元数据查询 P.S: 如果没有 …

蓝桥杯刷题DAY2:二维前缀和 一维前缀和 差分数组

闪耀的灯光 📌 题目描述 蓝桥公园是一个适合夜间散步的好地方,公园可以被视为由 n m 个矩形区域构成。每个区域都有一盏灯,初始亮度为 a[i][j]。 小蓝可以选择一个大的矩形区域,并按下开关一次,这将使得该区域内每盏…

C++初阶 -- 手撕string类(模拟实现string类)

目录 一、string类的成员变量 二、构造函数 2.1 无参版本 2.2 有参版本 2.3 缺省值版本 三、析构函数 四、拷贝构造函数 五、c_str函数 六、operator重载 七、size函数 八、迭代器iterator 8.1 正常版本 8.2 const版本 九、operator[] 9.1 正常版本 9.2 const版…

【Unity3D】实现2D角色/怪物死亡消散粒子效果

核心:这是一个Unity粒子系统自带的一种功能,可将粒子生成控制在一个Texture图片网格范围内,并且粒子颜色会自动采样图片的像素点颜色,之后则是粒子编辑出消散效果。 Particle System1物体(爆发式随机速度扩散10000个粒…

85.[1] 攻防世界 WEB easyphp

进入靶场 属于代码审计 <?php // 高亮显示当前 PHP 文件的源代码&#xff0c;常用于调试或展示代码 highlight_file(__FILE__);// 初始化两个标志变量&#xff0c;用于后续条件判断 $key1 0; $key2 0;// 从 GET 请求中获取参数 a 和 b $a $_GET[a]; $b $_GET[b];// 检…

pytorch图神经网络处理图结构数据

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 图神经网络&#xff08;Graph Neural Networks&#xff0c;GNNs&#xff09;是一类能够处理图结构数据的深度学习模型。图结构数据由节点&#xff08;vertices&#xff09;和边&#xff08;edges&#xff09;组成&a…

海外问卷调查,最常用到的渠道查有什么特殊之处

市场调研&#xff0c;包含市场调查和市场研究两个步骤&#xff0c;是企业和机构根据经营方向而做出的决策问题&#xff0c;最终通过海外问卷调查中的渠道查&#xff0c;来系统地设计、收集、记录、整理、分析、研究市场反馈的工作流程。 市场调研的工作流程包括&#xff1a;确…