Chap 4 数据链路层

4.1 基本概念与功能

链路(link):是连接相邻节点的通信信道,中间没有任何其他的交换节点。

  • 点对点链路:链路的两端都只有一个节点,一个节点发送,另一个节点接收,带宽独占。
  • 点对多点链路(广播链路,共享链路):链路上有多个节点,带宽共享,需要媒体访问控制(MAC)机制来控制多个用户对信道的访问。

除了物理线路外,还必须有通信协议来控制数据的传输。这些用软件或硬件实现的协议构成了网络的数据链路层。
现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。
一般的适配器都包括了数据链路层和物理层这两层的功能
通信方式:单工通信、半双工通信和全双工通信

  • 单工通信:是指消息只能单方向传输的工作方式。
  • 半双工通信:是指数据可以沿两个方向传送,但同一时刻一个信道只允许单方向传送双工。
  • 全双工(Full Duplex)是指在通信的任意时刻,两个节点间可以同时双向传输信号。TDD(Time Division Duplex,时分双工)是移动通信中上下行在同一频段上按照时间分配交叉进行传输,FDD(Frequency Division Duplex,频分双工)是指上下行在不同频段同时进行传输。

数据链路层的功能

  1. 向网络层提供良好的服务接口
  • 无确认、无连接的服务
    源端可以不需要建立连接就向目的端发送独立的数据帧,而目的端也不需要对收到的帧进行确认。
  • 有确认、无连接的服务
    源端可以不需要建立连接就向目的端发送独立的数据帧,但目的端需要对收到的帧进行确认。
  • 面向连接的服务
    源端与目的端在通信前要先建立连接,然后在此连接上互相传输数据帧,每一个帧都被编号,数据链路层保证传送的帧被对方收到,且只收到一次,双方通信完毕后拆除连接。
  1. 将物理层比特流编成帧
  1. 字符计数
    每一个帧的头上面描述帧的长度
  2. 字符填充的标志字节法
    在帧的起始和结尾用特殊的字符表示
  • 例如:用ASCII字符 DLE STX 表示帧的其实,DLE ETX 表示结尾
    实际使用中,在发送端检查数据中是否有DLE字符,如果有的话,在他前面插入DLE,到接收端的链路层再将两个或者两个以上的DLE,去掉一个DLE再还原
  1. 位标志
    用特殊的位序列表示帧的起始和结尾
  • 例如:用 01111110 表示帧的起始和结尾
    为了避免起始、结尾标志与帧中的数据混淆,发送端的数据链路层在检测到数据比特流中有连续5个1出现时,就在其后加一个0,接收端的数据链路层在将5个1后面的0取走还原。
  1. 物理层编码
    在物理层用1.5或2个物理位表示一个数据位来表示帧的起始与结尾
  1. 差错控制
  • 在有确认的服务中,接收方需要对收到的数据帧进行确认,通常以返回特别控制帧来告诉发送方收到的数据有没有出错;
  • 对于端到端的确认还可以通过返回的数据帧中的某些位来捎带地进行确认。
  • 如果发送的数据丢失,那么接收端是不可能进行确认的,怎么办呢?
    在发送端引入计数器,进行超时重发。为了避免相同的帧收到多次,需要对帧进行编号。
  1. 流量控制
  • 当发送端的发送速度大于接收端的接收速度,或发送端所在的网络传输速率大于接收端所在的网络传输速率时,就需要流量控制。
  • 窗口机制
    在任意时刻,发送方发出n帧,其中有l帧已得到确认。而同一时刻,接收方收到并应答了m帧,显然l<=m <= n,等待确认的帧的数目不允许超过W,即n-l <=W,该W就是窗口。
4.2 差错检测与校正

定义:信号在任何信道上传输都存在着传输差错,这些差错由多种物理现象引起,解决差错问题的方法有两种:

  • 一种是在要发送的数据中加入一定的冗余位,使接收方能知道数据是否出错,但不知道是哪里出错,这种编码方法叫差错检测码,或简称检错码
  • 另一种是在要发送的数据中加入足够多的冗余位,使接收方能纠正出错的位,这种编码方法叫差错校正码,或简称纠错码

