对于点对点链路,PPP是目前使用最广泛的数据链路层协议。PPP就是用户计算机和ISP进行通信时所使用的数据链路层协议。
3.2.1PPP协议的特点
1.PPP协议应该满足的需求
- 简单:IETF在设计互联网体系结构时,把最复杂的部分放在了TCP协议中,网际层协议IP相对简单,而数据链路层没有必要提供更复杂的功能。
- 封装成帧
- 透明性
- 多种网络层协议:PPP必须能够在同一条物理线路上同事支持多种网络层协议(IP、IPX等)的运行。
- 多种类型的链路
- 差错检测
- 检测链接状态:当链路出现故障重新链接的时候尤其需要
- 最大传送单元
- 网络层地址协商:如果仅仅链路层实现了链接而不知道对方的网络层地址,不能保证网络层可以传送分组。
- 数据压缩协商
- PPP协议只支持全双工链路。
2.PPP协议的组成
组成PPP协议的三个部分:
1、一个将IP数据报封装到串行链路的方法。PPP既支持异步链路、也支持面向比特的同步链路。
ps 参考 同步传输和异步传输
2、一个用来建立、配置和测试数据链路链接的链路控制协议LCP。
3、一套网络控制协议NCP,其中每一个协议支持不同的网络层协议。
3.2.2 PPP协议的帧格式
参考 PPP协议的帧格式
1 各个字段的意义
PPP帧的首部和尾部分别为4个字段和2个字段。
首部第一个字段和尾部第二个字段为标志字段 0x7E(01111110)。标志一个帧的开始和结束。
首部的第二个字段为地址字段A,规定为0xFF,控制字段C规定为0x03,这两个字段意义尚未给出,实际上没有携带PPP帧的信息。
首部的第四个字段是两个字节的协议字段。
- 若为0x0021表示信息部分就是IP数据包
- 若为0xC021表示信息部分是PPP链路控制协议LCP的数据。
- 0x8021表示这是网络层的控制数据。
信息部分长度可变,但是不超过1500字节。
尾部第一个字段(2个字节)是使用CRC的帧检验序列FCS。
2 实现透明传输
2.1字节填充
当PPP使用异步传输的时候,把转移字符定义为0x7D,并使用字节填充。
- 出现定界符0x7E(一样的比特组合,后省略),则变成两个字节的(0x7D,0x5E)
- 出现转移字符0x7D,变成两个字节序列(0x7D,0x5D)
- 出现ASCII控制字符,需要加入转移字符,并对相应的控制字符,做出改变。
2.2零比特填充
PPP协议在使用SONET/SDH链路时,使用同步传输。零比特填充的具体做法:只要发现有5个连续的1,则立即填入一个0.上传的时候,只要发现有5个连续的1时,就删除后面的那个0.