参考:
- https://blog.youkuaiyun.com/smart_ferry/article/details/84952341?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
- 《王道计算机网络考研复习指导 2021年》
由NEU 2018级 软件1809班 整理和补充~
尚未更新完,可持续关注
文章目录
第三章——数据链路层
3.1 数据链路层的功能
数据链路层在物理层提供服务的基础上向网络层提供服务,起主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造为逻辑上无差别的数据链路,使之对网络层表现为一条无差错的链路。
数据链路层的功能:
- 为网络层提供服务
- 链路管理
- 帧定界、帧同步和透明传输
- 流量控制
- 差错控制
3.1.1 为网络层提供服务
-
数据链路层可以为网络层提供的服务有:
- 无确认的无连接服务,适用于实时通信或误码率较低的通信信道,如以太网
- 有确认的无连接服务,适用于误码率较高的通信信道,如无线通信
- 有确认的面向连接服务,可靠性最高,适用于通信要求(可靠性、实时性)较高的场合
- !!!有连接就一定要有确认,即不存在无确认的面向连接的服务
3.1.2 链路管理
- 数据链路层连接的建立、维持和释放过程称为链路管理,它主要用于面向连接的服务。
- 链路两端的节点要进行通信,必须首先确认对方已处于就绪状态,并交换一些必要的信息以对帧序号初始化,然后才能建立连接,在传输过程中则要能维持连接,而在传输完毕后要释放该链接。
- 在多个站点共享同一物理信道的情况下(如局域网)如何在要求通信的站点分配和管理信道也属于数据链路层管理的范畴
3.1.3 帧定界、帧同步和透明传输
- 将一段数据的前后分别添加首部和尾部,就构成了帧。首部和尾部含有很多控制信息,作用:确定帧的界限,即帧定界
- 帧同步:接收方应能从接收到的二进制比特流中区分帧的开始与终止
- 透明传输:不管所传数据是什么样的比特组合,都应当能在链路上传送
3.1.4 流量控制
- 流量控制:限制发送方的数据流量,使其发送速率不致超过接收方的接收能力(由滑动窗口提供反馈机制)
- 对于数据链路层来说,控制的是相邻两节点之间数据链路上的流量,而对于运输层来说,控制的则是源端到目的端之间的流量
3.1.5 差错控制
-
由于信道噪声等各种原因,帧在传输过程中可能会出现错误。用以使发送方确定接收方是否正确收到由其发送的数据的方法称为差错控制。
-
数据链路层中传输数据出现的错误分为位错和帧错(一个帧包含多个位)
- 位错指帧中的某些位出现了差错。
- 通常采用循环冗余校验(CRC)方式发现位错,通过自动重传请求(ARQ)方式重传出错的帧
- 帧错指帧的丢失、重复或失序等错误。在数据链路层引入定时器和编号机制,保证每一帧最终都能有且仅有一次正确地交付给目的节点
- 位错指帧中的某些位出现了差错。
3.2 组帧
-
数据链路层之所以要把比特组合成帧为单位传输,是为了在出错时只重发出错的帧,而不必重发全部数据,从而
提高效率。 -
组帧主要解决帧定界、帧同步、透明传输等问题
-
组帧时既要加首部也要加尾部
-
组帧通常有4种方法实现
3.2.1 字符计数法
-
在帧头部使用一个计数字段来标明帧内字符数(计数字段提供的字节数包含自身所占用的一个字节)
-
弊端:如果计数字段出错,即失去了帧边界划分的根据,那么接收方就无法判断所传输帧的结束位和下一帧的开始位,收发双方将失去同步,从而造成灾难性后果
3.2.2 字符填充的首位定界符法
- 使用特定的字符来定界一帧的开始和结束。为了使信息位中出现的特殊字符不被误判为帧的首尾定界符,可以在特殊字符前面填充一个转义字符来加以区分。
3.2.3 零比特填充的首尾标志法
-
零比特填充法允许数据帧包含任意个数的比特,也允许每个字符的编码包含任意个数的比特。它使用
01111110
来标志一帧的开始和结束,发送方的数据链路层在信息位中遇到==5个连续的1
==时,将自动在其后插入一个0;接收方则执行逆操作。 -
零比特填充法容易由硬件来实现,性能优于
字符填充方法
。
3.2.4 违规编码法
-
即
高-高
电平对和低-低
电平对在数据比特中是违规的 -
在物理层比特编码时通常采用违规编码法。
-
违规编码法不需要采用任何填充技术
- 由于字节计数法中计数字段的脆弱性和字符填充法实现上的复杂性与不兼容性,目前较常用的组帧方法是
零比特填充法和违规编码法
3.3 差错控制
- 比特差错:实际通信链路都不是理想的,比特再传输过程中可能会产生差错,1->0 or 0->1
- 比特差错是传输差错中的一种
- 通常利用编码技术进行差错控制,主要有两类:自动重传请求(ARQ)和前向纠错(FEC)。
- 在ARQ方式中,接收端检测出差错时,就设法通知发送端重发,直到接收到正确的码字为止;
- 在FEC方式中,接收端不但能发现差错,而且能确定二进制数码的错误位置,从而加以纠正。
- 因此,差错控制又分为检错编码和纠错编码。
3.3.1 检错编码
-
检错编码都是采用冗余编码技术。
- 其核心思想是在有效数据(信息位)被发送之前,先按某种关系附加上一定的冗余位,构成一个符合某一规则的码字后再发送。当要发送的有效数据变化时,相应的冗余位也随之变化,使得码字遵从不变的规则。
- 常见的检错编码有奇偶校验码和循环冗余码
-
<