纠错码

定义1:一帧由m个数据位(即报文)和r个冗余位(即校验位)组成,设总长度为n(n=m+r),此长度为n的单元常称为n位码字。
定义2:两个码字不同的位的数目称为海明距离
例如,10001001 与10110001它们的海明距离为3。
对于n位码字的集合,只有2m个码字是有效的,在任意两个有效码字间找出具有最小海明距离的两个码字,该海明距离便定义为全部码字的海明距离

一种编码的检测能力和纠错能力取决于编码后码字的海明距离的大小

  • 为了检测出 d 个比特的错误,需要使用距离为 d+1 的一套编码
  • 为了纠正 d 个比特的错误,需要使用距离为 2d+1 的编码

对于一种编码,有 m 个信息位和 r 个校验位,若想纠正所有的单比特错误,r 需要满足:

  • 对于 2m 个有效码字而言,每个码字都有n个与该码字距离为 1 的无效码字,所以 2m 个有效码字的每一个都对应有 n+1 个各不同的位图,n 位码字的总位图数是 2n
    ( n + 1 ) 2 m ≤ 2 n n = m + r ( m + r + 1 ) 2 m ≤ 2 m + r 2 r > n + 1 (n+1) 2^m \leq 2^n\\n = m +r\\(m + r +1) 2^m \leq 2^{m + r}\\2^r > n +1 (n+1)2m≤2nn=m+r(m+r+1)2m≤2m+r2r>n+1
    海明编码

海明在1950年提出一种编码来纠正单比特错的编码。该编码是将码字内的位从左到右依次编号,编号为2的幂的位是校验位(如第1,2,4,8…),其余为信息位。
每个校验位的取值应使得包括自己在内的一些集合服从规定的奇偶性。
集合的选取如下:
对编号为K的信息位来说,K可以分解成2的幂的和,如编号为11,11=1+2+8,即第11位由1,2,8校验位校验,它同时属于1,2,8所在的集合。

检错码
在实际通信中使用纠错码好还是检错码好呢?
例题:假设一个信道误码率是10-6,且出错是孤立产生的(即只有单比特错),数据块长度为1000比特,如果采用纠错编码,需要10个校验位(210>1011),传送1M数据需要10000个校验位;如果采用检错编码,每个数据块只需一个奇偶校验位,传送1M数据只需1000个校验位和一个重传的数据1001位,共需要2001比特。
在多数通信中采用检错编码,但在单工信道中需要纠错编码。

改进的奇偶校验

多项式编码 CRC(Cyclic Redundancy Check)

  • CRC编码的一般操作:给定一个m比特的帧或报文,发送方生成r比特的序列(也称为帧检验序列FCS,Frame Check Series),形成(m+r)的码字,该码字能被某个事先确定的数整除。接收方用相同的数去除收到的帧,如果无余数,则认为数据帧无差错。
  • 多项式表示:即将k比特的数据用k项多项式表示,它的各项为Xk-1…X0,它的系数为数据中对应位的0或1。
    例如:110001可表示成X5+X4+1

多项式编码的推导:

  • 设数据帧多项式表示为 M(X) m位序列
  • 事先约定的除数为 G(X) r+1位序列
  • 帧检验序列FCS为F(X) r位序列
  • 加了检验序列的帧为T(X) = Xr M(X) + F(X) m+r位序列

笔算方法:在给定的数据帧序列后面,补 r 位0,除以给定的G(x),得到 r 位的余数,照顾添加在后面即可。

CRC的检测能力:

  • 能够检验出所有长度小于等于 r 的错误
  • 如果突发长度为 r+1 ,当且仅当差错与 G(X) 相同时才能被整除。由于G(X)首尾必须为1,则漏检概率为:(1/2)r-1
  • 对于长度大于r+1的错误,漏检率为 (1/2)r
4.3 基本数据链路协议

无限制的单工协议
完全理想条件:

  1. 数据单向传输,收发双方的网络层一直处于就绪状态
  2. 处理时间可忽略不计,接收缓存空间无限大,即无需任何流量控制
  3. 信道不会损坏或丢失帧,即无需任何差错控制

