2. 物理层与数据链路层基础:介质、信号、帧与MAC

各位好,欢迎来到第二章。这一章我们得把OSI模型最下面的两层——物理层和数据链路层——彻底讲明白。很多人觉得这两层太“底层”了,工作里好像用不上。但我跟你说,网络出故障,十有八九就卡在这两层。

物理层管的是“怎么把比特流送出去”,数据链路层管的是“怎么在相邻设备间可靠地传帧”。两者配合,才能让数据真正跑起来。下面我带你一个个过。

2.1 物理层:介质与信号

物理层说白了,就是处理0和1的物理表达。它不关心数据内容,只负责发、收、同步比特流。

2.1.1 传输介质

传输介质分三类:

  • 双绞线:最常见。铜线两两绞合,抑制电磁干扰。Cat5e、Cat6你肯定见过。我建议布线至少用Cat6,抗干扰和速率都更好。
  • 同轴电缆:有线电视、老式以太网用。抗干扰比双绞线强,但成本高。我在项目中遇到过用同轴电缆做监控视频回传的场景,传输距离确实远一些。
  • 光纤:单模和多模。单模传输距离几十公里,多模几百米。数据中心里多模光纤很常见。说白了,光纤适合大带宽、长距离的场景。
介质类型典型速率最大距离适用场景
双绞线(Cat5e)1000 Mbps100 m办公局域网
双绞线(Cat6)10 Gbps55 m (10G)高速桌面/服务器
多模光纤10-100 Gbps300-500 m数据中心内部
单模光纤10-400 Gbps10-80 km骨干网/城域网

我的小技巧: 布双绞线时,别把线缆和强电线绑一起。我曾经在机房看到别人为了省事,把网线和电源线扎一块,结果网络丢包率飙升。分开走管,物理隔离,这是基本操作。

2.1.2 信号与编码

物理层需要对二进制码流进行编码,才能在介质上传输。常见的编码方式:

  • NRZ (不归零编码):高电平=1,低电平=0。缺点是长串相同位会导致时钟同步丢失。我心里总担心这个编码的可靠性。
  • 曼彻斯特编码:每位中间都有跳变。1是低到高,0是高到低。自带时钟,但效率只有50%。早期以太网用过。
  • 4B/5B + MLT-3:100BASE-TX用的。4位数据映射成5位码字,保证足够跳变,再用MLT-3进行三级电平调制。效率80%。

为什么需要编码?你想想看,如果物理层只传原始电平,连续发100个1,接收端根本分不清它到底发了100个还是一个长脉冲。编码就是为这个而来。

避坑指南: 我曾经在排查某个百兆链路丢包时,发现物理层编码错误计数一直在涨。最后检查发现是网线水晶头接触不良,导致信号严重衰减。换了成品跳线,问题消失。物理层出问题,再好的协议也白搭。

2.2 数据链路层:帧与MAC

数据链路层在物理层之上,主要解决两个问题:怎么封装成帧、怎么识别设备。它分为两个子层:LLC和MAC。我们重点讲MAC子层。

2.2.1 数据链路层功能

  • 成帧:把网络层的数据包封装成帧,加头加尾。
  • 差错控制:通过CRC校验,检测帧是否损坏。
  • 流量控制:防止快速发送方淹没慢速接收方。
  • 介质访问控制:解决共享介质上“谁先发”的问题。

我在做Wi-Fi协议分析时,介质访问控制的冲突避免机制特别关键。有线以太网是CSMA/CD,无线是CSMA/CA。两者设计哲学不同,但都为了一个目的:别撞车。

2.2.2 以太网帧结构

最常用的以太网帧是DIX v2格式(也叫Ethernet II)。结构如下:

+---------+---------+-----------+---------+----------+------+
| 前导码   | 目的MAC | 源MAC     | 类型    | 数据/Payload | FCS  |
| (8字节)  | (6字节) | (6字节)   | (2字节) | (46-1500字节)|(4字节)|
+---------+---------+-----------+---------+----------+------+
  • 前导码:7字节同步 + 1字节定界符。
  • MAC地址:目的和源地址,各6字节。
  • 类型:上层协议类型(如0x0800 = IP)。
  • 数据:最小46字节,最大1500字节(MTU)。
  • FCS:CRC校验,接收方用它检测帧是否出错。

重要提醒: 我曾经遇到一个路由器转发异常问题。排查后发现,上层发送了小于46字节的数据包,链路层强行填充到46字节。接收方因为填充内容不符合预期,直接丢弃。后来调整了上层应用配置才解决。记住,帧长度不要小于64字节(包括14字节头部 + FCS),否则会被视为“冲突碎片”。

2.2.3 MAC地址

MAC地址是网卡的“身份证”。48位,前24位是组织唯一标识符,后24位由厂商分配。通常用16进制书写,如 00:1A:2B:3C:4D:5E。

  • MAC地址是二层地址,只在本地网络有效。
  • 交换机依靠MAC地址表转发帧。
  • 广播地址是 FF:FF:FF:FF:FF:FF。

你可以用 ipconfig /all(Windows)或 ifconfig(Linux)查看本机MAC地址。我个人习惯在排查ARP问题时,先用 arp -a 看看缓存里的MAC映射。

2.3 本章知识体系图:物理层 & 数据链路层

下面这张SVG图帮你梳理核心概念及它们之间的关系:

物理层 & 数据链路层核心体系 物理层 传输介质 信号编码 双绞线/光纤 NRZ/曼彻斯特 数据链路层 帧结构 MAC地址 差错控制 介质访问控制 承上启下 工程师重点关注 1. 物理层:关注介质类型、信号质量、线缆长度。 2. 数据链路层:熟悉帧格式、MAC地址表、差错检测。 3. 常见故障:CRC错误(物理层)、MAC地址表溢出(二层)。 4. 诊断工具:mii-tool、ethtool、wireshark。

2.4 常见故障排查思路

  • 链路不通:先看网口指示灯。亮不亮?闪烁正常吗?不亮就查物理连接。
  • CRC错误暴增:大概率是线缆质量差、过长或接触不良。换线试试。
  • MAC地址漂移:交换机关联表不稳定,常由环路或ARP欺骗引起。查STP和ARP表。

我的经验: 有一次诊断一个间歇性断网问题,ping路由器偶尔超时。我直接看交换机的MAC地址表,发现某个端口在短时间内学习到同一个MAC地址的多个端口。最后定位到用户私接小交换机导致环路。STP没配,直接广播风暴。嗯,你们以后看到MAC地址反复跳变,先怀疑环路。

2.5 小结

这一章我们把物理层和数据链路层的关键点过了一遍:从双绞线到光纤,从NRZ编码到曼彻斯特编码,从以太网帧到MAC地址。这两层是整个网络通信的基石。你可以试试在Wireshark里抓个包,看看以太网帧的头部,找找MAC地址和类型字段。实践出真知。