第2章:以太网基础回顾:OSI七层模型、TCP/IP协议栈、MAC地址与IP地址、以太网帧结构

各位同学,欢迎来到第二章。

说实话,很多刚入行的工程师,一上来就扎进车载以太网的细节里,结果越学越懵。为什么?因为地基没打牢。今天这一章,咱们就把以太网最核心的基础知识过一遍。这些东西,我在项目里几乎天天都要跟它们打交道。

2.1 OSI七层模型:通信的“分层哲学”

先聊聊OSI七层模型。你想想看,两台设备要通信,中间要经历多少事?从你敲下键盘,到对方屏幕上显示出来,这中间涉及硬件、软件、协议……如果全揉在一起,谁也搞不定。

所以,聪明的前辈们想了个办法——分层。每一层只管自己的事,层与层之间通过接口交互。这就是OSI七层模型的核心思想。

层号 名称 核心功能 车载场景举例
7 应用层 为用户提供网络服务接口 诊断协议UDS、SOME/IP服务
6 表示层 数据格式转换、加密、压缩 车载视频流的编解码
5 会话层 建立、管理、终止会话 DoIP的会话建立与维持
4 传输层 端到端可靠传输(TCP/UDP) ADAS传感器数据流控制
3 网络层 路由选择、逻辑寻址(IP) 网关的路由转发决策
2 数据链路层 帧封装、MAC寻址、差错检测 以太网MAC控制器驱动
1 物理层 比特流传输、电气特性 100BASE-T1、1000BASE-T1

我个人习惯,在调试车载网关时,脑子里始终要有一张“分层地图”。比如,当发现丢包时,我第一反应不是去查应用层代码,而是先看物理层有没有信号问题,再看链路层有没有CRC错误。一层一层排查,效率最高。

我的经验: 在实际项目中,OSI模型更像一个“参考框架”。真正在嵌入式里跑得最多的,是TCP/IP四层模型。但理解七层模型,能帮你更清晰地定位问题。

2.2 TCP/IP协议栈:实际工业界的“标准答案”

OSI模型是理论上的完美方案,但实际工业界用的是TCP/IP协议栈。它更精简,也更实用。

TCP/IP协议栈通常分为四层:

  • 应用层:HTTP、FTP、以及车载专用的SOME/IP、DoIP、AVB等。
  • 传输层:TCP(可靠、面向连接)和UDP(快速、无连接)。
  • 网络层:IP协议,负责寻址和路由。
  • 网络接口层:对应OSI的物理层和数据链路层。

我记得刚做车载网关时,遇到一个棘手的问题:摄像头数据流偶尔会卡顿。查了半天,发现是应用层用了TCP传输视频流。TCP的确认重传机制,在实时性要求高的场景下反而成了累赘。后来改成UDP,问题迎刃而解。

所以,选TCP还是UDP,不是拍脑袋决定的。你得看业务场景:

  • 诊断数据、固件升级 → 用TCP,保证数据完整。
  • 传感器数据、音视频流 → 用UDP,追求低延迟。
避坑指南: 我曾经在项目中遇到过一个坑:车载以太网中,UDP的校验和(Checksum)在某些硬件加速器上默认是关闭的。如果你不做校验,数据传错了都不知道。所以,一定要确认硬件是否开启了UDP校验和计算。

2.3 MAC地址与IP地址:设备的“身份证”与“门牌号”

这两个概念,很多新手容易搞混。我打个比方你就明白了:

  • MAC地址:就像你的身份证号。全球唯一,出厂就烧录在网卡里,一般不改。
  • IP地址:就像你家的门牌号。可以变,取决于你连到哪个网络。

在车载以太网里,MAC地址通常由芯片厂商分配,但整车厂有时会要求使用自己定义的MAC地址段,方便管理。IP地址则通过DHCP或者静态配置来分配。

特性 MAC地址 IP地址
长度 48位(6字节) 32位(IPv4)或128位(IPv6)
作用范围 局域网内 互联网/广域网
分配方式 硬件厂商烧录 网络管理员或DHCP
车载典型值 00:11:22:33:44:55 192.168.1.100

你想想看,网关在转发数据时,是怎么知道要把数据发给谁的?它先看IP地址,找到目标网络;再看MAC地址,找到具体设备。这就是ARP协议干的事——把IP地址解析成MAC地址。

重点: 在车载网络中,网关内部维护着一张“MAC地址表”和“路由表”。MAC地址表用于二层交换,路由表用于三层转发。这两张表,是网关的核心数据结构。

2.4 以太网帧结构:数据在线上到底长什么样?

好了,前面都是概念。现在咱们看看数据在网线上到底是怎么跑的。这就是以太网帧结构。

一个标准的以太网帧,长这样:

| 前导码(7B) | 帧起始定界符(1B) | 目标MAC(6B) | 源MAC(6B) | 类型/长度(2B) | 数据(46-1500B) | FCS(4B) |

我来拆解一下:

  • 前导码 + 帧起始定界符: 物理层用的,告诉接收端“准备接收数据”。
  • 目标MAC & 源MAC: 谁发给谁。
  • 类型/长度: 如果值大于1536,表示上层协议类型(比如0x0800是IPv4,0x0806是ARP)。如果小于等于1500,表示数据长度。
  • 数据: 真正的有效载荷。最小46字节,最大1500字节(MTU)。
  • FCS: 帧校验序列,用CRC32算法计算。接收端算一遍,如果对不上,说明帧在传输中损坏了,直接丢弃。

我记得有一次,在调试车载网关的转发性能时,发现丢包率很高。用抓包工具一看,很多帧的FCS校验失败。最后定位到是PHY芯片的时钟抖动太大,导致数据在传输过程中出现了比特错误。嗯,这种问题,光看软件是看不出来的,必须结合硬件一起排查。

小技巧: 在嵌入式开发中,你可以通过读取MAC控制器的寄存器,直接获取FCS错误计数、CRC错误计数等统计信息。这些是排查物理层问题的第一手资料。

2.5 车载以太网的特殊之处

最后,咱们聊聊车载以太网和普通以太网的区别。毕竟,车规级的东西,要求不一样。

  • 物理层不同: 车载以太网通常使用单对非屏蔽双绞线(100BASE-T1或1000BASE-T1),而不是标准的四对线。目的是减重、降成本。
  • 实时性要求高: 普通以太网是“尽力而为”的,但车载网络里,刹车信号、转向信号必须实时到达。所以有了AVB/TSN这样的时间敏感网络技术。
  • 诊断功能强: 车载以太网支持DoIP(基于IP的诊断协议),可以通过以太网进行远程诊断和刷写。

说白了,车载以太网就是在标准以太网的基础上,加了一层“车规级”的约束和增强。你掌握了标准以太网,再学车载以太网,就是水到渠成的事。

好了,这一章的内容就到这里。下一章,咱们开始真正进入车载以太网的世界,聊聊它的物理层——100BASE-T1和1000BASE-T1。到时候,我会结合我在项目里踩过的坑,给你讲透。