计算机网络学习笔记(五)- 数据链路层

数据链路层服务

概述

  1. 数据链路层负责通过一条链路从一个节点向另一个物理链路直接相连的相邻结点传送数据报
  2. 结点:主机和路由器
  3. 链路:连接相邻结点的通信信道,包括有线链路、无线链路、局域网
  4. 发送端:
    • 将数据报封装成帧
    • 增加差错检测比特,实现可靠数据传输和流量控制等.
  5. 接收端:
    • 检测差错,实现可靠数据传输和流量控制等
    • 提取数

链路层服务

  1. 组帧
    • 封装数据报构成数据帧,加首部和尾部
    • 帧同步:帧同步指的是接收方应当能从接收到的二进制比特流中区分出帧的起始与终止
  2. 链路接入
    • 如果是共享介质,需要解决信道接入(共享意思是这个链路有很多结点,都要利用这个链路传输数据,每次仅能一个结点使用,因此需要协调解决各个结点使用链路,两个结点同时使用链路会互相造成干扰)
    • 帧首部的MAC地址,用于标识帧的源和目的(不同于IP地址)
  3. 相邻结点间可靠交付
    • 在低误码率的有线链路上很少采用(如光纤,某些双绞线等)
    • 无线链路:误码率高,需要可靠交付
  4. 流量控制(flow control)
  5. 差错检测(error detection)
    • 信号衰减和噪声会引起差错.
    • 接收端检测到差错,通知发送端重传或者直接丢弃帧
  6. 差错纠正(error correction)
    • 接收端直接纠正比特差错
  7. 全双工和半双工通信控制
    • 全双工:链路两端结点同时双向传输
    • 半双工:链路两端结点交替双向传输

链路层具体实现

  1. 每个主机或路由器接口
  2. 链路层适配器:以太网网卡、无线网卡
  3. 链接主机的系统总线

差错编码

差错检测基本原理

D→DR,其中R为差错检测与纠正比特(冗余比特)

差错检测校验码

  1. 奇偶校验码
    • 一维奇偶校验
    • 二维奇偶校验
  2. 校验和(checksum)
    将数据划分为16位二进制整数序列,将数据相加,最高位进位放到最低位相加,结果取反
  3. 循环冗余校验码
    • 将数据比特D,视为一个二进制数
    • 选择一个r+1位的比特模式 (生成比特模式),G
    • 目标:选择r位的CRC比特R,满足<D,R>刚好可以被G整除(模2)
    • 接收端检错:利用G除<D,R>,余式全0,无错;否则,有错!

多路访问控制协议

概述

每个结点单一共享广播信道,两个或者两个以上结点同时传输,会造成干扰,如果结点同时接收到两个或者多个信号会导致接收失败
多路访问控制协议(multiple access control protocol)
• 采用分布式算法决定结点如何共享信道,即决策结点何时可以传输数据
• 必须基于信道本身,通信信道共享协调信息,无带外信道用于协调(不依靠额外信道用于协调各个结点使用信道)

分类

  1. 信道划分(channel partitioning)MAC协议
    • 多路复用技术
    • TDMA(时分多址复用技术):周期性接入信道
    • FDMA(频分多址复用技术):信道频谱划分为若干频带,每个站点分配一个固定的频带
    • CDMA(码分多址复用技术)
    • WDMA(波分多址复用技术)
  2. 随机访问(random access)MAC协议
    • 信道不划分,允许冲突
    • 采用冲突“恢复”机制
    • 协议需要解决问题:如何检测冲突和如何从冲突中恢复 (e.g., 通过延迟重传)
  3. 轮转(“taking turns”)MAC协议
    • 结点轮流使用信道

时隙ALOHA协议

  1. 原理
    时间被划分为等长的时隙(每个时隙可以传输1个帧),所有帧大小相同,结点只能在时隙开始时刻发送帧,结点间时钟同步,如果2个或2个以上结点在同一时隙发送帧,结点即检测到冲突,如果冲突:该结点在下一个时隙以概率p重传该帧,直至成功,如果无冲突:该结点可以在下一个时隙继续发送新的帧
  2. 优点:
    • 单个结点活动时,可以连续以信道全部速率传输数据
    • 高度分散化:只需同步时隙
    • 简单
  3. 缺点:
    • 冲突,浪费时隙(当发生冲突时,两个结点数据均未成功,均需要重发,当前时隙浪费了)
    • 空闲时隙(假如某个时隙两个结点发生冲突,然而结点是以概率p重传,那么有可能下一个时隙两个结点都不会重传,出现了空闲时隙,造成了时隙的浪费)
    • 时钟同步
  4. 效率
    定义:长期运行时,成功发送帧的时隙所占比例 (很多结点,有很多帧待发送)
    假设:N个结点有很多帧待传输,每个结点在每个时隙均以概率p发送数据
    • 对于给定的一个结点,在一个时隙将帧发送成功的概率为 p(1-p)N-1
    • 对于任意结点成功发送帧的概率为 Np(1-p)N-1
    • 最大效率: 求得使 Np(1-p)N-1 最大的pm
    • 对于很多结点,求 Npm(1-pm)N-1 当N趋近无穷时的极限
    • 可得最大效率为: 1/e = 0.37

