【学习笔记】计算机网络——第三章 数据链路层(干货满满)

系列文章目录

【学习笔记】计算机网络——第二章 物理层

【学习笔记】计算机网络——第三章 数据链路层


文章目录

  • 系列文章目录
  • 前言
  • 数据链路层
  • 基本概念
  • 功能概述
  • 封装成帧
  • 透明传输
    • 字符计数法
    • 字符填充法
    • 零比特填充法
    • 违规编码法
    • 差错控制
      • 差错由来
      • 差错类型
      • 比特错控制
        • 检错编码
        • 纠错编码
  • 流量控制与可靠传输机制
    • 流量控制方法
      • 停止等待协议
      • 后退N帧协议(GBN)
      • 选择重传协议SR
  • 信道访问介质访问控制
    • 两种链路
    • 介质访问控制
    • 信道划分介质访问控制
      • 静态划分通道
  • ALOHA协议
  • CSMA协议
  • CSMA/CD协议
    • 传播时延对载波监听的影响
    • 最小帧长问题
    • CSMA/CA协议
      • CSMA/CA协议工作原理
      • CSMA/CD 与 CSMA/CA

前言

本文作为王道考研——计算机网络的学习笔记,笔者在学习的过程中对相关重点进行总结。


数据链路层

基本概念

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

功能概述

向网络层提供服务,加强物理层传输原始比特流的功能
【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第1张图片

物理层比较傻,容易把数据弄丢,因此数据链路层就必须提前预知好,实现无差错的数据传输
功能一:为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务
功能二:链路管理,即连接的建立、维持、释放(用于面向连接的服务)
功能三:组帧
功能四:流量控制
功能五:差错控制

封装成帧

就是在一段数据的前后添头添尾,这样就构成了一帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流种识别帧的开始和结束。
首部和尾部包含很多控制信息,他们的一个重要作用:帧定界。
帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止
尽量使数据部分大于帧的首尾

透明传输

不管所传输的数据是什么样的比特组合,都应当能够在链路上传送。数据链路层看不见自己在传输什么。

字符计数法

每一帧的第一个字符用来标明帧内的字符数
【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第2张图片

如果第一帧出错,接下来都会出错

字符填充法

假设以SOH作为帧首,EOT作为帧尾,如果中间出现EOT的话,可能会错误找到边界,因此我们可以先进行字符填充,引入转义字符。告诉接收端不用管后面的东西是什么了。
【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第3张图片
当传送的帧是由文本组成时,不管从键盘上输入什么字符都可以放在帧里传过去,即透明传输。

零比特填充法

如果我们想以01111110作为帧的首和尾,为了避免中途01111110造成错误识别
在这里插入图片描述

我们需要做如下操作:

  1. 在发送端,扫描整个信息字段,只要连续5个1,就立即填入1个0
  2. 在接收端收到一个帧时,先找到标志字段确定边界,再用硬件对比特流进行扫描,发现连续5个1时,就把后面的0删除。

违规编码法

采用一般不用的编码作为起始和终止
【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第4张图片
比如11或00是不存在的编码,就可以用来做起始和终止。

差错控制

差错由来

传输中的差错是由噪声引起的

  1. 全局性:对于线路本身的电气特性所产生的随机噪声,是信道固有的,随机存在的。解决办法是:提高信噪比来减少或避免干扰。
  2. 外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因。解决办法:通常利用编码技术来解决。

差错类型

  1. 位错:比特位出错,1变成0,0变成1
  2. 帧错:丢失、重复、失序

链路层为网络层提供服务:

  • 对于通信质量好,有线传输链路,采用无确认无连接服务
  • 对于通信质量差的无线传输链路,采用有确认无连接服务或有确认有连接服务

比特错控制

检错编码

  • 奇偶校验码
    n-1位信息元 1位校验元
    特点:只能检查出奇数个比特错误,检错能力为50%
  • 循环冗余码CRC
    【计算冗余码的方法】
  1. 加0 假设生成多项式G(x)的阶为r,则加r个0
  2. 模2除法 数据加0后除以多项式,余数为冗余码、FCS、CRC检验码的比特序列
    【例】要发送的数据是1101011011 采用CRC校验,生成多项式是10011,那么最终发送的数据是?
    【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第5张图片
    最终发送的数据是1101011011 1110 (黄色是余数FCS)
    接收端的检测过程是:把收到的每一帧都除以同样的除数,然后检查得到的余数R。

【注】我们通常默认接收端数据链路层接受的帧均无差错。

纠错编码

  • 海明码:发现双比特错,纠正单比特错
  1. 确定校验码位数
    校验码位数需要满足海明不等式: 2^r ≥ k + r + 1
    比如:要发送的数据:D=101101 位数是k=6,满足不等式的最小r是4,因此海明码就有k+r=10位。即原始数据6位,校验码4位

  2. 确定校验码和数据的位置
    【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第6张图片
    将校验码放在2的几次方的位置,其他位置上按数据位的序将它填满。填上实际值后我们就需要计算校验码的值了。

  3. 求出校验码的值
    【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第7张图片
    如何直到某一位校验码可以校验哪些数据? 我们观察P1,其第一位为1,所以它能够校验第一位为1的D,即D1,D2,D4,D5。
    令Pi和它所有校验位异或等于0,就能够求出Pi。
    【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第8张图片
    综上,101101的海明码为0010011101

  4. 检错并纠错
    那么海明码是怎么校验并纠正错误的呢?
    假设第五位出错,接受的消息为0010111101
    令所有要校验的位异或运算
    【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第9张图片
    异或的结果倒着写得到0101=5,所以第五位出错。

