计算机网络(3.1)数据链路层 组帧 差错控制(码) 流量控制(停止等待 GBN SR)

数据链路层基本功能

为网络层提供服务,加强物理层原始bit流,将可能出错的物理链路转化成逻辑上无差错的逻辑链路

为网络层提供服务

  • 无确认的无连接服务
    源不建立连接,目的不乏确认。丢失帧数据链路层不重发且交给上层处理。实用实时通信或误码率低的网络。以太网
  • 有确认无连接
    源不建立连接,目的确认,会重传丢失帧。适用于误码率低的系统,无线网络
  • 有确认有链接
    建立数据连接、传输帧、释放数据链路。源收到确认才会发送下一帧,实用实时,可靠性高场合

帧界定,帧同步,透明传输

分组成帧,加入帧头,帧尾。其中的控制信息就是帧界定符,帧同步即接收方判断起始于中止在这里插入图片描述
HDLC帧就是F标志位(01111110)表示帧开始,帧结束
透明传输:不论什么数据,都能在链路上传输

组帧

  • 字符计数法
    在帧头部一个计数字段表示帧内字符数(字符计数字段站一个字节)。如果失去计数字段那就凉凉了。
    在这里插入图片描述
  • 字符填充法首位界定符法
    用特定字符表示帧开始与帧结束,会加转义字符(DLE)区分
    如果还出现DLE就会在前面再加个DLE
    在这里插入图片描述
    -比特填充首尾界定符法
    用某个特定比特序列表示开头结尾,例如HDLC的011111110.为了使内容种的该比特流造成误判帧首帧尾。会在出现5个1之后加0。发送方接收到后会逆向去0在这里插入图片描述

差错控制

  • 奇偶校验码
    添加一位凑偶数个1为偶校验,添加一位凑奇数个1为奇校验
  • 循环冗余码(CRC)
    任何二进制数据可以写成X^k-1到 X^0的多项式序列。发送发与接收方共同约定一个除数G(x),与二进制数据+最高阶数个0相除,获得的余数加在二进制数后。接收方用G(x)相除无余数则表示无差错
    在这里插入图片描述
    余数称为FCS,帧检验序列
  • 补充
    ARQ自动重传,FEC向前纠错
    前者重发错误,后者还能确定错误

流量控制三种协议与滑动窗口

  • 停止-等待协议
    其发送与接受窗口都为1,就是一次发送和接受的帧数都为1
    在这里插入图片描述
    错误1 帧丢失:
    在这里插入图片描述错误2 确认(ACK)丢失

在这里插入图片描述没收到ACK,发送方会再发,接收方由于接受过一次,所以就丢弃重复,选择重传

错误3,ACK迟到
在这里插入图片描述发现迟到ACK发送方会丢弃

回退N帧协议

即发送窗口为多个,接受窗口为1
在这里插入图片描述
GBN(回退N帧)三特点

  • 发送方发送数据时先检查发送窗口是否满了,没满就发,满了就告诉上层,满了别给我了
  • ACK的发送采取累加确认,收到某帧的确认即表示前面几个都受到了
  • 超时会重传所有以发送但是没有确认的帧
    在这里插入图片描述 未收到2帧确认,接收方把后面的全丢弃了,然后一个计时器实际到了以后。发送发就把没接受到帧2之后的数据再重传
    滑动窗口大小也是有范围的:
    在这里插入图片描述举个例子,如果2比特编号帧那就是有0,1,2,3四种情况
    发送窗口就是【1,3】,如果时4个即以上。接收方就无法判断着写帧是之前的还是将要重传的在这里插入图片描述累计确认,收到3就是三之前的全传了。GBN就退回到3之前重传4

选择重传(SR)

GBN重传数目太多,为了避免浪费就用SR
即发送与接受窗口都为多个在这里插入图片描述01以发送且已确认,24未确认,3发送且确认
发送窗口如果收到ACK会标记未已接受,然后如果该帧是窗口最左边的,就移动发送窗口到未收到ACK的地方在这里插入图片描述

在这里插入图片描述
发送方由于2帧丢失,所以接收不到对应2的ACK,发送了0123,接收到ACK0,发送窗口移动。接收ACK1,发送窗口移动。一直没接收到ACK2,定时器之后就重传2.
接收方接收到01,就移动接收窗口。由于没收到2,就不发ACK2这会导致接收到后面的345但是窗口不能移动。定时器时间到达之后发送发重传2,接收方发送ACK2后才会移动接收窗口

  • 窗口限制,接收窗口最好和发送窗口相一致
    Wtmax=Wrmax=2^(n-1)
    2bit表示,0123,窗口就是2^1,2
  • 特点
    对数据帧逐一确认
    只重传出错帧
    接收方有缓存
    在这里插入图片描述
    重发0与2

猜你喜欢

转载自blog.csdn.net/qq_43430273/article/details/103829789