计算机网络第三章链路层知识梳理
数据链路层的功能
数据链路层主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路,即实现可靠的帧传输。
为网络层提供服务
- 无确认的无连接服务
发送帧的机器不需要建立链路连接,目的机器收到帧时不需发回确认,对于丢失的帧,数据链路层不负责重发而交给上层处理。一般适用于实时通信或误码率较低的通信信道,如以太网。
-
有确认的无连接服务
发送帧的机器不需要建立链路连接,目的机器收到帧必须发回确认。源机器在规定时间内未收到确定信号就会重传丢失的帧,以提高传输的可靠性。一般适用于误码率较高的通信信道,如无线通信。 -
有确认的面向连接服务
帧传输过程分为三个阶段:建立数据链路,传输帧,释放数据链路。目的机器对收到的每一帧进行确认,源机器收到确认后才发送下一帧。该服务适用于通信要求较高的场合
链路管理
数据链路层连接的建立,维持和释放过程称为链路管理。
帧定界,帧同步和透明传输
将上层的数据包分组并分别添加首部和尾部就封装成了帧
-
帧定界
首部和尾部中含有很多控制信息,它们一个重要作用是确定帧的界限 -
帧同步
帧同步是指接收方应能从接受到的比特流中区分出帧的起始于终止 -
透明传输
如果数据中恰好出现与帧定界符相同的比特组合(会误判为传输结束),就要采取措施解决这个问题即 透明传输 透明传输就是不管数据是什么样的比特组合都能在连路上传输
此外链路层的功能还包括流量控制和差错控制
数据链路层帧的组成
数据链路层之所以要把比特组合成帧作为传输单位,是为了在出错时只重发出错的帧,为了使接收方能正确接收并检查所传输的帧,发送方封装成帧时必须依照一定的规则。组帧主要解决帧定界,帧同步,透明传输等问题
组装成帧的方法通常有如下四种
- 字符计数法
字符计数法是指利用帧头部中的一个字段来标识该帧的字符数
特点:
简单但是一旦计数字段出错就失去了帧边界划分的依据无法判断帧结束位和下一帧开始位,将失去同步 因此很少被应用 - 字节填充的首位定界符法
用标志字节作为帧的开始和结束,为了使信息部分中出现标志字符而导致误判,可以在数据中的“标志字节”前插入特殊的转义字节(ESC)如果转义字节也出现在数据中,则再用一个转义字节来填充
特点:每次填充8位字符 - 比特填充的首尾标志法
使用01111110来标志一帧的开始和结束,在数据部分中将连续的5个‘1’之后填充一个‘0’
特点:可以传输任意比特的帧,可以再同步,传输效率高,性能优于字节填充算法 - 物理层违规编码法
在物理层进行比特编码时通常采用违规编码法
例如:曼彻斯特编码法将比特‘1’编码为“高-低”电平对,将比特‘0’编码为“低-高”电平对,而“高-高”和“低-低”电平在数据比特中是违规的,可以借用这些违规编码序列来定界帧的起始和终止
差错控制
通常利用编码技术进行差错控制,主要有两类
5. 自动重传请求 ARQ
在ARQ中接收端检测出差错时,就设法通知发送端重发,直到接收到正确的码字为止。
6. 前向纠错 FEC
在FEC中接收端不但能发现差错,而且能确定二进制数码的错误位置,从而加以纠正。
因此差错控制分为检错编码和纠错编码
检错编码
检错编码都采用冗余编码技术,常见的检错编码有如下三种
- 奇偶校验码 (parity check)
每一个数据单元加上一个校验位使数据中1的个数为偶数(偶校验)或奇数(奇校验) - 循环冗余码 (CRC)
-
- 检验和(checksum)
网络层中学习
纠错编码
最常见的纠错编码是海明编码,它能发现双比特错误,但只能纠正单比特错。