纯ALOHA协议

相比于时隙ALOHA协议,纯ALOHA协议更加简单,去掉了时钟同步,因此当有新的帧生成时,立即发送,这样就导致冲突的可能性增大了,在t0时刻发送帧,会与在 [t0-1, t0+1] 期间其他结点发送的帧冲突,而对于时隙ALOHA协议,在t0时刻发送帧,仅在 [t0, t0+1] 期间会其他结点发送的帧冲突,因此相比于时隙ALOHA协议,纯ALOHA协议的最大效率仅为时隙ALOHA协议的一半,为0.18

CSMA协议

  1. 原理
    在发送信息之前,结点会监听信道,如果信道空闲,发送数据帧,如果信道忙,以下面三种方式继续发送:
    • 1-坚持CSMA
    • 非坚持CSMA(等待一段时间再监听信道)
    • P-坚持CSMA(以概率p进行1-坚持,以概率1-p进行非坚持)
    但是冲突可能仍然发生:
    • 第一种情况:当结点a在发送数据,结点b、c在监听,当a发送完毕,结点b和c都会选择发送数据帧,这样就造成了冲突
    • 第二种情况:当结点a监听到信道空闲,立即选择发送数据帧,然而由于信号传播延迟的影响,在a数据信号还没有传播到b结点时,b结点监听信道发现信道空闲,也选择立即发送数据,两个数据信号一定会发生冲突
  2. CSMA/CD协议
    在CSMA协议基础上,添加了在发送过程中对信道的监听(边发边听,不发不听),这样可以检测到发送过程中信道的冲突,如果检测到冲突立即终止发送,减少对信道资源的浪费

    冲突检测:
    • 有线局域网易于实现:测量信号强度,比较发射信号与接收信号
    • 无线局域网很难实现:接收信号强度淹没在本地发射信号强度下
    考虑下面这样的请况:
    • 如下图所示,当结点a监听到信道空闲,立即选择发送数据帧,然而由于信号传播延迟的影响,在a数据信号还没有传播到b结点时,b结点监听信道发现信道空闲,也选择立即发送数据,两个数据信号一定会发生冲突,结点b很快就会终止,但是由于信号传播延时的影响,如果结点a在已经发出的结点b信号传导过来之前就发送完数据a的信号,根据边发边听,不发不听原则,当a发送完成后不会对信号进行监听,也就检测不到信道内发生的冲突,造成数据错误。

    • 假设网络带宽:R bps、数据帧最小长度:Lmin (bits)、信号传播速度:V (m/s),如果想让结点a检测到b结点的信号,那么需要满足以下关系式:Lmin / R = 2dmax / V
    也即 Lmin / R = RTTmax
    示例:
    • 在一个采用CSMA/CD协议的网络中,传输介质是一根完整的电缆,传输速率为1 Gbps,电缆中的信号传播速度是 200,000 km/s。若最小数据帧长度减少800比特,则最远的两个站点之间的距离至少需要减少80m。
    CSMA/CD效率
    • 假定Tprop 为LAN中2个结点间的最大传播延迟,Ttrans 为最长帧传输延迟,则有如下公式:
    效率 = 1 / (1 + 5(Tprop / Ttrans)
    当Tprop 趋近于0或者ttrans 趋近于∞时,效率趋近于1,远优于ALOHA,并且简单、分散

轮转访问MAC协议

  1. 轮询(polling)
    主结点轮流“邀请”从属结点发送数据
    问题:
    • 轮询开销
    • 等待延迟
    • 单点故障
  2. 令牌传递(token passing):
    控制令牌依次从一个结点传递到下一个结点
    令牌:特殊帧
    问题:
    • 令牌开销
    • 等待延迟
    • 单点故障
发布了18 篇原创文章 · 获赞 0 · 访问量 615

猜你喜欢

转载自blog.csdn.net/wanglizhi3733/article/details/105333364