发送端:

  1. 从网络层获取分组
  2. 构造帧
  3. 发出帧

接收端

  1. 等待事件(即唯一未损坏的帧到达)发生
  2. 帧到达后,从硬件缓冲中取出新的帧
  3. 将帧的数据部分传给网络层

无错信道的停等协议
条件改变:

  • 接受端需要一定的接收处理时间,接收缓冲只能存放一个帧

那么,为了防止由于发送快于接收而造成数据丢失,发送端发送一帧后必须停止发送,等待接收端发回的反馈确认

有噪声信道
条件:有噪声信道帧可能会损坏,也可能完全丢失。
对于发送端而言,可能无法接收到反馈的确认帧,因此引入超时机制,一定时间后对于没有确认的帧进行重发,ARQ(Automatic Retransmit reQuest)
对于接收端而言,为了避免重复收取重复的数据帧,通过为帧编制序号来解决重复帧的问题。

有噪声信道的停等协议

  1. 发送端帧序号N(S)表示当前所发帧的序号,接收端维护的帧序号N(R)表示接收端当前所期待接收的帧序号。
  2. 发送端从网络层取得第一个分组组帧,将N(S)=0的序号放入帧头中作为第一个帧发送,并启动定时计数器,等待响应帧。
  3. 接收端收到一个帧后,对其序号和N(R)进行比较:
    若相等则对其接收,校验正确后送交网络层,将N(R)加1(模2运算)并放入确认帧中反馈回发送端;若校验出错,则丢弃错帧,保持N(R) 不变并放入确认帧中反馈回发送端。
    若不等,则将其作为重复帧丢弃;N(R)值不变,反馈确认帧。
  4. 发送端若在规定的时间内没有收到接收端的反馈确认帧(超时),就认为数据帧丢失,在保持N(S)不变的情况下重新发送缓冲器中的(旧)帧;
  5. 发送端若接收到确认帧后,比较确认帧中的序号和N(S):
    若不等,则将确认帧中的序号赋予N(S),从网络层获取新的分组并组成新帧(N(S)作为序号放入帧头中)交由物理层发送出去。
    若相等,则保持N(S)不变,重新发送缓冲器中的(旧)帧;
4.4 滑动窗口协议 (Slide Windows)

发送端和接收端分别设定发送窗口接收窗口,利用窗口进行流量控制
现行的主要窗口协议回退N协议(出错全部重发,GBN)和选择重发协议。停等协议就是窗口大小为1的滑动窗。

发送窗口
发送窗口就是发送端允许不等确认而连续发送的的帧的序号表
允许连续发送的帧的数量称为发送窗口尺寸,表示为WT ,发送端必须有WT个输出缓冲区来存放WT个数据帧的副本以备重发。

接收窗口
接收窗口是接收端允许接收的帧的序号表
允许接收的帧的数量称为接收窗口尺寸,表示为WR ,同样需要设置相应数量的缓冲区来支持接收窗口。
对于接收端收到的序号在窗口外的帧直接被丢弃,落在窗口内的进行校验处理,若校验正确:

  • 当接收的帧不是接收窗口下沿帧时,必须暂存在输入缓冲区。
  • 当接收到接收窗口下沿帧时,会将其连同后面连续的若干个检验过的正确帧按顺序交给网络层,在发回确认帧的同时将接收窗口向前滑动相应的数量

数据的捎带确认
在实际通信中,通常收发双方都相互发送数据。
为了提高效率,可以将确认信息放在数据帧中作为一个控制字段连同数据一起发送给对方,这种方式称为捎带应答(piggybacking)。
当一方收到对方的数据帧后:
若正好也有数据需发给对方,则立即可使用捎带应答。
若暂时没有数据需发给对方或数据还未准备好,则等待一定的时间,如果在该时间内准备好了数据,则可以使用捎带应答。如果未准备好,为了防止对方等待时间过长而超时重发,必须立即发送一个单独的确认帧。
使用捎带应答就不用对每一个帧都作确认,可以用对下一帧的期待来代替对该帧之前的所有帧的确认。
实际网络中大多用ACKn 表示“第 n – 1 号帧已经收到,现在期望接收第 n 号帧”

