计算机网络学习(十一) 链路层Ⅰ

1.数据链路层

1.1 概述

  • 一些术语:
    • 将运行链路层协议协议的任何设备均称为结点( node) ,包括主机、路由器、交换机和 WiFi 接人点等等
    • 沿着通信路径连接相邻结点的通信信道称为链路( link)
    • 在通过特定的链路时,传输结点将网络层数据报封装在链路层帧(frame) 中,并将该帧传送到链路中
  • 一个交通运输的类比例子说明网络层与链路层:
    • 游客想从 A 到 B 去游玩,旅行社选择出最佳路线:从 A 坐大巴到 C,从 C 坐飞机到 D,从 D 坐火车到目的地 B。
    • 一个游客好比一个数据报,每个运输区段好比一条链路,每种运输方式好比一 种链路层协议,而该旅行社好比一个路由选择协议

1.2 链路层服务

  • 链路层协议能够提供的可能服务包括:
    • 成帧( framing) :
      • 将数据报组装成数据帧,加首部和尾部
    • 链路接入(link access):
      • 媒体访问控制 (Medium Access Control , MAC) 协议规定了帧在链路上 传输的规则
      • 帧首部的 MAC 地址,用于标识帧的源和目的,不同于 IP 地址!
    • 相邻节点的可靠交付
      • 在低误码率的有线链路上,链路层可靠交付可能会被认为是一种不必要的开销,因而很少采用
      • 误码率高的链路如无线链路,需要可靠交付。其目的是本地(也就是在差错发生的链路上)纠正一个差错,而不是通 过运输层或应用层协议迫使进行端到端的数据重传
    • 差错检测和纠正
      • 因特网的运输层和网络层也提供了有限形式的差错检测,即因特网检验和。
      • 链路层的差错检测通常更复杂, 并且用硬件实现
      • 差错纠正类似于差错检测,区别在于接收方不仅能检测帧中出现的比特差错,而且能够准确地确定帧中的差错出现的位置(并因此纠正这些差错)

1.3 链路层具体实现

  • 链路层是实现在路由器的线路卡中的。 主机的链路层呢?
  • 一个典型的主机体系结构:
    • 链路层的主体部分是在网络适配器 (network adapter) 中实现的, 网络适配器有时也称为网络接口卡 (Network Interface Card , NIC)
    • 位于网络适配器核心的是链路层控制器,通常是一个实现了许多链路层服务的专用芯片, 因此,链路层控制器的许多功能是用硬件实现。
    • 越来越多的网络适配器被综合进主机的主板,即所谓的局域网在主板配置
      在这里插入图片描述
      在这里插入图片描述
  • 链路层 是硬件和软件的结合体,即此处是协议栈中软件与硬件交接的地方

2.差错检测和纠正

3.多路访问协议

3.1概述

  • 有两种类型的网络链路:点对点链路和广播链路
    • 点对点链路( point-to-point link) 由链路一端的单个发送方和链路另一端的单个接收方组成。
    • 许多链路层协议都是为点对点链路设计的,如点对点协议( point- to-point protocol , PPP) 和高级数据链路控制 (high-Ievel data link control,HDLC)
    • 广播链路 (broadcast link) ,它能够让多个发送和接收结点都连接到相同的、单一的、共享的广播信道上。
    • 以太网和无线局域网是广播链路层技术的例子
  • 先暂缓讨论特定的链路层协议,而研究一个对链路层很重要的问题:如何协调多个发送和接收结点对一个共享广播信道的访问,这就是多路访问问题( multiple access problem)
  • 为解决此类问题 —— 多路访问协议( multiple access protocol) ,即 结点通过这些协议来规范它们在共享的广播信道上的传输行为
  • 因为所有的结点都能够传输帧,所以多个结点可能会同时传输帧,结果所有结点同时接到多个帧,传输的帧在所有的接收方处碰撞( collide) 了,此时没有一个接收结点能够有效地获得任何传输的帧
    • 显然,如果许多结点要频繁地传输帧,许多传输将导致碰撞,广 播信道的大量带宽将被浪费掉
    • 当多个结点处于活跃状态时,为了确保广播信道执行有用的工作,以某种方式协调活跃结点的传输是必要的。 这种协调工作由多路访问协议负责
  • 多路访问协议划分为 3 种类型
    • 信道划分协议 (channel partitioning protocol)
    • 随机接入协议 (random access protocol)
    • 轮流协议( taking-turns protocol)
  • 理想的多路访问协议:
    • 给定:速率为 R bps 的广播信道
    • 期望:
      • 当仅有一个结点有数据发送时,该结点具有 R bps 的吞吐量;
      • 当有 M 个结点要发送数据时,每个结点吞吐量为 R/M bps
      • 协议是分散的:这就是说不会因某主结点故障而使整个系统崩溃
      • 协议是简单的,使实现不昂贵

