2. 物理层与数据链路层:物理层标准与接口、以太网协议、MAC地址与帧结构、CSMA/CD机制、交换机工作原理

各位同学,咱们今天聊点实在的。网络协议栈这东西,很多人觉得抽象,其实说白了,它就是一套「怎么把数据从A点搬到B点」的规矩。而物理层和数据链路层,就是这套规矩的根基。

我个人习惯把这两层比作「快递小哥」和「分拣中心」。物理层负责把比特流(0和1)变成电信号或者光信号,扔到线上去;数据链路层则负责把这些信号打包、贴标签、纠错,确保包裹不会送错门。嗯,咱们今天就一层一层剥开看。

2.1 物理层标准与接口

物理层,说白了就是「怎么把比特变成信号」。你想想看,电脑里的0和1,总不能直接拿根线捅出去吧?得有个标准。

常见的物理层标准:

  • 10BASE-T:10Mbps,双绞线,最老的一代。我在项目里见过一些老旧的工控设备还在用这个,跑得慢但稳定。
  • 100BASE-TX:100Mbps,快速以太网。当年从10M升级到100M,那感觉就像从绿皮火车换成了高铁。
  • 1000BASE-T:1Gbps,千兆以太网。现在家用路由器基本都是这个标准了。
  • 10GBASE-T:10Gbps,万兆以太网。数据中心里常见,普通开发板很少用到。

物理层接口:

接口就是物理连接器。最常见的当然是 RJ45 接口,也就是咱们常说的「水晶头」。另外还有 SFP(Small Form-factor Pluggable)接口,用于光纤模块。我记得有一次调试一个光纤通信的项目,SFP模块死活不亮,最后发现是光口没插紧——嗯,这种低级错误我也犯过。

核心要点:物理层只关心「信号能不能传过去」,不关心「传的是什么内容」。它就是个搬运工。

2.2 以太网协议

以太网是目前最主流的局域网技术。它定义了数据怎么在共享介质上传输。我个人觉得,以太网之所以能活到现在,就是因为它简单、便宜、够用。

以太网协议的核心是 CSMA/CD(载波监听多点接入/碰撞检测),这个咱们后面细说。先记住一句话:以太网是「尽力而为」的传输,它不保证数据一定到,只保证尽量到。

2.3 MAC地址与帧结构

MAC地址,就是网卡的「身份证」。每个网卡出厂时都有一个全球唯一的48位MAC地址。比如 00:1A:2B:3C:4D:5E。前24位是厂商代码,后24位是序列号。

以太网帧结构:

数据在数据链路层被封装成「帧」。一个标准的以太网帧长这样:

| 前导码 (7字节) | 帧起始定界符 (1字节) | 目的MAC (6字节) | 源MAC (6字节) | 类型/长度 (2字节) | 数据 (46-1500字节) | FCS (4字节) |
  • 前导码:用来同步时钟,说白了就是「我要发数据了,你准备好」。
  • 目的MAC / 源MAC:谁发给谁。
  • 类型/长度:标识上层协议,比如0x0800表示IP协议。
  • 数据:实际要传的内容,最少46字节,最多1500字节(MTU)。
  • FCS:帧校验序列,用来检测数据有没有被损坏。

避坑指南:我曾经在项目中遇到一个问题,数据包总是丢。查了半天,发现是MTU设置太大,超过了1500字节,导致分片出错。后来我把MTU改成1492(PPPoE环境下),问题就解决了。记住:MTU不是越大越好。

2.4 CSMA/CD机制

CSMA/CD,全称是「载波监听多点接入/碰撞检测」。名字挺长,其实原理很简单。

工作流程:

  1. 先听再说:发送前先监听信道。如果有人在发,就等一会儿再试。
  2. 边发边听:发送过程中也监听。如果发现信号冲突(碰撞),就立刻停止发送。
  3. 随机退避:碰撞后,等待一个随机时间再重试。

为什么会碰撞?因为信号在线上传播需要时间。比如A和B同时监听,发现没人发,就同时开始发。结果信号在半路上撞上了。嗯,这就像两个人同时开口说话,谁也听不清谁。

注意:CSMA/CD只适用于半双工模式。现在的全双工交换机已经不需要这个机制了,因为发送和接收走不同的线路,不会碰撞。但理解它,对理解以太网的本质很有帮助。

2.5 交换机工作原理

交换机是数据链路层的核心设备。它不像集线器(Hub)那样无脑广播,而是根据MAC地址来转发数据。

交换机的工作流程:

  • 学习:交换机记录每个端口收到的源MAC地址,建立MAC地址表。
  • 转发:收到数据帧后,查MAC地址表。如果找到目的MAC对应的端口,就只往那个端口发;如果没找到,就广播(泛洪)。
  • 过滤:如果目的MAC和源MAC在同一个端口,交换机就不转发,直接丢弃。

举个例子:

假设交换机有4个端口:Port1连A,Port2连B,Port3连C,Port4连D。

  • A发数据给B:交换机查表,发现B在Port2,只往Port2发。C和D收不到,安全又高效。
  • A发数据给一个未知设备:交换机不知道它在哪,就往所有端口(除了Port1)广播。

核心要点:交换机的本质是「基于MAC地址的转发」。它把冲突域分割成一个个小段,大大提高了网络效率。我在项目中调试过一台老交换机,MAC地址表只有1024条,结果网络一大了就丢包。后来换了台大表容量的交换机,问题就解决了。

好了,这一章的内容就这些。物理层负责「怎么传」,数据链路层负责「传得准」。下一章咱们聊聊网络层,也就是IP协议和路由。到时候你会发现,前面的基础打好了,后面的东西学起来就顺了。