数据链路层知识与技能

1.基本问题
1.1封装成帧
添加首部和尾部
1.2透明传输
字节/字符填充
1.3差错检测
1.3.1误码率BER(Bit Error Ratio)
在一段时间内,传输错误的比特占所传输比特总数的比特率。
1.3.2循环冗余检验CRC
在数据长为k的后面添加供差错检测用的n位冗余码,然后构成帧k+n位发送出去。
1.3.3帧检验序列FCS(冗余码)
添加在数据后面的冗余码。
2.点对点信道(PPP协议)
点-点:没有其他节点。
2.1应满足需求(10点)
简单、封装成帧、透明性、多种网络层协议、多种类型链路、差错检测、检测连接状态、最大传送单元、网络层地址协商、数据压缩协商。
2.2组成
2.2.1将数据报封装到串行链路的方法

字节填充法、零比特填充法
2.2.2链路控制协议LCP
LCP用于配置、维护和终止PPP链路。
LCP 用于封装格式选项自动达成一致,处理数据包大小限制的变化,探测环路链路和其他普通的配置错误,以及终止链路。LCP 提供的其他可选功能有:认证链路中同等单元身份,和当链路功能正常或链路失败时的作出相应决定。PPP 中的 LCP 功能全面,适用于大多数环境。
LCP 包有 3 类:
链路配置包,用于建立和配置链路(Configure-Request、Configure-Ack、Configure-Nak 和 Configure-Reject)。
链路中止包被用于断开一个链路(Terminate-Request 和 Terminate-Ack)
链路维护包被用于管理和调试一个链路(Code-Reject、Protocol-Reject、Echo-Request、Echo-Reply 和 Discard-Request)。
为了简单化,LCP 包里没有版本字段。一个正确运作的 LCP 将总是带有可以简单识别的 LCP 包括对未知协议和代码进行响应,因此需要为其他版本的实现提供一个确定性的可靠机制。
不管启用哪种配置选项,都得发送所有的 LCP 链路配置,链路终止和代码 - 拒绝包(代码1到7),就像没有协商配置选项一样,而且每个配置选项都指定缺省值。这就保证了 LCP 包 总可以被识别,甚至当链路的一个终端错误地认为该链路已经开放。
确切地说一个 LCP 包被封装在 PPP 信息字段中,该 PPP 协议字段表示类型为十六进制 c021(链路控制协议)。
2.2.3网络控制协议NCP
实现了多种网络层协议,使得路由器能同时支持多种网络层协议。
网络层地址协商,给新接入的用户分配IP(临时IP)。
2.3帧格式
2.3.1各字段意义

协议结构
8 16 32 bit variable
Code Identifier Length Data
Code 十进制值,表示 LCP 数据包类型。
1 - Configure-Request
2 - Configure-Ack
3 - Configure-Nak
4 - Configure-Reject
5 - Terminate-Request
6 - Terminate-Ack
7 - Code-Reject
8 - Protocol-Reject
9 - Echo-Request
10 - Echo-Reply
11 - Discard-Request
12 - Link-Quality Repor
Identifier - 十进制值,表示匹配 Request 和 Reply。
Length- LCP 数据包的长度,包括 Code、Identifier、Length 和 Data 字段。
Data- 可变长字段,可能包括一或多个配置选项。
2.3.2字节填充
当PPP使用异步传输时,我们使用0x7D(01111101)作为转义符,转义的规则如下:
把信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)。
若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把转义字符0x7D转变为2字节序列(0x7D,0x5D)。
若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为2字节序列的(0x7D,0x31)。
2.3.3零比特填充
零比特填充相较字节填充要简单得多,0x7E的二进制表示是01111110,因此只要在每出现5个1时插入一个0就可以避免在数据中出现0x7E。
2.4工作状态
当网络层配置完毕后,链路就进入可进行数据通信的链路打开状态。链路的两个PPP端点可以彼此向对方发送分组。两个PPP端点还可发送回送请求LCP分组(Echo-Request)和回送回答LCP分组(Echo-Reply),以检查链路的状态。
数据传输结束后,可以由链路的一端发出终止请求LCP分组(Terminate-Request)请求终止链路连接,在收到对方发来的终止确认LCP分组(Terminate-Ack)后,转到链路终止状态。
如果链路出现故障,也会从链路打开状态转到链路终止状态。
当调制解调器的载波停止后,则回到链路静止状态。

举报
评论 0