数据链路层概述
将添加帧头和帧尾的操作叫做封装成帧
检测发送的数据是否出现乱码可以通过检错码来实现
发送方在发送数据时可以基于发送的数据和检测算法计算出检错码封装在帧尾
接收方接受到数据后通过检测码和检测算法可以判断是否出现了乱码
数据链路层重要的问题
封装成帧
并不是每一种每一种数据链路层协议的帧都包含帧定界的标志
如以太网的V2 MAC帧不需要帧定界 当该帧传至物理层的时候会被添加前导码
来解决帧定界的问题
透明传输
需要解决要要传输的数据和帧头和帧尾一样导致接收方误判而导致传输错误
要解决该问题各种数据链路层协议为解决该问题一定会解决这个问题
1 在发送帧之前对帧进行扫描,数据中有和定界符相同的数据通过在其前面安插转义字符,接受放遇到转义字符就知道后面的数据是数据而不是定界符
2当传输的数据中同时包含有定界符和转义字符 方法也是一样
面向比特的链路用比特填充的方法实现透明传输
**方法 每隔5个比特数据插入一个比特0(一般是有特点的,比如5个连续的1填充一个0)
分界符不同插入的位置不同
差错检测
FCS帧检测字段
奇偶校验
奇校验
在发送的数据后面添加比特“1” 使得发送的数据中比特1的总数(包括添加的校验码1)的总数是奇数 接收方通过判断1的奇偶型判断是否发生了乱码
但该方法只适用1位乱码的情况 2位则无法判断
偶校验
在数据后面添加校验码0,让1的总数是偶数,也和前面一样只适用在有一个误码的情况
奇偶校验的漏检率较高一般不采用
循环冗余校验(重视对该检测方法的掌握)
可靠性传输
通过差错检测检测出误码接下来的处理 取决于可靠传输的类型
可靠性传输实现机制–停止-等待协议sw(重要)
DATA 发送分组
ACK 确定分组
NAK否认分组
确认和否认阶段
发送方没发送一个数据分组之后就停止发送下一个数据分组 等待接收方的确认分组或者否认分组,判断是发送下一个数据分组还是重新发送数据分组