当你打开一个网页时,应用看到的是一次端到端通信,链路层看到的却是一连串相邻节点之间的交接:笔记本把帧交给无线接入点,接入点交给交换机,交换机交给路由器,之后每经过一条链路都要再完成一次局部传输。
网络层数据报好比一件需要跨城运输的货物,链路层帧则是适合当前路段的运输包装。同一个数据报可以先装进无线帧,再装进以太网帧,最后进入其他点到点链路的帧。路段变了,帧头、帧尾和接入规则会变;数据报承担的端到端含义不因此改变。

链路层解决的是“怎样跨过当前这一跳”,网络层解决的是“下一跳应当走向哪里”。把这两个问题分开,是理解交换机、路由器、MAC 地址和 IP 地址分工的关键。
只要设备运行二层协议,就可以把它看成链路层节点,主机、路由器、交换机和无线接入点都在此列。连接相邻节点的通信通道称为链路。链路可能是双绞线、光纤、无线信道、同轴电缆,也可能只是两台路由器之间的一条点到点连接。
链路层的基础任务是把一个网络层数据报从当前节点送到相邻节点。具体协议可以按需要组合下列服务:
在误码率很低的有线链路上,可靠交付可能得不偿失,帧损坏后直接丢弃即可;在干扰明显的无线链路上,就地重传往往比让端系统重新传整段数据更高效。因此,“链路层是否可靠”没有统一答案,它由具体链路的特性和协议设计决定。
主机中的链路层并非只在操作系统里,也并非完全固化在硬件里。网卡控制器承担时间敏感且重复性强的工作,例如形成帧、执行介质接入、计算检错字段、接收比特流并识别帧;驱动程序则在 CPU 上运行,准备地址与描述符、配置控制器、处理异常,并把收到的数据报交给网络层。
发送时可以把过程拆成四步:
接收方向正好相反:网卡收齐帧后先检查格式和错误;通过检查的帧被剥去二层封装,数据报写入内存;驱动再把它交给网络层。高速网卡常用 DMA、收发队列、校验和卸载、分段卸载和中断合并降低 CPU 开销,但这些优化不改变“硬件处理帧、软件衔接协议栈”的基本分工。

信号衰减、电磁干扰和硬件噪声都可能造成比特翻转。发送方因此不只发送数据位 D,还会依据 D 计算额外的检错位 EDC;接收方对收到的 D' 和 EDC' 再做检查。检错机制能够让未检出的错误概率很低,却不能把它降为绝对零。
单比特偶校验会补一位,使整个码字中 1 的数量为偶数。任意一次单比特翻转都会改变奇偶性,因此必然能被发现;若偶数个比特同时翻转,奇偶性可能保持不变,错误就可能漏过。二维奇偶校验把数据排成矩阵,分别为每行、每列计算校验位。单个比特出错时,异常行和异常列的交点直接指出错误位置,因此能够纠正一个比特错误;某些成组错误也能被检测,但仍存在特定漏检模式。
校验和则把数据划分成固定宽度的字,进行一补码加法,再把结果取反。它适合用软件实现,计算代价较低;链路层硬件通常更偏爱检错能力更强的 CRC。选择检错方法,本质上是在冗余开销、计算成本和漏检概率之间取舍。

循环冗余校验把比特串看成系数只能为 0 或 1 的多项式,并采用模 2 运算。模 2 加减都等价于异或,不产生进位或借位。发送方与接收方事先约定生成比特串 G,其最高位和最低位都应为 1。若 G 有 r+1 位,发送方就在数据 D 后附加 r 位余数 R,使 D·2^r XOR R 能被 G 整除。
计算 R 的步骤如下:
D 后补 r 个 0,得到待除数 D·2^r。G 异或,为 0 时向后移动。G 位的余数,并在左侧补零到 r 位,这就是 R。G 除完整码字。余数非零即可断定帧已损坏;余数为零表示通过检查,但不是密码学意义上的真实性证明。CRC 对突发错误尤其有效。恰当选择的 G 可以发现所有单比特错误、许多双比特错误、任意奇数个错误,以及长度不超过 r 的突发错误。它的目标是发现偶发传输损坏,不是抵抗主动攻击:攻击者若能同时修改数据和 CRC,仍可构造通过检查的新帧。
点到点链路只有一对收发端,接入规则很简单。广播链路却由多个节点共享:某节点发出的帧可以被信道上的多个节点听到;若两个节点同时发送,信号在接收端叠加,帧可能全部失效。这就是多路访问问题。
理想的多路访问协议应满足四点:只有一个节点发送时,它能使用全部速率 R;有 M 个活跃节点时,长期平均速率接近 R/M;协议不依赖单点故障明显的集中协调者;实现简单、同步成本低。现实方案很难同时达到所有目标,因此形成了信道划分、随机接入和轮流发送三条路线。

