PPP是一个协议集合,它支持建立链接的基本方法——称为链路控制协议(LCP),以及一些列NCP协议。
LCP建立基本链路后,用于为各种协议建立网络层链路
链路层协议
PPP的LCP用于点到点链路上建立和维护底层的双方通信路径。只需关注一条链路的两端。
链路必须支持双向操作,异步,同步操作。
LCP基于高级数据链路控制(HDLC)建立链路协议
ppp帧格式
由两个1字节的0x7E的标志字段“包裹住”,点对点链路的两个端点通过使用这些字段发现一个帧的开始于结束
如果0x7E出现在帧内部,有两种方法解决
对于异步链路,PPP使用字符填充 。如果标志字符出现在帧的内部,则用0x7D5E(0x7D称为PPP的转义字符)替换。如果转义字符本身出现在帧中,用0x7D5D替换
对于同步链路,使用位填充法,因为0x7E 二进制位01111110,有6个连续的1,所以在帧的内部中超过5个1连续后面就填充一个0
地址字段1字节,因为目的只有一个,所以通常设置为0xFF
控制字段 2字节,用于指示帧序列和重传行为,由于这些链路层的可靠性功能通常不是PPP实现,所以字段为固定值0x03
由于地址和控制字段为常数,所以通过一个地址和控制地段压缩(ACFC)来省略他们
协议字段1或2字节,表明携带的数据类型
0x0000~0x3FFF代表网络层协议
0x8000~0xBFFF代表NCP的相关数据
0xC000~0xEFFF代表控制协议,例如LCP
数据字段
FCS 2或4字段,CRC16
LCP操作
LCP的PPP协议字段值为0xC021