GBN协议
GBN协议中,发送窗口的尺寸是大于1,接收窗口的尺寸则等于1

  • 由于接收窗口的尺寸为1,一旦某个帧出错或者丢失,只能丢弃该帧及其所有的后续帧(由于发送窗口大于1)。发送端超时后需要重发出错或丢失的帧及其后续所有的帧。
  • 发送端需要为每个待确认的帧都各自设置一个定时计数器。
  • 发送窗口的尺寸不能超过2n - 1(这里的n为序号的编码位数),否则会造成接收端无法分辨新、旧数据帧。
  • 出错全部重发协议只要求发送端保持一定数量的缓存来保存没有确认的数据帧,对接收端没有缓存的要求。但在误码率高的情况下,会大大降低信道的利用率。

选择重发协议
选择重发协议中,发送和接收窗口的尺寸都大于1。

  • 由于接收窗口的尺寸大于1,接收端可存储坏帧之后的其它数据帧(落在接收窗口),接收端对错帧发否定确认帧,因此发送端只需重发出错的帧,而不需重发其后的所有后续帧。
  • 接收端正确收到重发的帧后,可对其后连续的已接收的正确帧作一次总体确认(最大序号的确认),并交送网络层。大大提高了信道的利用率。
  • 接收窗口的尺寸不能超过2n - 1(即序号范围的1/2),否则可能造成帧的重叠。
  • 发送窗口的尺寸一般和接收窗口的尺寸相同,发送端为每一个输出缓存区设置一个定时计数器,定时器一旦超时,相应输出缓存区中的帧就被重发。

4.5 面向位的协议HDLC

高级数据链路控制(High-Level Data Link Control)是由国际标准化组织制定的面向位的有序链路层协议。
是为非平衡的链路级操作而研制的,采用主从结构,链路上一个主站控制多个从站,主站向从站发命令,从站向主站返回响应。
HDLC中只有一个地址域,即从站的地址,在命令帧中,它是目的地址,在响应帧中,它是源地址。

HDLC的帧格式

  1. 帧标志序列:01111110,作为起始和结束标志,在数据位有5个连续的1出现时,就插入1个0(位填充)

  2. 地址段:在命令帧中表示目的地址,在响应帧中表示源地址,全1为广播地址,全0为测试地址

  3. 控制字段:用来表示帧的种类,执行信息传送,监控功能
    信息帧(I:Information):用来实现信息的传送,含有信息字段
    监控帧(S:Supervision):帧中不包含信息字段,具有监控链路的作用,并能对收到的帧进行确认。
    无编号帧(U:Unnumbered):对数据链路进行附加控制。


(a) (b) © 分别为I帧、S帧和P帧
Seq:发送端发送序列编号,这里是3比特,采用模8循环编号。
Next:表示发送端准备接收的序列号,也采用模8循环编号。
Type:表示监控功能的类型。Modifier:附加的修改功能。
P/F:在命令帧中作为询问比特,在响应帧中作为终止比特。

4.6 面向字节的数据链路层协议-PPP(Point to Point Protocol)

PPP由以下3部分组成:

  • 串形链路上的数据报封装方法
  • 链路控制协议(LCP:Link Control Protocol),用来建立、配置、测试数据链路连接
  • 对不同的网络层协议定义了网络控制协议族

