我是靠谱客的博主 魁梧小土豆,最近开发中收集的这篇文章主要介绍计算机网络3(数据链路层 功能)王道 数据链路层基本概念数据链路层功能概述,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

研究思路

数据从应用层封装到物理层,再从物理层解封装到应用层,但是在研究中主要关心在协议栈当中水平方向的各个数据链路层

 数据链路层基本概念

结点:主机、路由器

链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。

数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。

帧:链路层的协议数据单元,封装网络层数据报。
数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报。

数据链路层功能概述

数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。


封装成帧

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

首部和尾部包含许多的控制信息,他们的一个重要作用:帧定界(确定帧的界限)。

帧同步:接收方应当能从接收到的二进制比特流中区分帧的起始和终止

组帧的四种方法:字符计数法,字符(节)填充法,零比特填充法,违规编码法

 透明传输

透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。因此,链路层就“看不见”有什么妨碍数据传输的东西。
当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。

组帧

  1. 字符计数法(不常用)
    1. 帧首部使用一个计数字段(第一个字节,八位)来标明帧内字符数
  2. 字符(节)填充法  2级重点
  3. 零比特填充法  2级重点
  4. 违规编码法

由于字节计数法中Count字段的脆弱性(其值若有差错将导致灾难性后果)及字符填充实现
上的复杂性和不兼容性。

目前较普遍使用的帧同步法是比特填充违规编码法。


 差错控制(检错编码)  2级重点

差错从何而来

 数据链路层的差错控制

冗余码就是发送数据的时候在数据中加上几位bit,后加的这几位bit就是冗余码。

冗余码的作用就是和原数据可以构成一个新的规则数据,把这个组合发出去后,接收放按照和发送放达成共识的规则来进行检查。

 

 检错编码——奇偶校验码(计算机组成原理中也有说明,不过这种校验方法具有一定的局限性)

 检错编码——CRC循环冗余码

 纠错编码——海明码

海明距离:两个合法编码(码字)的对应比特取值不同的比特数称为这两个码字的海明距离(码距),一个有效编码集中,任意两个合法编码(码字)的海明距离的最小值称为该编码集的海明距离(码距)。

海明码要检测d位错d+1,纠正d位错d+2

①确定校验码位数r

数据/信息有m位,冗余码/校验码有r位

校验码一共有huge _2{r}种取值

huge _2{r}≥ m+r+1

 ②确定校验码和数据的位置

校验码放在序号为huge _2{n}的位置。数据按序填上

③求出校验码的值

 ④检错和纠错


流量控制与可靠传输机制  1级重点

流量控制的本质

限制发送方

流量控制产生的原因?

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

数据链路层流量控制和传输层流量控制的区别

数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的

数据链路层流量控制和传输层流量控制的手段

数据链路层流量控制手段:接收方收不下就不回复确认

传输层流量控制手段:接收端给发送端一个窗口公告。

流量控制的方法

  1. 停止-等待协议
    1. 发送窗口大小=1,接收窗口大小=1
  2. 滑动窗口协议
    1. 后退N帧协议(GBN)
      1. 发送窗口大小>1,接收窗口大小=1
    2. 选择重传协议(SR)
      1. 发送窗口大小>1,接收窗口大小>1

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

可靠传输:发送端发啥,接收端收啥

流量控制:控制发送速率,使接收方有足够的缓冲空间来接收每一个帧

滑动窗口解决:

  • 流量控制(收不下就不给确认,想发也发不了)
  • 可靠传输(发送方自动重传)

停止-等待协议究竟是哪一层的

在计算机网络发展的前期,通信链路的质量不是很好,所以链路层就要担负起可靠传输的职责,因此链路层会使用停止等待协议

现在通信链路的质量越来越好,出现差错的可能性减小,链路层就可以抛弃可靠传输的职责交给传输层,链路层主要负责差错的控制,这样就会使数据在链路的传输过程中速度更快,所用的时间更短,延迟也更小

停止-等待协议

①为什么要有停止-等待协议

  1. 原因:除了比特出差错,底层信道还会出现丢包问题。
    1. 丢包在这里是指物理线路故障、设备故障、病毒攻击、路由信息错误等原因,会导致数据报的丢失
  2. 停止-等待协议的目的:为了实现流量控制

②研究停止等待协议的前提?

虽然现在常用全双工通信方式,但为了讨论问题方便,仅考虑一方发送数据(发送方),一方接收数据(接收方)

因为是在讨论可靠传输的原理,所以并不考虑数据是在哪一个层次上传送的。

“停止-等待”就是没发送完一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组。

