【计算机网络】数据链路层-基本数据链路层协议

【计算机网络】数据链路层-基本数据链路层协议

协议1:一个乌托邦式的单工协议

单工协议即数据只能单向传输。这个协议假设信道永远不会丢失或损坏帧,接收方的处理能力足够快,缓冲区足够大。

发送程序无限循环,接受程序响应事件,协议1中不包含流量控制和纠错功能。

协议2:无错信道上的单工停-等式协议

发送方的速度如果过快,接收方会被淹没,除了增强接收方的处理能力,可以让接收方给发送方发送反馈,发送方收到后才可以发送下一帧。

发送程序无限循环并等待接收方确认,接受程序响应事件后发送确认帧。

协议3:有错信道上的单工停-等式协议

有错信道上传输数据需要增加校验,接收方仅在数据正确时发送确认帧。但在确认帧丢失的情况下(超时),发送方将重发。接收方难以判断帧是重发还是新发,因此帧前加上序号以区分。

重复的帧也会收到确认帧,以便发送方决策。

停止等待协议(Stop-and-Wait Protocol)

停止等待协议是tcp保证传输可靠的重要途径,”停止等待”就是指发送完一个分组就停止发送,等待对方的确认,只有对方确认过,才发送下一个分组.

无差错情况

无差错情况:发送方发送分组,接收方在规定时间内收到,并且回复确认.发送方再次发送……

超时重传的情况

1.分组丢失:发送方发送分组,接收方没有收到分组,那么接收方不会发出确认,只要发送方过一段时间没有收到确认,就认为刚才的分组丢了,那么发送方就会再次发送.
2.确认丢失:发送方发送成功,接收方接收成功,确认分组也被发送,但是分组丢失,那么到了等待时间,发送方没有收到确认,又会发送分组过去,此时接收方前面已经收到了分组,那么此时接收方要做的事就是:丢弃分组,重新发送确认.
3.传送延迟:发送方发送成功,接收方接收成功,确认分组也被发送,没有丢失,但是由于传输太慢,等到了发送方设置的时间,发送方又会重新发送分组,此时接收方要做的事情:丢弃分组,重新发送确认. 发送方如果收到两个或者多个确认,就停止发送,丢弃其他确认.

优缺点

停止等待协议的优点是简单,但是缺点是信道的利用率太低,一次发送一条消息,使得信道的大部分时间内都是空闲的,为了提高效率,我们采用流水线传输,这就与下面两个协议有关系了.

错误的控制

ARQ(自动重复请求)实现错误控制

  • 如果正确的接收,那么接受方会发送一个"ack"帧给发送方
  • 如果发送方没有收到接受方回复的"ack"帧,那么发送方会设置计时器并重新发送传输帧

为了确保正确性,必须对框架和ack进行编号

  • 接收机需要区分重传(由于丢失ack或提前定时器)和新帧,对于stop和wait,2个数字(使用1位)就足够了

滑动窗口协议

滑动窗口的概念

发送方拥有着一个窗口,这个窗口里面装着可以发送的帧

  • 它需要暂时存储这些帧,因为这些帧可能被重传
  • 当这个窗口接受到确认帧后,它就会向前移动

接受方拥有着一个可以接受帧的窗口

  • 它要为将要到来的帧预留空间
  • 这个窗口随着按顺序到来的帧而逐渐向前移动

一开始的时候,接受方可以接受一个帧,发送方之后发送了一个帧。接受方接受了这个帧之后,可以向后滑动一个单位,准备接受下一个帧,当发送方得到接受方回复给它的确认帧ack之后,继续向后滑动一个窗口,准备发送下一个帧。

滑动窗口协议的特点

  • 只有接受窗口向前移动的时候,发送窗口才会向前移动
  • 从滑动窗口的概念来看,停止等待协议、回退N协议和选择重传协议只不过是发送窗口和接受窗口的大小不同
    • 停止等待协议:发送窗口和接受窗口大小都是1
    • 后退N协议:发送窗口>1,接收窗口大小为1
    • 选择重传协议:发送窗口>1,接受窗口大小>1
  • 当接收窗口大小为1的时候可以保证有序的被接收
  • 数据链路层中,传输过程中滑动窗口的大小是固定的

可靠的传输机制

  • 捎带确认:接收方在会给发送方发送一个确认帧来告诉发送方收到了
  • 超时重传:在发送某个数据帧之后,就开启一个计时器,开始计时,一旦超过某段时间还没有收到确认帧,就重新发送该数据帧

自动重传请求ARQ:接受方请求发送方重新发送出错的数据帧来恢复出错的帧,传统的自动重传分三种

  • 停止等待ARQ
  • 后退ARQ
  • 选择性重传ARQ
    窗口开的够大的时候,帧在线路上可以连续的流动,因此又称连续的ARQ协议