计算机网络复习记录 (2)Chap 4相关推荐

  1. 计算机网络复习-第六章应用层

    计算机网络复习-第六章应用层 第六章 应用层 应用层协议概述 应用层协议特点 每个应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的 ...

  2. 计算机网络复习资料(前六章谢希仁版)

    计算机网络复习 作者:why will kill it 第一章 概述 internet和Internet的区别 以小写字母"i"开始的internet(互联网)是一个通用名词,它泛 ...

  3. 2016计算机网络复习

    转载自博客http://blog.csdn.net/bit_line/article/details/51760601#附1-2015年考试要点 2016计算机网络复习 \Huge \mathrm{P ...

  4. 武汉科技大学计算机网络复习重点

    武汉科技大学计算机网络复习重点 1. 计算机网络的分类? 2. 调制解调器的作用 3. 对等实体.协议.服务之间的关系? 4. 中继器的功能? 5. 香农公式的计算? 6. 双绞线的特点和分类. 7. ...

  5. 计算机网络复习笔记——考试版

    计算机网络复习笔记 文章目录 计算机网络复习笔记 第一章 计算机网络和因特网 1.1 什么是因特网--因特网的具体构成 1.2 网络边缘 1.3 网络核心 1.4 分组交换网络中的时延.丢包和吞吐量 ...

  6. 计算机网络复习总结3

    计算机网络复习总结,仅供笔者复习使用,参考教材: <计算机网络>第7版 - 谢希仁编著. 电子工业出版社 <计算机网络考研复习指导>2024年 - 王道论坛组编. 电子工业出版 ...

  7. 【计算机网络复习之路】网络层(谢希仁第八版)万字详解 主打基础

    专栏:计算机网络复习之路 目录: 一.网络层的几个重要概念 1.1 网络层提供的两种服务 1.2 网络层的两个层面 二.网际协议 IP 2.1 虚拟互连网络 2.2  IP地址 2.2.1 IP地址及 ...

  8. 计算机网络复习(自顶向下)知识点总结(一天一夜超8000字,详细知识点总结,带重点标注目录)

    计算机网络复习(自顶向下)1~2章 复习目录 一.计算机网络基本概念 1.1 认识英特网 1.2 网络边缘 1.3 ==网络核心== 1.4 ⭐==时延.丢包和吞吐量== 1.5 ==协议层次和服务模 ...

  9. 计算机网络教学重点突破,武汉理工大学计算机网络复习重点教学内容(34页)-原创力文档...

    武汉理工大学计算机网络复习重点 精品文档 精品文档 收集于网络,如有侵权请联系管理员删除 收集于网络,如有侵权请联系管理员删除 精品文档 收集于网络,如有侵权请联系管理员删除 第二章 1.数字信号与模 ...

最新文章

  1. python上海培训哪里比较好-上海哪个python培训机构好
  2. 【机器视觉】 halcon中图像获取
  3. python评语生成_电商 Python 生成补单公司需要的评论格式3
  4. 【003】【深入解析Java中volatile关键字的作用】
  5. Django之ModelForm详解
  6. 接收URL参数乱码问题
  7. ArcGIS图像配准方法
  8. navicat黑色_“黑色星期五”之SQL浅析
  9. ISO50001认证咨询,新版标准更加强调持续改进能源绩效主要体现在以下方面
  10. 计算机应用基础制作表格的步骤,计算机应用基础_WORD制作表格_表格编辑公开课课件.ppt...
  11. 靠模仿红牛成为饮料界的“黑马”,东鹏特饮的未来如何谱写?
  12. 啥是“quoting reference XXX” 递交申请材料时
  13. Codeforces 484A - Bits (贪心)
  14. 虚拟机中安装软路由RouterOS详解教程
  15. Tesseract-OCR的使用---提取图片中的文字(OneNote)
  16. 嵌套循环练习:打印三角,九九乘法表,质数,质数优化
  17. 如何用JS刷新当前页面
  18. iso转cue mac_mac如何播放cue文件?
  19. JavaScript 引用数据类型
  20. minio 单机版安装

热门文章

  1. SPSS数据拆分(分组)
  2. Linux无线网卡驱动更新
  3. 【数学分析】伯努利不等式
  4. HMS Core-IAP特性功能之卡券服务
  5. IT培训有靠谱的机构吗,长什么样的?
  6. 01:行业介绍、虚拟化技术、Win系统安装
  7. Java就业前景如何?
  8. 行内元素、块元素、行内块元素的区别
  9. html5定义一个变量,JavaScript 变量
  10. 读《徐家骏:我在华为工作十年的感悟》有感