计算机网络(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