第二讲:物理层与数据链路层——以太网物理层基础、100BASE-TX与100BASE-T1、车载以太网特殊要求

各位同学,咱们今天聊聊物理层和数据链路层。说实话,很多做DoIP的工程师,一上来就扎进UDP和TCP的报文解析里,反而把最底层的物理层给忽略了。我个人觉得,这是个很大的误区。你想想看,物理层要是没搞对,上面协议栈跑得再欢实,那也是空中楼阁。

一、以太网物理层基础:信号是怎么“跑”起来的?

物理层,说白了就是负责把0和1变成电信号或者光信号,扔到线上去。反过来,也负责从线上把信号抓回来,还原成0和1。

我刚开始做车载网络那会儿,总觉得物理层是硬件工程师的事。直到有一次,台架上DoIP通信死活不通,抓包一看,全是CRC错误。查了半天,结果是线缆阻抗不匹配,信号反射太严重。嗯,从那以后,我再也不敢小看物理层了。

物理层主要干三件事:

  • 编码:把数据比特流编码成适合传输的信号模式。比如曼彻斯特编码、4B/5B编码、8B/10B编码等等。
  • 收发:通过差分信号驱动双绞线,或者通过LED/Laser驱动光纤。
  • 协商:自动协商速率和双工模式。这个在车载里经常出问题,我后面会讲。

核心要点:物理层不关心你传的是什么协议(DoIP、Some/IP还是普通TCP/IP),它只关心能不能把比特流可靠地从A点搬到B点。

二、100BASE-TX:经典的“快速以太网”

100BASE-TX,也叫快速以太网。它用的是两对双绞线,一对发,一对收。速率100Mbps,全双工模式。

它的编码方式是4B/5B + MLT-3。什么意思呢?就是把4位数据映射成5位码字,然后通过MLT-3电平调制到线上去。这样做的好处是,保证了足够的电平跳变,方便接收端恢复时钟。

我记得有一次,一个供应商送来的样件,标称支持100BASE-TX。结果一上电,链路就是起不来。我拿示波器一看,发送端的信号幅度只有规范要求的一半。后来发现,是他们的PHY芯片的驱动电流配置错了。这种坑,我踩过不止一次。

参数 100BASE-TX 1000BASE-T
速率 100 Mbps 1000 Mbps
线对数 2对 4对
编码方式 4B/5B + MLT-3 4D-PAM5
最大距离 100米 100米
车载应用 诊断、刷写 较少(功耗高)

避坑指南:我曾经在项目中遇到过,用普通的CAT5e网线做车载DoIP测试,结果在高温环境下频繁断链。后来换成车载专用的高柔性屏蔽线,问题才解决。车载环境对线缆的要求,比办公室网络苛刻得多。

三、1000BASE-T:千兆以太网,车载里用得少?

1000BASE-T,也就是千兆以太网。它用了四对双绞线,每对线同时收发数据。编码方式更复杂,用的是4D-PAM5,也就是在5个电平上调制数据。

为什么车载里1000BASE-T用得少?原因很简单:功耗高、发热大。你想想看,车机里本来散热条件就有限,再塞一个千兆PHY,温度分分钟飙上去。而且,对于DoIP诊断来说,100Mbps的带宽其实已经够用了。除非你要做大数据量的刷写或者视频流传输,否则没必要上千兆。

不过,随着自动驾驶和域控制器的普及,千兆以太网在车载里的应用正在慢慢增多。我个人预测,未来3-5年,1000BASE-T1(单对线千兆)会成为主流。

四、车载以太网的特殊要求:和办公室网络不一样

车载以太网,和咱们办公室里的以太网,虽然协议栈一样,但物理层差别很大。为什么?因为车载环境太恶劣了:温度范围宽(-40°C到+125°C)、电磁干扰强、线束长度受限、还要考虑成本和重量。

所以,车载以太网物理层有几个特殊要求:

  1. 单对线传输:为了减重和降低成本,车载以太网通常只用一对双绞线。这就是100BASE-T1和1000BASE-T1的由来。
  2. 更强的EMC性能:车载电子设备多,电磁环境复杂。PHY芯片必须要有良好的共模抑制能力。
  3. 低功耗:尤其是对于常电设备(比如T-Box),功耗必须严格控制。
  4. 特定的连接器:车载以太网通常使用H-MTD、MATEnet等专用连接器,而不是普通的RJ45。

注意:千万不要把办公室用的RJ45网线直接用在车载DoIP测试中!我曾经见过有人这么干,结果在振动测试中,连接器松脱,导致通信中断。车载连接器都有锁紧机构,这是有原因的。

五、100BASE-T1:车载以太网的主力军

100BASE-T1,也叫BroadR-Reach。它只用一对双绞线,就能实现100Mbps的全双工通信。它的核心技术是回声消除和混合电路,让一对线同时收发数据。

我刚开始接触100BASE-T1时,觉得这玩意儿挺神奇的。一对线,怎么同时收发?后来看了PHY芯片的内部框图才明白,它用了类似电话线路的混合线圈技术,把发送和接收信号分离开。

100BASE-T1和100BASE-TX的主要区别:

  • 线对数:100BASE-T1只用1对,100BASE-TX用2对。
  • 编码方式:100BASE-T1用PAM3(3电平调制),100BASE-TX用MLT-3。
  • 最大距离:100BASE-T1在车载环境下通常支持15米左右,比100BASE-TX短。
  • 连接器:100BASE-T1用H-MTD或MATEnet,100BASE-TX用RJ45。

关键点:DoIP协议本身不关心底层是100BASE-TX还是100BASE-T1。但是,你的硬件接口必须匹配。如果你用的是100BASE-T1的PHY,那你的DoIP测试设备也必须支持100BASE-T1。这个在项目规划阶段就要想清楚。

六、数据链路层:MAC地址与帧结构

数据链路层,负责把物理层传来的比特流组装成帧,并进行差错检测。在以太网里,数据链路层主要做两件事:MAC寻址和帧校验。

MAC地址,是每个以太网设备的唯一标识。它长48位,通常写成6组十六进制数,比如 00:1A:2B:3C:4D:5E。在DoIP通信中,MAC地址用于在同一网段内定位设备。

以太网帧的结构,大家应该都熟悉:

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

这里要注意,DoIP报文是封装在IP数据报里的,IP数据报又封装在以太网帧的数据段里。所以,抓包的时候,你要一层一层剥开来看。

我习惯用Wireshark抓DoIP报文时,先看以太网层,确认源和目标MAC地址对不对。有时候,MAC地址配错了,会导致报文发到了错误的设备上。这种问题,在复杂的车载网络拓扑里特别容易发生。

七、总结与避坑

好了,这一讲的内容就这些。我帮你梳理一下重点:

  • 物理层是基础,别忽视。信号质量不好,上层协议栈再牛也没用。
  • 100BASE-TX是经典,100BASE-T1是车载主力。选型时要考虑功耗、成本和EMC。
  • 车载以太网有特殊要求:单对线、强EMC、低功耗、专用连接器。
  • 数据链路层的MAC地址和帧结构,是抓包分析的基础。

个人建议:如果你刚开始做车载DoIP开发,先别急着写代码。花点时间,用示波器看看PHY芯片的输出信号,用Wireshark抓几个正常的DoIP会话。把物理层和数据链路层搞明白了,后面的事情会顺利很多。

下一讲,我们会深入IP层和传输层,看看DoIP报文是怎么在网络上路由和传输的。到时候,我会结合一个实际的项目案例,讲讲UDP和TCP在DoIP里的具体用法。咱们下次见。