时分复用把时间切成帧,再把每帧分成固定时隙;频分复用把频谱切成互不重叠的频带;码分多址让节点使用不同编码,在同一时间和频带上发送,再由接收端按码分离。它们能够消除冲突,但一个节点空闲时,其固定份额往往无法立刻让给别人。
随机接入协议允许节点按需竞争。时隙 ALOHA 只允许在时隙边界发送,碰撞后以概率 p 在后续时隙重试,最高长期效率约为 1/e;纯 ALOHA 不要求时隙同步,但易受碰撞影响的时间窗翻倍,效率更低。CSMA 在发送前先监听信道,不过传播时延意味着“我此刻听到空闲”不等于“远端也没有正在到来的帧”。CSMA/CD 还会边发送边检测碰撞,检测到后立即停止并执行二进制指数退避。交换式全双工以太网中,每条链路不再是多站共享碰撞域,CSMA/CD 因而基本退出实际工作路径。
轮询由主节点依次邀请各节点发送,公平但控制者故障会影响全局;令牌传递让一个特殊控制帧在节点间流转,拿到令牌者才可发送,它同样需要处理令牌丢失和节点故障。
有线电视接入把多种思想组合起来。下行信道通常由头端向用户广播;上行被划分为多个迷你时隙,由头端通过控制消息分配。新加入或尚未获分配的用户会在专用请求时隙随机竞争,若请求碰撞,再用退避重试。因此 DOCSIS 既不是纯划分,也不是纯随机接入,而是“集中调度数据 + 随机竞争请求”。

IPv4 地址体现网络层位置,路由器据此把数据报送向目标网络;MAC 地址用于当前局域网的一跳交付。常见以太网 MAC 地址为 48 位,通常写成六组十六进制数,例如 3c:22:fb:71:08:a4。全 1 的 ff:ff:ff:ff:ff:ff 是广播地址。
当主机准备发送数据报时,先依据目的 IP 和子网掩码判断目标是否在本子网:
ARP 负责在同一 IPv4 子网内把 IP 映射为 MAC。主机先查 ARP 缓存;没有表项时,广播“谁拥有这个 IP”;目标以自己的 MAC 回应,查询方把映射暂存。ARP 表项会老化,因为设备和接口可能变化。ARP 不验证回应的真实性,因此生产网络还会使用动态 ARP 检测、端口安全等措施降低欺骗风险。

ARP 解析的不是“最终互联网服务器的 MAC”。跨网段通信时,发送主机只需知道下一跳网关的 MAC;每经过一个路由器,下一段链路都会重新选择新的源 MAC 和目的 MAC。
以太网帧由若干固定部分组成:
以太网提供的是无连接、不确认服务:发送前不与接收网卡握手,普通帧正确到达后也不返回链路层确认;检测到损坏帧便丢弃。若上层采用 TCP,丢失可由端到端重传恢复;若应用使用无可靠机制的 UDP,就可能直接感知丢包。
早期以太网常见总线和集线器,多个节点共享碰撞域,因此需要 CSMA/CD。现代局域网采用交换机形成星形拓扑,每台主机与交换机端口之间是一条独立的全双工点到点链路,可以同时收发而不发生传统碰撞。不同速率与介质的以太网仍保持统一帧格式,这种兼容性是它长期演进的重要基础。
交换机按“MAC 地址—端口—老化时间”维护转发表,关键点是从收到帧的源 MAC学习,而不是从目的 MAC 猜测位置。每到一帧,交换机先把源地址与入端口写入或刷新表项,再查询目的地址。
转发决策只有三类:目的地址已知且对应另一端口,就定向转发;目的地址所在端口正是入端口,就过滤;目的地址未知或为广播,就向同一广播域内除入端口外的其他端口泛洪。表项经过一段时间未被刷新会老化删除,从而适应设备移动和拓扑变化。
交换机的每个端口都是独立碰撞域,并可并行转发多个互不冲突的帧。它是即插即用设备,不要求管理员预先录入所有 MAC。多台交换机连接后仍可自学习,但若二层拓扑存在环路,广播和未知单播可能无限循环,因此需要生成树或受控的多路径机制。