回退N协议

之前协议存在的问题?

过长的往返时间严重影响带宽的利用率

如何提高带宽的利用率?

发送端在收到确认之前,连续发送多帧

回退N协议的过程

  • 发送窗口的大小>1,接收窗口的大小=1
  • 接收端发现某一帧发生差错时,直接丢弃所有后续的帧,对丢弃帧不发送确认
  • 数据链路层除了接收应该递交给网络层的下一帧之外,拒绝接收其它任何帧
  • 发送方最终会超时,将按顺序重传所有未被确认的帧,即从最初受损或丢失的那一帧开始
  • 接收端接收帧的顺序和发送端发出帧的顺序相同

回退N协议窗口大小的选择

  • 用n表示序号字段长度;2^n表示发送端可发送帧的序号个数
  • 发送窗口尺寸w应为2^(n-1)

回退n协议的适用情况

  • 回退n帧协议,如果错误率较低时,工作的很好
  • 但错误率较高时,就会浪费大量的带宽在重传上

选择重传协议

选择重传协议的特点

  • 接收方的数据链路层存储坏帧之后的所有正确的帧,当发送方得知某个帧出错时,只是重传此坏帧,而不是所有的后继帧
  • 在这个协议中,发送方和接收方都维持一个可接收序列号的窗口
  • 接收窗口的大小>1,并为窗口中的每个序列号都提供一个缓冲区,每个缓冲区用一位判断其是否为空
  • 当某一帧到达时,接收方检查其序列号,看其是否落在窗口内
  • 如果落在窗口内且从未接收过,就接收并存储
  • 接收到的此帧保存在数据链路层,而不交给网络层,直到比它序列号小的所有帧都按次序已交给了网络层,此帧才能提交给网络层

选择重传协议的窗口大小

窗口大小应为2n/2=(MAX_SEQ+1)/2

数据链路层协议实例

PPP(Point to Point)协议

点对点协议,提供了在点对点链路上传输多种协议数据包的一种标准方法。

PPP功能

  • 处理错误检测链路的配置
  • 支持多种协议
  • 允许身份认证等

PPP提供了3个主要特征

  • 成帧方法。它可以毫无歧义地分割出一帧的结束和下一帧的开始。并且帧格式支持错误检测
  • 链路控制协议(LCP)。可用于启动线路、测试线路、协商参数,以及不需要线路时关闭线路
  • 协商网络层选项的方法。协商方法与所使用的网络层协议独立。所选择的方法对于每种支持的网络层都有一个不同的网络控制协议(NCP)。支持的网络层协议有IPv4、IPv6、IPX和AppleTalk等

PPP帧格式

若Flag字节出现在Payload字段中,则需要用转义字节0x7D去填充,然后将紧跟在后面的那个字节与0x20进行XOR操作

PPP链路建立到释放的状态转换图

PPP建链路的具体过程

  • LCP协商,协商内容包括除RFC1661中所定义的选项之外,还要考虑PPPOA和PPPOE协议中规定的内容
  • LCP协商过后就到了Establish阶段,开始PAP或CHAP认证
    • PAP为两次握手认证,口令为明文。PAP认证过程如下:发送用户名同口令到认证方,认证方查看是否有此用户,口令是否正确,然后发送相应的响应
    • CHAP为三次握手认证,口令为密文(密钥)。CHAP认证由认证方发送一些随机产生的报文,交给被认证,被认证方用自己的口令字用MD5算法进行加密,传回密
      文,认证方用自己保存的口令字及随机报文用MD5算法加密,比较二者的密文,根据比较结果返回响应的响应
  • 认证成功即进行Network阶段协商(NCP),在IP接入中主要是IPCP协商(如IP地址和DNS地址的协商等)。任何阶段的协商失败都将导致链路的拆除。
  • 协商成功,则链路建立成功,可以开始传输网络层数据报文

SONET上的数据包

SONET(同步光网络)

  • 物理层协议
  • 最常被用在广域网的光纤链路上
  • 提供了一个以定义良好速度运行的比特流,如2.4Gbps的OC-48链路


IP包被承载在PPP帧中通过SONET线路传输

ADSL

ADSL使用的协议和设备的概貌

  • 在PPPOE应用中,CPE将PC上的以太网帧(携带PPP帧)通过ATM网络桥接到集中路由器(Aggregation Router)上
  • 当CPE为ADSL Modem时,PC为PPPOE Client,运行PPPOE模拟拨号软件先将用户数据封装为PPP,再将PPP封装到以太网帧中,PPP中相关的验证信息将会送给集
    中路由器进行PAP或CHAP验证
  • 通过验证之后,PC会以IPCP协商的形式从集中路由器获得IP地址
原文地址:https://www.cnblogs.com/mengxiaoleng/p/11845251.html