Willson Chen

Stay Hungry, Stay Foolish.

OSI – 数据链路层

网络原理

数据链路层

概念

链路:从一个节点到相邻节点的一段物理线路,中间没有任何其他的交换节点。
数据链路:把实现通信协议的硬件和软件加到链路上,构成数据链路。
桢:数据链路层传送的数据单元。

处理过程

  • 节点A接收网络层交下来的IP数据包添加首部和尾部封装成桢。
  • 通过数据链路发送给节点B。
  • 节点B接收桢并校验,若无差错则提取IP数据包给上层,否则丢弃。

封装成桢

  • 添加首部和尾部,进行桢定界。
  • 桢定界符,SOH首部,EOH尾部。
  • MTU,最大传输单元,桢数据部分的最大长度。

透明传输

  • 数据链路层对于上层来说是透明的,即无感知的。
  • 需解决数据中出现SOH和EOH时的转义。
  • 方法是在之前加入一个转义字符,如ESC。

差错校验

  • 通信链路可能出现比特差错。
  • 误码率EBR:错误比特数/总传输比特数。
  • CRC循环冗余校验算法,特点开销小漏检率非常低。
  • 差错校验仅能做到无差错接受,无法做到无差错传输。
  • 凡是接受的桢可以认为接近1的概率没有产生差错。

CRC

  • 收发双方约定一个生成多项式。
  • 发送方将数据结合多项式计算校验码附加到待传输数据后面发送给接收方。
  • 接收方通过多项式计算数据是否产生了误码。
  • 多项式用于构造除数,数据作为被除数补 0 后做除法运算,余数就是校验码。
  • 校验的时候再做一次除法,余数为 0 则数据正确。

差错控制

  • 问题:桢丢失、桢重复、桢失序
  • 解决方法:桢编号、确认和重传
  • 数据链路层一般情况只提供差错校验,差错控制需要上层协议提供。
  • 根据通信链路质量
    • 质量好,协议不使用确认和重传
    • 质量差,协议使用确认和重传

点对点(PPP)协议

  • 应用场景:光猫拨号上网。
  • 封装成桢:
    • 桢首尾都是 0x7E(01111110)。
    • MTU最大 1500 字节。
  • 透明传输:
    • 串行传输时采用零比特填充解决透明传输,连续5个1后填入0。
    • 并行传输时采用字节填充解决透明传输。

广播信道协议

  • 应用场景:局域网通信
  • 封装成桢:
    • 以太网通信采用 MAC 桢。
    • 包括目标地址、来源地址、类型、数据和校验码。
    • MAC帧在物理层传输时会加上前同步码和帧定界符。
    • 前同步码是7个字节的01010101,作用是使接收方时钟同步。
    • 帧定界符是 0xD5,作用是标识帧的开始。
    • MAC地址(网卡物理地址)48 位,由统一机构分配确保唯一。
    • 包括单播桢、广播桢、和组播桢。
    • 广播桢 MAC 目的地址全是 1。

总线型

  • 共享信道,存在碰撞
  • 需采用CSMA/CD协议(载波监听多点接入/碰撞检测)
    • 多点接入:多个计算机多点接入一根总线上。
    • 载波监听:在发送数据前先监听信道是否空闲。
    • 碰撞检测:发送数据时检测到总线忙则等待随机时间后再发送。
  • 只支持半双工(交替),不支持全双工。
  • 集线器作用等同总线。
  • 总线型网络已经淘汰。

交换机

  • 独享信道,不存在碰撞,支持全双工。
  • 工作原理,MAC 地址表,泛洪、转发、丢弃。
  • MAC 地址表
    • 是交换机端口和 MAC 地址的映射表。
    • 存在于内存,关机清除,开机自学习。
    • 学习过程是记录MAC 桢的源地址和端口的映射。
    • 存在老化机制防止过大,每次有数据进入则重置倒计时5分钟。
  • 泛洪过程是广播MAC 桢,转发过程是查找 MAC 地址表,转发到目的端口。
  • 多个交换机相连同样可以实现MAC 桢转发。
  • 网桥是两端口交换机。

VLAN

  • VLAN 是虚拟局域网。
  • 用于在逻辑上划分广播域,提高安全性和减少垃圾流量。
  • VLAN 内部是二层通信。
  • 不同 VLAN 之间无法二层通信,只能进行三层通信。
  • 支持 VLAN 的 MAC 桢中头部包含 VLANID,长度 12 位。