如果所有端口都属于一个二层广播域,ARP 等广播会到达全部主机,部门之间也缺乏清晰边界。VLAN 按逻辑把交换端口分组,同一 VLAN 内可以二层转发,不同 VLAN 之间必须经过三层转发。这样既限制广播范围,也让网络组织不再受物理座位限制。
接入端口通常只属于一个 VLAN,连接终端时收发的是普通以太网帧;干道端口需要同时承载多个 VLAN,常用 802.1Q 在帧中插入 4 字节标签。标签包含协议标识、3 位优先级、丢弃资格位和 12 位 VLAN 标识。交换机依据标签把帧留在正确的广播域,转发到接入端口时通常移除标签。
两台交换机之间不必为每个 VLAN 单独拉一根线,一条干道就能携带多个 VLAN。若 VLAN A 的主机要访问 VLAN B,数据必须交给路由器或三层交换机;此时可以在策略边界应用访问控制。VLAN 提供隔离和组织能力,但它本身不是加密,不能替代身份认证、访问控制或端到端保护。
多协议标签交换在二层帧头和网络层数据报之间插入一个短标签。支持 MPLS 的入口路由器依据目的前缀、业务类别等条件给分组压入标签;核心设备主要查标签转发表,完成“入标签、入接口到出标签、出接口”的替换和转发;出口再弹出标签,恢复普通 IP 转发。
MPLS 标签项包含 20 位标签、3 位流量类别、栈底标志和生存时间。标签只在一个受控域内有局部意义,同一个数字在不同链路上可代表不同转发等价类。标签栈允许把多个层次的隧道组合起来。
与只按目的 IP 最长前缀匹配相比,MPLS 更容易让运营者建立显式路径、实施流量工程、快速绕过故障,并承载虚拟专用网络。它并没有取消 IP:入口仍需把分组归类,出口仍要继续进行网络层转发,控制平面也要负责分发可用路径和标签绑定。
数据中心把数万到数十万台主机组织成机架。每个机架的服务器连接到机架顶交换机,机架顶交换机再向上连接聚合层和核心层。传统树形层次结构容易在高层链路形成瓶颈,也让上层设备故障影响大片服务器。
现代设计更强调高互联和多条等价路径。叶脊结构中,每台叶交换机连接每台脊交换机,任意两个机架通常只需经过“叶—脊—叶”即可互通。多路径路由把不同流分散到多条等价路径,既提高总容量,也允许在单链路故障后快速换路。若多个大流恰好被哈希到同一条路径,仍可能发生局部拥塞,因此还需要更细粒度的负载均衡和遥测。
数据中心网络还承担外部请求分发。边界路由器接入公网,负载均衡器依据虚拟服务地址把请求交给具体服务器,并可结合服务器负载、健康状态和会话信息做选择。主机虚拟化又让虚拟机或容器的逻辑地址与物理位置解耦,覆盖网络、软件交换和集中控制由此成为常见组成部分。
可靠性不能只靠“多放一台设备”。网络还要冗余链路、快速故障检测、容量规划、自动配置、端到端遥测与可回滚变更配合;否则冗余设备也可能因同一配置错误同时失效。

把前面的概念串起来,可以观察一台刚接入校园以太网的笔记本第一次访问网站时发生什么。
这条流程也解释了几个常见困惑:DHCP 在不知道本机 IP 时依靠广播起步;DNS 解析名称但不解析 MAC;ARP 只服务当前局域网的一跳;交换机不会读取 TCP 端口决定普通二层转发;每一跳的 MAC 地址会改变,而端到端 IP 地址通常保持不变。
排查局域网问题时,可以按“帧是否正确、地址是否可达、转发范围是否正确”逐层收敛:
如果“能访问同网段,不能访问异网段”,优先检查默认网关、网关 ARP 和三层路由;如果“同一 VLAN 的部分主机互通、部分不通”,重点看端口 VLAN、MAC 学习和物理错误;如果“偶发大面积卡顿”,还要排查二层环路、广播风暴、链路拥塞和错误退避。
理解链路层的核心不是背诵字段,而是始终追问:当前帧从哪个相邻节点发往哪个相邻节点、接入权如何获得、错误怎样发现、目的 MAC 如何得到、交换设备依据什么表项处理。围绕这五个问题,链路层现象就能被还原成清晰的因果链。