一.数据链路层
1.1 基本概念
- 结点:主机、路由器
- 链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路和无线链路。
- 数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。
- 帧:链路层的协议数据单元,封装网络层数据报。
数据链路层负责通过一条链路从一个结点向另一个物理链路直接的相邻结点传送数据报。
1.2 功能概述
数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠的传输到相邻结点的目标机网络层,其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
功能
- 为网络层提供服务。
无确认无连接服务,有确认无连接服务,有确认面向连接的服务。 - 链路管理,即连接的建立、维持、释放(用于面向连接的服务)。
- 组帧。
- 流量控制。
- 差错控制(帧错/位错)。
二.封装成帧和透明传输
封装成帧
2.1 封装成帧:就是在一段数据的前后添加首部和尾部,这样就构成了一个帧。接收端在接收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
2.2 首部和尾部包含许多的控制信息,他们的一个重要作用:帧定界(确定帧的界限)。
2.3 帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。
2.4 组帧的四种方法:
- 字符计数法
- 字符(节)填充法
- 零比特填充法
- 违规编码法
透明传输
2.5 透明传输是指不管所传输数据是什么样的比特组合,都应当能够在链路上传送。因此,链路层就“看不见”有什么妨碍数据传输的东西。
2.6 当所传数据中的比特组合恰巧与某个控制信息完全一样时,就必须采取适当的措施,使接收方不会将这样的数据误认为是某种控制信息,这样才能保证数据链路层的传输是透明的。
三.组帧方法介绍
3.1 字符计数法
- 帧首部使用一个计数字段(第一个字节,8位)来标明帧内字符数。
- 若第一个自己发生错误,这后面每帧都将错误。
3.2 字符填充法
- 数据部分可以出现一些与控制信息相同的比特,导致数据截断丢失,因此需要在数据部分中添加转义字符,接收方接收到数据在剔除转义字符和首部、尾部就能还原数据。
3.3 零比特填充法
- 首部和尾部添加 01111110(6个1)
- 在发送端,扫描数据部分,只要连续5个1,就立即填入一个0,避免了和首部尾部标识符的冲突。
- 在接收端收到一个帧时,就先找到首部和尾部(标志字段)确定边界,再用硬件对比特流进行扫描,发现连续五个1时,就把后面的0删除。
- 保证了透明传输:在传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误。
3.4 违规编码法
- 由于字节计数法中Count的脆弱性(其值若有错误将导致灾难性后果) 及字符填充实现上的复杂性和不兼容性,目前较普遍使用的帧同步法是比特填充和违规编码法。