物理层与数据链路层:从比特到帧的跨越
各位同学,咱们今天聊聊网络最底层的两兄弟——物理层和数据链路层。很多人觉得这两层太“硬”,没什么好学的。我刚开始也这么想,直到有一次在数据中心排障,发现一根网线弯折角度过大导致大量CRC错误……嗯,从那以后我再也不敢小看物理层了。
物理层基本概念
物理层,说白了就是解决“怎么把0和1从一个设备传到另一个设备”的问题。它不关心这些比特代表什么,只关心信号能不能过去。
我个人习惯把物理层拆成三个要素来看:
- 机械特性:接口长什么样,多少根针脚。RJ45接口大家应该都见过,8根针脚,但实际只用4根。
- 电气特性:用多少伏电压表示0和1。比如以太网用的是差分信号,抗干扰能力强。
- 功能特性:哪根线负责发,哪根线负责收。
常见的物理层介质有双绞线(Cat5e/Cat6)、光纤、同轴电缆。现在数据中心里光纤用得越来越多,因为速率高、距离远。你想想看,100Gbps的链路,用铜缆能传几米?光纤可以传几十公里。
数据链路层功能
物理层把比特传过去了,但问题来了——我怎么知道这些比特是发给我的?数据链路层就是来解决这个问题的。
数据链路层的核心功能我总结为三点:
- 封装成帧:把比特流切分成一个个帧,加上头尾标记。
- 透明传输:如果数据里出现了和帧定界符一样的字节,得想办法转义。
- 差错检测:用CRC校验,发现错误就丢弃。
关键概念: 数据链路层不保证可靠传输。它只做检错,不做重传。重传是上层(TCP)的事。这叫“各司其职”。
我记得刚入行时有个误区,以为数据链路层会保证数据一定送到。后来被师傅骂了一顿——链路层只保证“我尽力了”,不保证“你一定收到”。
以太网协议详解
以太网是目前最主流的局域网技术。从10Mbps到400Gbps,它统治了有线网络几十年。为什么会这样?因为它简单、便宜、不断演进。
以太网的帧结构是这样的:
| 前导码 | SFD | 目的MAC | 源MAC | 类型/长度 | 数据 | FCS |
|---|---|---|---|---|---|---|
| 7字节 | 1字节 | 6字节 | 6字节 | 2字节 | 46-1500字节 | 4字节 |
前导码和SFD是物理层同步用的,真正数据链路层关心的是从目的MAC开始。类型字段如果大于0x0600,表示上层协议类型(比如0x0800是IP);如果小于等于0x0600,表示数据长度。
MAC地址与帧结构
MAC地址是数据链路层的“身份证”。48位,前24位是OUI(厂商代码),后24位是厂商分配的序列号。理论上全球唯一。
但这里有个坑——MAC地址是可以伪造的。我在做安全审计时经常发现有人改了MAC地址绕过准入控制。所以别把MAC地址当安全凭证用。
MAC地址有三种类型:
- 单播:第一个字节最低位为0,发给单个设备
- 多播:第一个字节最低位为1,发给一组设备
- 广播:全F(FF:FF:FF:FF:FF:FF),发给所有设备
你想想看,交换机收到一个广播帧会怎么做?它会从所有端口转发出去(除了接收端口)。这就是广播风暴的根源。
交换机工作原理
交换机是数据链路层的核心设备。它不像集线器那样无脑转发,而是根据MAC地址表做决策。
交换机的三个核心动作:
- 学习:收到帧时,记录源MAC地址和对应端口
- 转发:查MAC地址表,找到目的端口就单播转发
- 泛洪:找不到目的MAC,就从所有端口转发(除了接收端口)
下面这张图展示了交换机的基本工作流程:
交换机的MAC地址表是有容量限制的。我记得有一次在大型园区网里,MAC地址表被撑爆了,导致交换机开始泛洪所有流量——网络性能直接崩了。后来用VLAN做了隔离,问题才解决。
核心要点: 交换机是“智能”的二层设备,但它不聪明到能防环路。环路问题必须靠STP或堆叠技术解决。这是很多新手容易忽略的点。
最后说一句,数据链路层虽然“低”,但它是整个网络的基石。物理层出问题,上层再好的协议也白搭。我见过太多人一上来就调TCP参数,结果发现是网线没插紧——这种笑话,咱们别犯。