计算机网络——数据链路层

397 阅读10分钟

3.1 数据链路层功能概述

  1. 一些概念

    • 结点:主机和路由器
    • 链路:网络中两个节点之间的物理通道,链路的传输媒介有双绞线、光纤和微波。分为有线链路和无线链路。
    • 数据链路:网络中两个节点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。
    • 帧:链路层的协议数据单元,封装网络层数据报
  2. 数据链路层的功能

    数据链路层负责通过一条数据链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报

    • 功能一:为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务。
    • 功能二:链路管理,即连接的建立、维持、释放(用于面向连接服务)
    • 功能三:组帧
    • 功能四:流量控制
    • 功能五:差错控制

3.2 封装成帧和透明传输

image.png

  1. 封装成帧

    就是在一段数据的前后添加首部和尾部。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。

    image.png

  2. 透明传输

    透明传输是指不管传输的数据是什么样的比特组合,都应该能在链路上传送。当所传的数据中的比特组合恰好与某一控制信息是一样的时候,就必须采取适当的措施,使接收方不会将这样的数据误认为是某种控制信息。

    • 字符计数法:即在开头规定好了每个帧的长度

      image.png

    • 字符填充法:在开头和结尾填充特定数字

      image.png

      image.png

      • 当传输的帧是文本文件组成的时候(即都是ASCII码),都可以传输过去
      • 当传输的帧是非ASCII码的文本文件组成时(二进制代码的程序或图像),采用字符填充法实习透明传输
    • 零比特填充法:

      image.png

    • 违规编码法

      image.png

    因为字节计数法的count字段脆弱,有差值会造成毁灭性的后果。字符填充法的是线上会有复杂性和不兼容性,目前比较普遍使用的是比特填充违规编码法

3.3 差错控制

  1. 什么是差错?

    • 错位:比特位出现错误,1变成0,0变成1
    • 帧错
      • 丢失
      • 重复
      • 失序
  2. 差错怎么来的?

    • 全局性:线路本身的电器特性
      • 解决办法:可以通过物理层提到的香农公式,提高信噪比(S/N)来减小误差
    • 局部性:外界短暂原因造成的冲击噪声,是产生差错的主要原因
      • 解决办法:编码技术
  3. 差错控制(比特错)的方法

(1)检错编码

  • 奇偶校验码

    image.png

  • 循环冗余码CRC

    image.png

(2)纠错编码

  • 海明码:发现双比特错,纠正单比特错

3.4 流量控制和可靠传输机制

  1. 较高的发送速度和较低的接受能力不匹配,会造成传输的错误,因此流量控制也是数据链路层的一项重要工作。

    • 数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。
    • 数据链路层流量控制手段:接受方收不下就不回复确认
    • 传输层流量控制手段:接收端给发送端一个窗口公告
  2. 流量控制的方法:

    • 停止-等待协议

    • 滑动窗口协议

      • 后退N帧协议(GBN)
      • 选择重传协议(SR)

    image.png

  3. 可靠传输、滑动窗口、流量控制

    • 可靠传输:发送端发送啥,接收端接受啥
    • 流量控制:控制发送速度,使接收方有足够的缓冲空间接受每一个帧
    • 滑动窗口:实现了流量控制(限制传输大小)和可靠传输(重传机制)

3.4.1 停止等待协议

image.png

  1. 无差错的情况下

    image.png

  2. 有差错的情况下

    • 数据帧丢失或检测到帧出错

    image.png

    • ACK丢失

    image.png

    • ACK迟到

    image.png

  3. 性能分析

    信道利用率太低

  4. 信道利用率

    image.png

3.4.2 流水线

rdt3.0是一个功能正确的传输协议,但是他的停等协议(等待接收方返回的ACK后才能进入等待上层调用的状态)的特殊性能也造成了效率较低的问题。

解决办法:不以停等的方式运行,允许发送方发送多个分组,无需等待确认。这种技术称为流水线在这里插入图片描述

流水线带来的影响:

  • 必须增加序号范围,因为每个分组必须有唯一的标识符
  • 协议的发送发和接收方必须缓存多个分组
  • 所需序号范围对缓冲的要求取决于数据传输协议如何处理丢失、损坏以及延时过大的分组。解决流水线差错恢复的两种基本方法是:回退N步(GBN)和选择重传(SR)

3.4.3 回退N步协议(GBN)

  1. 回退N步协议(GBN协议,滑动窗口协议):允许发送发发送多个分组不需要等待确认,但是未确认的分组数不能超过某个最大值N。接收方窗口为1。

  2. 设置N的原因:流量控制、拥塞控制

    若采用k个比特对帧编号,那么发送窗口的n应该满足 1<= n <= 2^k - 1。因为窗口尺寸过大会使得接收方无法区别新帧和旧帧。

  3. GBN协议响应的事件:

    • 发送方:
      • 当上层调用时
        • 窗口已满,告诉发送方等待一会
        • 窗口未满,产生一个分组并传送
      • 收到一个ACK
        • 窗口向右滑动
        • GBN协议中,对n号帧采用累计确认的方式,也就是收到了n号帧表示n号帧之前的所有帧都被接受到了。
      • 超时事件
        • 回退N帧的含义就是,当出现丢失和时延较长的帧的情况时,定时器会重新发送所有已发送但未被确认的帧。
    • 接收方:
      • 序号为n的分组被正确接收到,并且按序,为n发一个ACK
      • 其它所有情况,接收方丢弃该分组,并选择最近序列的分组重新发ACK

    image.png

例子:

image.png