3.2信道划分协议

  • 之前讲过,时分多路复用 (TDM) 和频分多路复用 (FDM) 是两种能够用于在所有共享信道结点之间划分广播信道带宽的技术
  • TDMA(time division multiple access)
    • 周期性接入信道
    • 每个站点在每个周期,占用固定长度的时隙
    • 未用时空闲时隙、
    • 消除了碰撞而且非常公平,每个结点在每个帧时间内得到了专用的传输速率
    • 然鹅,结点被限制于 R/Nbps 的平均速率,即使当它是唯一有分组要发送的结点;结点必须总是等待它在传输序列中的轮次,即使当它是唯一有分组要发送的结点
  • FDMA(frequency division multiple access)
    • 信道频谱划分为多个频带
    • 每个站点分配一个固定的频带
    • 无传输频带空闲
    • 避免了碰撞, 在 N 个结点之间公平地划分了带宽
    • 然鹅,限制了一个结点只能使用 R/N 的带宽,即使当它是唯一一个有分组要发送的结点时

3.3 随机接入协议

  • 在随机接入协议中,一个传输结点总是以信道的全部速率(即 R bps) 进行发送
  • 没有事先的节点间协调,当有碰撞时,涉及碰撞的每个结点反复地重发(不必立即重发)它的帧 (也就是分组) ,到该帧无碰撞地通过为止
  • 在重发该帧之前等待一个随机时延。涉及碰撞的每个结点独立地选择随机时延
  • 典型的数据接入协议:
    • ALOHA 协议
    • CSMA 协议、CSMA/CD、CSMA/CA

3.3.1 时隙 ALOHA

  • 最简单的随机接人协议之一 —— 时隙 ALOHA 协议
  • 假设:
    • 所有帧大小相同
    • 时间被划分等长的时隙(一个时隙等于传输一帧的时间)
    • 结点只在时隙起点开始传输帧
    • 结点是同步的, 每个结点都知道时隙何时开始
    • 如果在一个时隙中有两个或者更多个帧碰撞,则所有结点在该时隙结束之前检测到该碰撞事件
  • 在每个结点中,时隙 ALOHA 的操作是:
    • 每个结点在每个时隙以概率 p 发送数据
    • 当结点有一个新帧要发送时,等到下一个时隙开始并在该时隙传输整个帧
    • 如果没有碰撞,该结点成功地传输它的帧
    • 如果有碰撞,该结点检测到这次碰撞,以概率 p 在后续的每个时隙中重传它的帧,直到成功
      在这里插入图片描述
  • 优点:
    • 单个节点活动时,可以连续以信道全部速率传输数据
    • 高度分散化,只需时钟同步
    • 简单
  • 缺点:
    • 冲突,浪费时隙
    • 空闲时隙
    • 结点也许能以远小于分组传输时间检测到冲突
  • 效率:
    • 定义:长期运行中成功时隙的比例(很多结点、很多帧待发送)
    • 因为有 N 个结点,任意一个结点成功传送的概率是 Np(l-p)N-1
    • 当 N 无穷大时,可得最大效率 = 1/e = 0.37
    • 相似的分析还表明 37% 的时隙是空闲的, 26% 的时隙有碰撞

3.3.2 ALOHA 协议

  • 第 一个 ALOHA 协议实际上是一个非时隙、完全分散的协议。更加简单,无需同步
  • 当有新的帧需要发送时,立即发送
  • 冲突性增大,若在t0 时刻发送,会与在[t0 - 1 , t0 + 1] 期间发送的帧冲突
  • 任意一个结点成功传送的概率是 p(1 - p)2(N-1)
  • 当 N 无穷大时,可得最大效率 = 1/2e = 0.18,刚好是时隙 ALOHA 的一半。 这就是完全分散的 ALOHA 协议所要付出的代价
    在这里插入图片描述

