第2章:物理层与数据链路层——从比特流到可靠帧

大家好,我是老张。今天咱们聊聊网络最底层的两个兄弟——物理层和数据链路层。很多初学者觉得这两层太底层、太枯燥,其实不然。我做了十几年网络,遇到过太多诡异的问题,最后追根溯源,都栽在这两层上。

说白了,物理层管的是「怎么把比特发出去」,数据链路层管的是「怎么让这些比特在相邻设备间可靠地传递」。你想想看,没有这两层打底,TCP/IP再牛也白搭。

2.1 物理层:比特流的搬运工

物理层的作用,用一句话概括:在传输介质上实现原始比特流的透明传输。它不关心比特代表什么含义,只负责把0和1从一头搬到另一头。

2.1.1 物理层的四大特性

我习惯把这四个特性记成「机、电、功、过」——机械、电气、功能、过程。咱们一个个看:

特性 描述 实际例子
机械特性 接口的形状、尺寸、引脚数量 RJ45网口的大小、8根针脚排列
电气特性 电压范围、信号电平、传输速率 以太网用差分信号,±2.5V
功能特性 每根引脚的作用 1、2脚发送,3、6脚接收
过程特性 事件发生的顺序 先发前导码,再发数据帧
我的经验:有一次机房网络间歇性断连,排查了三天,最后发现是网线水晶头压接时第7、8脚虚焊。物理层的问题往往最隐蔽,也最让人抓狂。

2.1.2 传输介质

常见的传输介质就三种:双绞线、光纤、同轴电缆。现在同轴电缆基本退役了,咱们重点说前两个。

  • 双绞线(UTP/STP):家用、办公最常见。Cat5e支持千兆,Cat6支持万兆。我建议新布线至少用Cat6,别省那点钱。
  • 光纤:单模传输距离远(几十公里),多模适合短距离(几百米)。数据中心现在普遍用单模。
注意:双绞线传输距离理论100米,超过这个距离信号衰减严重。我曾经见过有人用150米网线连摄像头,结果丢包率30%——这不是协议能解决的问题,物理层已经决定了。

2.2 数据链路层:让不可靠的链路变得可靠

物理层只管发比特,但比特在传输过程中可能出错、丢失、乱序。数据链路层就是来解决这些问题的。

它的核心功能有三个:封装成帧、透明传输、差错检测。嗯,这里要注意,数据链路层不保证可靠传输(那是传输层的事),它只保证「帧」在相邻节点间正确送达。

2.2.1 封装成帧

把网络层下发的IP数据包,加上头部和尾部,变成一个「帧」。帧的结构大致如下:

+--------+--------+--------+--------+--------+
| 前导码 | 目标MAC | 源MAC | 类型/长度 | 数据 | FCS |
+--------+--------+--------+--------+--------+
  8字节    6字节    6字节    2字节   46-1500  4字节

前导码用来同步时钟,FCS是帧校验序列。中间那46-1500字节的数据部分,就是IP包。为什么最小46字节?因为要保证帧足够长,避免冲突检测出问题——这是以太网的设计哲学。

2.2.2 差错检测

数据链路层用CRC(循环冗余校验)来检测错误。发送方计算一个校验值放在FCS字段,接收方重新计算,不一致就丢帧。

我曾经在项目中遇到过一个问题:某交换机端口频繁报CRC错误,换了网线、换了模块都没用。最后发现是交换机电源老化,导致信号电平不稳定。你看,问题又绕回物理层了。

2.3 以太网协议:统治局域网的王者

以太网是目前最主流的局域网技术。它定义了数据链路层的帧格式和介质访问控制方法。

2.3.1 CSMA/CD(载波监听多点接入/碰撞检测)

早期的以太网用同轴电缆,所有设备共享一条总线。怎么避免同时发送导致冲突?CSMA/CD的规则很简单:

  1. 先听再说:发送前监听信道,空闲才发
  2. 边发边听:发送时持续检测是否有冲突
  3. 冲突则停:检测到冲突立即停止,发一个阻塞信号
  4. 随机等待:等待随机时间后重试