3.4.4 选择重传协议(SR)

  1. GBN协议的问题:

    滑动窗口协议潜为了保证分组的正确顺序,对数据进行重传,但是考虑到窗口长度和带宽较大的情况,就会造成重复传递带来的效率问题。

  2. 选择重传响应的事件

    • 发送方:
      • 当上层调用时
        • 窗口已满,告诉发送方等待一会
        • 窗口未满,产生一个分组并传送
      • 收到一个ACK
        • 如果收到的窗口最小序号,窗口向右滑动到下一个未被确认的帧。
        • 其他情况对接收到的帧进行缓存。
      • 超时事件
        • 当每个帧都有自己的定时器,当超时时重传一个帧。
    • 接收方:
      • 接到一个帧不管序号如何都进行缓存,并返回一个确认帧,直到滑动窗口内的所有帧都被接受才将一批帧交付给上层,再进行窗口滑动。

    image.png

例子:

image.png

3.5 介质访问控制

  1. 传输数据使用的两种链路

    • 点对点链路
      • 两个相邻结点通过一条链路相连,没有第三者
      • 应用:PPP协议,常用于广域网
    • 广播式链路
      • 所有主机共享介质
      • 应用:早起的以太网、无线局域网,常用于局域网
      • 经典拓扑结构:总线型、星型
  2. 介质访问控制

    采取一定的措施,使得两对结点之间的通信不会出现互相干扰的情况

    image.png

    对比:

    image.png

3.5.1 信道划分介质访问控制

信道划分介质访问控制:将使用介质的每个设备与来自同一信道上的其他设备的通信隔离,把时域和频域资源合理的分配给网络上的设备

image.png

  • 频分复用 FDM:所有用户在同样的时间占用不同的带宽资源。

    image.png

  • 时分复用 TDM:所有用户在不同的时间占用同样的频带宽度。

    image.png

    STDM是改进的时分复用,他可以动态的分配时隙

  • 波分复用 WDM:就是光的频分复用。

    image.png

  • 码分复用 CDM:在同一时间同一频率根据传输的数据码进行区分

3.5.2 随机访问介质访问控制

  • ALOHA协议

    • 纯ALOHA协议

      image.png

    • 时隙ALOHA协议

      image.png

    • 信息传输的效率低

  • CSMA协议(载波监听多路访问协议):发送帧之前,监听信道。

    • 如果信道忙线:推迟发送
    • 如果信道空闲:
      • 1-坚持CSMA

        image.png

      • 非坚持CSMA

        image.png

      • p-坚持CSMA

        image.png

      • 比较

        image.png

  • CSMA/CD协议(载波监听多点接入/碰撞协议)

    image.png

    • 传播时延对载波监听的影响:电磁波的传输需要时间,会造成冲突

      image.png

    • 重传机制

      image.png

    • 最小帧长,以太网的最短帧长是64B

      image.png

  • CSMA/CA协议(载波监听多点接入/碰撞避免协议)

    • 工作原理

      image.png

    • 对比CSMA/CD

      image.png

3.5.3 轮询介质访问控制

  • 轮询协议

    image.png

  • 令牌传递协议

    image.png

3.6 局域网

image.png

  1. 网络拓扑

    总线型较好,现在普遍使用

    image.png

  2. 传输介质

    image.png

  3. 介质访问控制方法

    image.png

  4. 局域网的分类

    image.png

  5. IEEE 802系列标准

    EEE 802又称为LMSC(LAN /MAN Standards Committee, 局域网/城域网标准委员会),致力于研究局域网和城域网的物理层MAC层中定义的服务和协议,对应OSI网络参考模型的最低两层(即物理层和数据链路层)。

    image.png

  6. MAC子层和LLC子层

    image.png

3.6.1 以太网

image.png

  1. 以太网提供无连接、不可靠服务

    • 无连接:发送方和接收方之间无握手
    • 不可靠:不对发送方的数据帧编号,接收方不向发送方确认,差错帧直接丢弃,差错纠正由高层次负责
  2. 以太网传输介质与拓扑结构的发展

    image.png

  3. 10BASE-T以太网

    image.png

  4. 适配器和MAC地址

    image.png

  5. 以太网的MAC帧

    image.png

  6. 高速以太网

    image.png

3.6.2 无线局域网

IEEE802.11 是无线局域网的通用标准,它是由IEEE所定义的无线网络通信的标准

image.png

  1. 802.11的MAC帧头格式

    image.png

  2. 无线局域网分类

    • 有固定基础设施无线局域网

      image.png

    • 无固定基础设施无线局域网的自组织网络

      image.png

3.7 广域网

image.png

3.7.1 PPP协议

点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的数据链路层协议,用户使用拨号电话接入因特网时一般都使用PPP协议

  1. 特点:只支持全双工链路

  2. 满足的要求:

    • 简单:无需纠错,无需序号,无需流量控制
    • 封装成帧
    • 透明传输
      • 异步线路:字节填充
      • 同步线路:比特填充
    • 多种网络层协议:封装的IP数据报可以采用多种协议
    • 多种类型链路:串行/并行,同步/异步,电/光
    • 差错检查:错就丢弃
    • 检测连接状态:链路是否正常工作
    • 最大传送单元:数据部分最大长度MTU
    • 网络层地址协商:通信双方必须知道彼此地址
    • 数据压缩协商
  3. 无需满足的要求

    • 纠错
    • 流量控制
    • 序号
    • 不支持多点线路
  4. PPP协议组成的三个部分

    image.png

  5. PPP协议的状态图

    image.png

  6. PPP协议帧格式

    image.png

3.7.2 HDLC协议

image.png

  1. HDLC的站

image.png

  1. HDLC的帧格式

image.png

3.7.3 PPP和HDLC对比

image.png

3.8 链路层的设备

image.png

  1. 网桥的分类

    • 透明网桥

      image.png

    • 源路由网桥

      image.png

  2. 多接口网桥——以太网交换机

    image.png

  3. 冲突域和广播域

    image.png