流量控制与可靠传输机制

较高的发送速度与较低的接受能力不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。
数据链路层的流量控制是点对点,而传输层的流量控制是端到端的。
数据链路层流量控制手段:接收方收不下就不回复
传输层流量控制手段:接收端给发送一个窗口公告。

流量控制方法

滑动窗口协议:后退N帧协议(BGN)、选择重传协议(SR)

停止等待协议:每发送完一帧就停止发送,等待对方的确认,在收到确认后再发送下一帧。(滑动窗口是1)
可靠传输:发送端发啥,接收端接啥。
流量控制:控制发送速率,使接收方有足够的缓冲空间来接受每一帧。

停止等待协议
【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第10张图片
滑动窗口动作原理
【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第11张图片
发送窗口发送0号帧给接收窗口,接受窗口成功接收到0号帧的信息后会发送0号的确认帧。发送窗口接收到确认帧后窗口整体向前移动一格。

  • 停止等待协议——发送窗口大小=接受窗口大小=1
  • 后退N帧协议——发送窗口的大小>1,接受窗口大小=1
  • 选择重传协议——发送窗口大小>1,接受窗口大小>1

停止等待协议

停止等待协议就是每发送一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组。
为什么要有停止等待协议?

  1. 因为除了比特出错,底层信道还要会出现丢包问题。
  2. 为了实现流量控制。

研究停等协议的前提?
虽然现在常用全双工通信方式,但是为了讨论问题方便,仅考虑一方发送数据,一方接受数据。
因为是在讨论可靠传输的原理,所以并不考虑数据是在哪一层次上传送的。

【无差错情况】
【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第12张图片
每发送一个帧就停止并等待,确认帧(ACK)只需要能够区分上一帧和这一帧就行了,因此用1bit来编号足够。

【有差错情况】

  1. 数据帧丢失或者检测到帧出错
    引入超时计时器,每次发送一个帧就启动一次计时器。超时计时器设置的重传时间应当比帧传输的平均RTT更长。
    【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第13张图片
    【TIP】发送完一个帧后,必须保留它的副本
    数据帧和确认帧必须编号

  2. ACK丢失
    【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第14张图片
    接收方会丢弃第二次接收到的1号帧,重传1号帧的确认帧。

  3. ACK迟到
    对于迟到的ACK0,发送方直接丢弃。
    【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第15张图片
    停等协议简单但信道利用率太低。
    【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第16张图片
    信道利用率指发送方在一个发送周期中,有效地发送数据所需要的时间占整个发送周期的比率。

【例题】在这里插入图片描述
【答案】960bit 在这里插入图片描述

后退N帧协议(GBN)

【滑动窗口】
发送窗口:发送方维持一组连续的允许发送的帧的序号(蓝色的框框)
接受窗口:接收方维持一组连续的允许接受帧的序号。

【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第17张图片

GBN发送方必须响应的三件事

  1. 上层的调用
    上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送;如果窗口已满,发送方只需将数据返回给上层,暗示上层窗口已满。上层等一会儿再发送。
  2. 收到了一个ACK
    GBN协议中,对n号帧的确认采用累积确认的方式,标明接受方已经收到n号帧和它之前的全部帧。
  3. 超时事件
    协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长时发送方的行为。就像在停等协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失。如果出现超时,发送方重传所有已发送但未被确认的帧。

** GBN接收方要做的事**
4. 如果正确收到n号帧,并且按序,那么接收方为n号帧发送一个ACK,并将该帧中的数据部分交付给上层。
5. 其余情况都丢弃帧,并为最近按序接受的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息:expectedseqnum (下一个按序接收的帧序号)

【运行中的GBN】
【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第18张图片
解读
首先发送方连续发送0,1,2,3号帧,接收方接收到0号帧后发送ACK 0,接收方收到1号帧后发送1号ACK,此时2帧丢失,因为接收方是顺序接受的,然而无法收到2号帧,它会将收到的3,4,号帧都丢弃。此时,发送方的2号帧始终超时,会重新发送2号帧。

【GBN重点】

  • 累计确认(偶尔捎带确认)
  • 接收方只按顺序接受帧,不按序无情丢弃
  • 确认序列号最大的、按序到达的帧
  • 发送窗口最大为2^n - 1,接受窗口大小为1

【习题】

在这里插入图片描述
答案:C 因为接收方是顺序接受的,发送方能收到3号确认帧证明接收方成功接受了0,1,2,3号帧。至于发送方为何没收到1号ACK,可能是1号ACK丢失了。因此,发送方只需要传送4,5,6,7号帧就行了。