现在全双工交换网络普及后,CSMA/CD基本用不上了。但理解它有助于你明白以太网的设计初衷。

2.4 MAC地址与ARP协议

2.4.1 MAC地址

MAC地址是数据链路层的设备标识,48位,通常写成6组十六进制数,比如 00:1A:2B:3C:4D:5E。前24位是厂商代码(OUI),后24位是设备序列号。

重要概念:MAC地址是「本地地址」,只在同一个广播域内有效。IP地址是「全局地址」,用于跨网络通信。两者分工不同,缺一不可。

2.4.2 ARP协议

ARP(地址解析协议)解决一个问题:已知IP地址,如何找到对应的MAC地址?

工作流程很简单:

  1. 主机A广播一个ARP请求:「谁的IP是192.168.1.2?请告诉我你的MAC地址」
  2. 所有主机都收到这个广播,但只有IP匹配的主机B回应
  3. 主机B单播回复:「我是192.168.1.2,我的MAC是00:1A:2B:3C:4D:5E」
  4. 主机A把映射关系写入ARP缓存,下次直接查表

ARP缓存默认存活时间2-4分钟。我建议你经常用 arp -a 命令看看缓存,有时候网络故障就是ARP表项冲突导致的。

避坑指南:我曾经遇到一个案例,某员工手动设置了静态ARP,结果IP地址换了设备后,交换机还按旧MAC转发,导致该员工无法上网。排查了半小时才发现是ARP缓存没刷新。记住:静态ARP要慎用!

2.5 交换机工作原理

交换机是数据链路层的核心设备。它不像集线器那样无脑转发,而是根据MAC地址表智能转发。

2.5.1 三大核心功能

  • MAC地址学习:记录每个端口连接的设备MAC地址
  • 帧转发/过滤:根据目标MAC查表,只转发到对应端口
  • 环路避免:通过STP(生成树协议)防止广播风暴

2.5.2 转发流程

假设交换机刚启动,MAC地址表是空的:

  1. 主机A发帧给主机B,目标MAC是B的地址
  2. 交换机查表,没找到B的MAC——于是向所有端口泛洪(除了接收端口)
  3. 主机B收到帧并回复,交换机记录B的MAC对应端口
  4. 下次A再发帧给B,交换机直接转发到对应端口,不再泛洪

你想想看,这个过程是不是很像「记性不好的人,第一次问路,第二次就记住了」?

2.5.3 交换机的转发方式

方式 原理 延迟 适用场景
直通转发 只检查目标MAC就转发 低 对延迟敏感的场景
存储转发 接收完整帧,校验无误再转发 高 需要高可靠性的网络
碎片隔离 检查前64字节,过滤冲突碎片 中 早期以太网使用

我个人习惯在核心层用存储转发,接入层用直通转发。这样既保证了核心的可靠性,又兼顾了接入的性能。

2.6 本章知识体系

下面这张图展示了物理层和数据链路层的核心逻辑关系:

物理层与数据链路层知识体系 物理层 四大特性:机械、电气、功能、过程 传输介质:双绞线、光纤、同轴电缆 核心任务:透明传输比特流 关键指标:带宽、距离、误码率 数据链路层 封装成帧:添加头部和尾部 差错检测:CRC校验 MAC地址与ARP协议 交换机:MAC学习、转发、STP 提供服务 物理层负责传输,数据链路层负责可靠传输——两者缺一不可

这张图把两层的核心职责和关键知识点串起来了。物理层是基础,数据链路层在它之上构建可靠的帧传输。你想想看,没有物理层,数据链路层就是空中楼阁;没有数据链路层,物理层传的比特就是一盘散沙。

我的建议:学习这两层时,多抓包看看。用Wireshark抓一个以太网帧,对照着帧结构看,比死记硬背强十倍。我曾经让学员抓自己电脑的ARP包,看完之后,对MAC地址和IP地址的关系就再也不会搞混了。

好了,这一章就到这里。物理层和数据链路层是网络通信的基石,理解透了,后面学网络层、传输层会轻松很多。记住:所有上层协议的可靠性,都建立在底层协议的扎实之上。

可可精品资料库