欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

##数据链路协议

程序员文章站 2022-03-11 15:16:43
链路层什么叫物理链路  链路就是一条无源的从点到点的物理线路段,中间没有任何其他的交换节点。在进行通信时,两台计算机的通信通路是由多条链路串接而成的。什么是数据链路  当需要在一条链路上通信时,除了需要物理链路,还需要一些规程来控制这些数据的传输,把实现这些规程的硬件和软件加到链路上,就构成了数据链路目的:通过一些数据链路规程,在不太可靠的物理链路传输上实现可靠的数据传输实现方法:流量控制,差错控制作用:改善数据传输质量,向网络层提供高质量的服务如何实现可靠传输差错控制差错产生的原...

链路层

什么叫物理链路

  链路就是一条无源的从点到点的物理线路段,中间没有任何其他的交换节点。在进行通信时,两台计算机的通信通路是由多条链路串接而成的。

什么是数据链路

  当需要在一条链路上通信时,除了需要物理链路,还需要一些规程来控制这些数据的传输,把实现这些规程的硬件和软件加到链路上,就构成了数据链路

  • 目的:通过一些数据链路规程,在不太可靠的物理链路传输上实现可靠的数据传输
  • 实现方法:流量控制,差错控制
  • 作用:改善数据传输质量,向网络层提供高质量的服务

如何实现可靠传输

差错控制

  • 差错产生的原因:数据在信道传输的过程中,通道有一定的噪声存在,接收方接受到的信号是信号与噪声的叠加,当接收方通过取样判断信号电平时出现错误时,就会引起通信数据的差错
  • 差错控制方法:前向纠错和自动请求重发
  • 前向纠错:接收方不但能发现错误,还能根据纠错码自动纠正传输差错
  • 自动请求重发:接收方校验检错码,发现错误后,要求发送方重新发送数据包

自动请求重发

  自动请求重发又可以称为后向纠错,包括停止等待ARQ协议和连续连续ARQ协议

停止等待ARQ协议

  原理如下,发送方A向接收方B发送数据帧0,并设置超时定时器T0,开始等待,接收方收到数据帧0后,开始校验,如果正确发送ACK给A,A收到ACK,取消定时器T0,开始发送数据帧1,并设置超时定时器T1,如下图
##数据链路协议

如果接收方B校验发现错误,则发送NAK给A,请求重传,A收到NAK后,重新发送数据帧0,设置超时定时器T0,开始等待,如下图
##数据链路协议

上面都是没有考虑丢包的情况,那如果数据丢失了会怎样呢?

  • T0在传输的过程直接丢掉了,接收方没有收到T0,所以不会有ACK和NAK传输回去,所以只能等到时间T0到了,A重新发送数据帧
  • ACK丢了,ACK丢了,A收不到接收方的反馈,在时间T0到了之后,认为这个数据库丢失了,开始重新发送数据帧T0,这时B已经收到了T0,当再次收到T0的时候,将后收到的T0数据帧丢掉,并继续发送ACK。
  • NAK丢了,NAK丢了,A收不到接收方的反馈,在时间T0到了之后,开始重新发送数据帧T0,当B接收到,并校验正确后,收下数据帧并发送ACK给A。

那么这样的协议有什么问题呢?

  • 通信通道的利用率不高,每次只传输一个数据帧,要保证这一个数据帧传输到了,接收双方确认过了才开始传输下一个数据帧,有较长的等待时间
  • 为了克服这一缺点,有了连续ARQ协议

连续ARQ协议

  发送方在发送完一个数据帧后,不是停留下来等待确认,而是可以连续发送若干个数据帧,由于减少了等待时间,提高了吞吐率

每个数据帧都需要进行编号并关联一个定时器,当接收到ACK(n)时取消定时器Tn-1 发送方A不断发送数据帧data0,data1,datan,并设置相应的定时器T0,T1,TN
##数据链路协议

这时候接收方B做什么呢,和停止等待ARQ协议一样,一个一个接收数据帧,校验正确发送ACK(n),错误发送ACK(n-1),这时候为什么不是发送NAK了呢,这边的ACK(N),代表n-1个数据帧已经接收到了,现在需要发送方发送N个数据帧,当有问题或者没有收到时,就需要发送ACK(n-1)让发送方重发n-1个数据帧。这是发送方收到ACK后直接发送数据帧么,不是,因为发送方是连续发送的,所以所需的数据帧很可能已经在路上了,这是需要把N-1的定时器取消。

那如果数据丢失了会怎样呢?

  • DATA(N)数据帧丢失:第n帧数据丢失,接收方收不到DATA(N),后续收到的数据帧都要丢弃,并且发送ACK(N)给发送方,要求重发数据帧DATA(N),这时发送方需要从DATA(N)开始重发数据帧,并设置定时器
  • ACK(n):ACK(N)丢失对于连续ARQ来说问题不大,ACK(N)丢失了,接下来ACK(N+1)发送出去,接收方收到了也会取消之前的定时器,只要有一个ACK发送到就行

那么发送方能无限制的发送数据么,无限的发送会出现什么问题呢

  • 发送方在收到确认前发送的数据帧越多,重发的数据帧就越多,造成浪费
  • 数据帧编号是有限的,因此编码是有重复的,在没有收到确认前不能发送重复编号的帧,不然会造成混乱
    所以比必须对发出去的,但是没有收到确认的帧数做出限制。

本文地址:https://blog.csdn.net/m0_46173483/article/details/107340502