1.链路层简介
2.链路层服务
3.链路层节点的连接方式
4.为什么有的链路提供可靠的数据服务, 有的不能
1.链路层简介
数据链路层(一个子网)负责将数据报从"一个节点通过链路将发送到相邻的物理节点"; 当今主流的交换式网络中, 一个目标
明确的帧根本不会被"无关"的节点收到
1).古老的共享式网络(使用集线器的网络)
a.工作方式
集线器是一个物理层设备, 它不懂MAC地址; 它收到一个帧后, 会简单地复制到所有其他端口; 这就像在一个房间里, 一个人
说话, 所有人都能听到
b.节点行为
每个节点的网卡都会收到这个帧, 网卡检查目标MAC地址; 如果匹配自己, 就收下, 如果不匹配自己, 就直接丢弃
c.结果: 只有真正的目标节点会处理这个帧, 其他节点都丢弃它; 虽然效率低下且不安全, 但网络是通的
2).现代交换网络(使用交换机的网络)
在当今的网络中,交换机取代了集线器; 交换机是一个"链路层(二层)设备", 它非常智能;
交换机的核心能力: "它有一张MAC地址表, 记录了每个端口连接着哪个MAC地址的设备"
a.帧的出发
- 电脑A准备好帧, 目标MAC地址是电脑C的MAC, 源MAC地址是自己的
- 帧通过网线进入交换机的[端口1]
b.交换机的智能决策("关键步骤")
- 交换机在[端口1]收到帧, 它学习到: "源MAC地址(电脑A的MAC)来自[端口1]", 并更新它的MAC地址表
- 交换机查看帧的目标MAC地址(电脑C的MAC)
- 它去查询自己的MAC地址表: "电脑C的MAC地址在哪个端口"
- 如果它找到了, 比如记录显示电脑C在[端口3], 那么交换机会只将这个帧从[端口3]转发出去; 端口2、端口4等其他所有端
口都完全收不到这个帧
- 如果它没找到, 比如电脑C刚开机, 还没发送过数据, 交换机会采取"泛洪"策略, 即把这个帧从除了来源端口(端口1)之外
的所有端口广播出去
c.帧的到达
- 在"找到记录"的最佳情况下, 这个帧精准地从交换机的[端口3]送出, 直接到达电脑C
- 电脑C的网卡检查MAC地址: "哦, 这是我的地址!", 于是收下该帧
- 电脑B、电脑D等其他所有设备, 根本不知道这次通信的发生, 因为它们所在的端口2, 4...根本没有收到这个帧
2.链路层服务
1).成帧
a.是什么
将网络层传下来的数据包(IP数据报)的前后加上帧头和帧尾, 打包成一个完整的"帧"
b.为什么
帧头和帧尾包含了重要的控制信息, 比如:
- 帧开始/结束标志: 告诉接收方一个帧从哪里开始, 到哪里结束
- 源/目的MAC地址: 在局域网内标识发送和接收设备的物理地址
- 类型/长度字段: 标识帧内封装的是哪种上层协议的数据(如IP协议还是ARP协议)
2).链路接入(介质访问控制)
a.是什么
当多个设备共享同一个通信信道(比如同一条总线或同一个无线频率)时, 规定谁、在什么时候可以发送数据
b.为什么
如果没有规则, 大家同时发送数据就会产生"碰撞"(冲突), 导致所有数据都无法识别
3).可靠交付
a.是什么
确保数据帧能够无差错、不丢失、按顺序地到达接收方
b.为什么
物理层是不可靠的, 可能在传输过程中产生比特差错; 链路层通过确认和重传机制来弥补这个缺陷
c.注: 在出错率较低的有线介质(如现代以太网)中, 为了追求高效率, 通常不提供可靠交付服务, 而是将这个任务交给上层
的传输层(如TCP协议)去完成; 但在出错率高的无线链路中, 链路层通常会提供可靠交付服务
4).差错检测
a.是什么
检测数据在传输过程中是否发生了比特错误(如0变成1, 1变成0)
b.为什么
物理信道会受到各种干扰, 出错是不可避免的; 差错检测能发现出错的帧并将其丢弃
c.常用技术
- 奇偶校验: 简单但不完全可靠
- 循环冗余检验(CRC): 这是目前应用最广泛、检错能力极强的技术; 帧尾的帧检验序列就是通过CRC计算得出的
5).差错纠正
a.是什么
不仅能发现错误, 还能自动纠正一定数量的比特错误
b.为什么
在某些实时性要求高或重传代价大的场景(如深空通信)下使用
6).流量控制
a.是什么
协调发送方和接收方的数据发送与接收速度, 防止快的发送方淹没慢的接收方
b.为什么
接收方的缓冲区是有限的, 如果发送方发送太快, 接收方来不及处理, 就会导致数据帧被丢弃
7).半双工与全双工
a.半双工: 通信双方都可以发送和接收, 但不能同时进行(像对讲机), 链路层需要协调这种交替通信
b.全双工: 通信双方可以同时发送和接收(像电话), 链路层可以同时管理两个方向上的数据流
3.链路层节点的连接方式
1).点到点的连接方式
a.定义
两个网络节点之间通过一条专用的通信链路直接相连
b.形象比喻
就像你家和你的邻居家之间, 有一条专属的、不与他人共享的私人小路; 这条路上只有你们两家的车能走
c.特点
- 独占性: 整个链路的通信能力都被这两个节点独占
- 性能稳定: 没有其他节点竞争, 能可预测且稳定
2).多点连接
a.定义
超过两个的网络节点共享同一条通信链路
b.形象比喻
就像一条公共主干道, 路上有很多车辆(数据), 它们都来自或去往这条道路沿线的不同人家(节点); 每辆车必须有明确的地
址, 才能知道在哪家门口停下
c.特点
- 共享性: 所有节点共享链路的带宽
- 需要地址标识: 数据在共享链路上传播, 每个节点必须检查数据的目标地址, 如果是发给自己的才接收
- 可能存在冲突: 当多个节点同时发送数据时, 会发生"碰撞"
4.为什么有的链路提供可靠的数据服务, 有的不能
a.不可靠服务: 就像普通快递, 快递员把包裹送到你家门口, 按个门铃就走了; 他不确认你是否收到, 也不管包裹内容对不
对; 这种方式速度快、成本低
b.可靠服务: 就像贵重物品快递, 每到一个中转站都要签字确认, 送到你手上时必须你本人签收, 并当场开箱验货; 这种方
式速度慢、成本高, 但非常可靠
1).不可靠的链路层(常见于有线网络)
a.场景
光纤、高质量双绞线(如以太网网线)
b.原因
这些物理介质本身误码率极低, 出错的概率非常小; 如果在几乎不出错的链路上, 还坚持在每一段都进行繁琐的确认和重传,
会带来巨大的性能开销和延迟, 得不偿失
b.设计哲学:"信任底层,出错由上层负责", 链路层只负责尽力传输, 如果偶尔出了错, 就由更上层的比如传输层的TCP协
议来负责发现和重传; 这样整体效率最高
c.例子: 以太网的MAC层就是典型的不可靠服务, 它只负责差错检测(发现错误帧就丢弃)但不负责重传
2).可靠的链路层(常见于无线网络)
a.场景
无线Wi-Fi、蓝牙、卫星链路、早期质量差的电话线
b.原因
这些介质非常容易受到干扰、遮挡、多径效应的影响, 导致信号衰减和比特错误, 误码率很高; 如果在这种不可靠的链路上还
采用"尽力而为"的方式, 那么大量出错的帧会被丢弃, 最终都需要由TCP等上层协议来重传; 而TCP的重传是针对整个端到端
的数据段, 效率很低
c.设计哲学: "就地解决, 不让烂摊子留给上层", 在错误发生的地方(链路层)立刻进行重传
d.例子: Wi-Fi(802.11协议)在它的链路层就有确认帧和重传机制, 发送方发送一帧后, 必须在规定时间内收到接收方的ACK
确认帧, 否则就立刻重传