3.4 载波侦听多路访问 (CSMA)

  • 载波侦听( carrier sensing) ,即一个结点在传输前先侦听信道
    • 若信道空闲,则发送完整帧
    • 若信道上有帧正在发送,则推迟发送
      • 1 - 坚持 CSMA
      • 非坚持 CSMA
      • p - 坚持 CSMA
  • 碰撞检测( collision detection) ,即当一个传输结点在传输时一直在侦听此信道
    • 如果它检测到另 一个结点正在传输干扰帧,它就停止传输,在重复"侦听-当空闲时传输"循环 之前等待一段随机时间
  • 以上两个规则包含在载波侦听多路访问( Carrier Sense Multiple Access , CSMA)具有碰撞检测的 CSMA(CSMA with Collision Detection, CSMA/CD)
  • 对于 CSMA,如果所有的结点都进行载波侦听了,为什么当初会发生碰撞?—— 以时空图解释:
    在这里插入图片描述
    • 在时刻 t0,结点 B 侦听到信道是空闲的,因此结点 B 开始传输,沿着广播媒体在两个方向上传播它的比特
    • 在时刻 t1(两时刻相差极短),结点 D 有一个帧要发送。尽管结点 B 在该时刻正在传输, 但 B 传输的比特还没有到达 D ,因此 D 此时侦听到信道空闲,从而 D 开 始传输它的帧
    • 一个短暂的时间之后, B 的传输开始在 D 干扰 D 的传输
    • 显然广播信道的端到端信道传播时延 (channel propagation delay) (信号从一个结点传播到另一个结点所花费的时间) 在决定其性能方面起着关键的作用
    • 继续发生冲突帧,导致浪费资源
  • 对于 CSMA / CD
    • 短时间内可以检测到冲突,冲突后终止传输,减少信道浪费
    • 在这里插入图片描述
    • 当某结点执行碰撞检测时, 一旦它检测到碰撞将立即停止传输
    • 在多路访问协议中加入碰撞检测,通过不传输一个无用的、(由来自另一个结点的帧干扰)损坏的帧,将有助于改善协议的性能
    • 在结点中与广播信道相连的适配器负责链路层帧的传输
      • 信道空闲则开始传输,信道忙则等待,直到侦听到没有信号能量时才开始传输
      • 在传输过程中,适配器监视来自其他使用该广播信道的适配器的信号能量的存在
      • 如果在传输时检测到来自其他适配器的信号能量,它中止传输。适配器等待一个随机时间量后,再次返回第一步
    • 随机时间长短如何选择?
      • 当碰撞结点数量较少时,时间间隔较短;当碰撞结点数量较大时,时间间隔较长
      • 采用二进制指数后退(binary exponential backoff)算法
      • 当传输一个给定帧时,在该帧经历了一连串的几次碰撞后,结点随机地从 [ 0,1, 2, … , 2n-1] 中选择一个 K 值。对于以太网,一个结点等待的实际时间量是 K*512 比特时间
      • 因此从中选择 K 的集合长度随着碰撞次数呈指数增长;正是由于这个原因,该算法被称为二进制指数后退
    • CSMA / CD 效率问题
      • 当只有一个结点有一个帧发送时,该结点能够以信道全速率进行传输。然而,如果很多结点都有帧要发送,信道的有效传输速率可能会小得多。
      • CSMA / CD 效率的推导超出了本书的范围
      • 当结点间的传播时延约为 0 时,或最大帧的传输时间很大时,CSMA / CD 的效率很高

3.5 轮转访问协议

  • 主要讨论们两种比较重要的轮流协议:
    • 轮询协议 ( polling protocol)
    • 令牌传递协议 ( token-passing protocol)
  • 轮询协议 ( polling protocol)
    • 要求这些结点之一要被指定为主结点,主结点以循环的方式轮询 ( poll) 每个结点(轮流“邀请”每个从属结点发送数据)
    • 问题:
      • 轮询开销
      • 等待延迟
      • 单点故障
  • 令牌传递协议 ( token-passing protocol)
    • 控制令牌依次以某种固定的次序从一个结点传递到下一个结点,持有令牌的结点发送数据
    • 令牌:很小的特殊帧
    • 问题:
      • 令牌开销
      • 等待延迟
      • 单点故障

版权声明:本文为weixin_45763536原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。