选择重传协议SR

SR协议是为了解决GBN协议的弊端而提出的。总结一点就是引入缓存机制

【SR发送方必须响应的三件事】

  1. 上层的调用
    从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则就像GBN一样,要么数据缓存,要么返回给上层后再传输。
  2. 收到ACK
    如果收到ACK,加入该帧序号在窗口内,则SR发送方将那个被确认的帧标记为接受。如果该帧序号是窗口的下界,则窗口向前移到具有最小序号的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧,则发送这些帧。
  3. 超时事件
    每个帧都有自己的定时器,一个超时事件发生后只重传一个帧。

【SR接收方要做的事情】
来者不拒(窗口内的帧)
SR接收方将确认一个正确接受的帧而不管是否按序。失序的帧将被缓存,并返回发送方一个该帧的确认帧**【收谁确认谁】**,直到所有帧按序交付给上层,然后向前移动滑动窗口。如果收到窗口序号外的帧,就返回一个ACK,特别是在该窗口之前一个窗口的帧,因为发送方可能没有接收到当时的ACK,所以接收方需要再发送一次。
【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第19张图片
【探讨】滑动窗口的长度可以是无线的吗?
发送窗口最好等于接收窗口。
滑动窗口最好小于帧序号。这样就能判断出接收到的帧是否是重传的旧帧。

【SR协议重点

  1. 对数据逐一确认,收一个确认一个
  2. 只重传出错帧
  3. 接受方有缓存。
  4. Wtmax = Wrmax = 2^(n-1)

信道访问介质访问控制

两种链路

点对点链路:两个相邻节点通过一个链路相连,没有第三者。应用:PPP协议,常用于广域网

广播式链路:所有主机共享通信介质。应用:早期的总线以太网、无线局域网,常用于局域网。典型拓扑结构:总线型,星型。

介质访问控制

介质访问控制的内容就是,采取一定的措施,使得两对节点间的通信不会发生互相干扰的情况。

【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第20张图片

信道划分介质访问控制

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

【多路复用技术】把多个信号组合在一条物理信道上进行传输,使得多个计算机或终端设备共享信道资源,提高信道利用率。
【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第21张图片

静态划分通道

  1. 频分多路复用
  2. 时分多路复用
    【统计时分复用STDM】
    【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第22张图片
  3. 波分多路复用WDM
    光的频分多路复用

4. 码分多路复用CDMA
码分多址是码分复用的一种方式。
1个比特分为多个码片,每个站点被指定一个唯一的m位芯片序列。
发送1时站点发送芯片序列,发送0时发送芯片序列反码。
如何不打架:多个站点同时发送数据时,要求各个站点芯片序列相互正交。
如何合并:各路数据在信道中被线性相加。
如何分离:合并的数据和源站规格化内积

ALOHA协议

纯ALOHA协议思想:不监听信道,不按时间槽5发送,随即重发。想发就发。
冲突如何检测? 如果发生冲突,接收方就会检测出错,然后不予确认,发送方在一定时间内收不到就判断发生冲突。
冲突如何解决?超时后等一随机时间再重传。

时隙ALOHA协议
时隙ALOHA协议的思想:把时间分成若干相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到下一个时间片开始时刻再发送。

【总结】

  1. 纯ALOHA比时隙ALOHA吞吐量更低,效率更低。
  2. 纯ALOHA协议想发就发,时隙ALOHA只有在时间片开始时才能发。

CSMA协议

CSMA:载波监听多路访问协议
CS:载波监听,每一个站在发送数据前要检测一下总线上是否有其他计算机在发送数据。
MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。总线型网络
协议思想:发送帧之前,监听信道。

【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第23张图片

CSMA/CD协议

CD:碰撞检测,“边发送边监听”,适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。

传播时延对载波监听的影响

【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第24张图片
最迟经过2ح时间才能知道自己发送的数据没和别人碰撞

最小帧长问题

【学习笔记】计算机网络——第三章 数据链路层(干货满满)_第25张图片

CSMA/CA协议

CD可以检测碰撞,而CA只能避免碰撞不能检测碰撞。

CSMA/CA协议工作原理

发送数据前,先检测信道是否空闲。
空闲则发出RTS,RTS包括发射端的地址、接收端的地址、下一份数据将持续发送的时间等信息;信道忙则等待。
接收端收到RTS后,将响应CTS。
发送端收到CTS后,开始发送数据帧(同时预约信道:发送方告知其他站点自己要传多久数据)。
接收端收到数据后,将用CRC来检验数据是否正确,正确则响应ACK帧。

CSMA/CD 与 CSMA/CA

相同点:核心都是先听再说。换言之,两个在接入信道之前都需要进行监听。当发现信道空闲后,才能进行接入。
不同点:

  1. 传输介质不同:CSMA/CD用于总线式以太网【有线】,而CSMA/CA用于无线局域网【无线】。
  2. 载波检测方式不同:因传输介质不同,CSMA/CD与CSMA/CA的检测方式也不同。
  3. CD可以检测冲突,而CA避免冲突。

你可能感兴趣的:(计算机网络,计算机网络)