③停等协议有几种应用情况?

无差错情况&有差错情况

停等协议——无差错情况 

停等协议——有差错情况

  1. 数据帧丢失或检测到帧出错
  2. ACK丢失(确认帧)

  3. ACK迟到

停等协议性能分析

 信道利用率

信道利用率就是发送方在一个发送周期内,有效地发送数据所需要的时间占整个发送周期的比率。

 信道吞吐率=信道利用率*发送方的发送速率


停等协议的弊端

 后退N帧协议中的滑动窗口

发送窗口:发送方维持一组连续的允许发送的帧的序号

接收窗口:接收方维持一组连续的允许接收帧的序号

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

  1. 上层的调用

    1. 上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送:如果窗口已满,发送方只需将数据返回给上层,暗示上层窗口已满。上层等一会再发送。(实际实现中,发送方可以缓存这些数据,窗口不满时再发送帧)。
  2. 收到了一个ACK

    1. GBN协议中,对n号帧的确认采用累计确认的方式,标明接收方已经收到n号帧和它之前的全部帧。
  3. 超时事件

    1. 协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长帧时发送方的行为。就像在停等协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失。如果出现超时,发送方重传所有已发送但未被确认的帧。

GBN接收方要做的事

如果正确收到n号帧,并且按序,那么接收方为n帧发送一个ACK,并将该帧中的数据部分交付给上层。

其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息:expectedseqnum(下一个按序接收的帧序号)

运行中的GBN

假设发送窗口尺寸为4 

 滑动窗口长度

窗口长度可以无限吗?

答案是不可以

为什么不可以?

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

 GBN协议重点内容

  1. 累积确认(偶尔捎带确认)

    1. 累计确认:发送方发送多个数据,接收方返回最后一个数据的确认信息,发送方收到后继续发送后面的数据
    2. 偶尔捎带:通信是双工通信,发送方也可以是接收方,接收方也可以是发送方;当接收方需要转变为发送方时,在发送数据的时候,可以将确认信息同时打包发送给之前的发送方。
  2. 接收方只按顺序接收帧,不按序无情丢弃

    1. 发送方发送的数据接收方会按顺序接收,出现跨序的情况会直接丢弃顺序出错之后的所有数据帧
  3. 确认序列号最大的、按序到达的帧

    1. 除了丢弃出错之后的所有数据帧,还会确认目前正确数据帧最大的序列号,将这个最大序列号的确认消息返回到发送方。
  4. 发送窗口最大为2^{n}-1,接收窗口大小为1

 GBN协议的性能

优点:因连续发送数据帧而提高了信道利用率

缺点:在重传时必须把原来已经正确传送的数据帧重传,使传送效率降低


选择重传协议

选择重传协议产生的原因?

GBN协议的弊端:累积确认==>批量重传

解决办法:设置单个确认,同时加大接收窗口,设置接收缓存,缓存乱序到达的帧

选择重传协议中的滑动窗口

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

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

SR接收方要做的事

来者不拒(窗口内的帧)
SR接收方将确认一个正确接收的帧而不管其是否按序。失序的帧将被缓存,并返回给发送方一个该帧的确认帧【收谁确认谁】,直到所有帧(即序号更小的帧)皆被收到为止,这时才可以将一批帧按序交付给上层,然后向前移动滑动窗口。

 运行中的SR

 滑动窗口长度

窗口长度可以无限吗?

答案是不可以

 在这样的一个SR传输过程中,实际情况中我们不能确定最后接收的0号帧是重传的还是新帧

发送窗口最好等于接收窗口(发送窗口大了会溢出,小了没有意义)

W_{Tmax}=W_{Rmax}=2^{(n-1)}

SR协议重点内容

  1. 对数据帧逐一确认,收一个确认一个

    1. 接收方每接收到发送方的一个数据,都会返回一个对应数据的返回值
  2. 只重传出错的帧

    1. SR协议每一个数据都有一个返回确认信息,当某个数据帧出错,发生定时器超,发送方时只重传出错数据的帧
  3. 接收方有缓存

    1. 接收方如果在接收过程中如果没有收到循序的数据帧而收到的是跨序帧,则接收方会缓存接收到的跨序帧,等收到循序正确的下届帧一并打包发送给上层
  4.  W_{Tmax}=W_{Rmax}=2^{(n-1)}

最后

以上就是魁梧小土豆为你收集整理的计算机网络3(数据链路层 功能)王道 数据链路层基本概念数据链路层功能概述的全部内容,希望文章能够帮你解决计算机网络3(数据链路层 功能)王道 数据链路层基本概念数据链路层功能概述所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部