PPP(Point-to-Point,点到点协议),在串行链路上传输IP数据报的方法,从低速的拨号调制器到高速的光链路。
PPP不是单一的协议,而是协议集合,支持LCP——建立链接,以及一系列NCP协议,LCP为各种协议(IPv4,IPv6和非IP协议)建立网络层链路
链路控制协议
LCP(Link Control Protocol,链路控制协议),用于点到点链路上建立和维护低层的双向通信路径。
链路必须支持双向操作以及异步或同步操作。
LCP使用简单的位级别帧格式,基于高级数据链路控制(HDLC)建立链路协议。
HDLC协议还用作802.2中的LLC标准的基础,并最终用于PPP。
标志 (0x7E) | 地址 (0xFF) | 控制 (0x03) | 协议 | 数据 (PPP控制或网络层数据) | 填充 (如果存在,用0) | FCS | 标志 (0x7E) |
PPP基本帧格式借用了HDLC的格式,还包括一个协议标识符,有效载荷区,以及2或4字节的FCS。其他字段是否存在取决于压缩选项。
标志(0x7E):1字节,点到点链路的两个端点使用这个字段来发现一个帧的开始和结束。
串行链路定义了两种数据传输方式:异步和同步
1.异步传输:以字节为单位来传输数据,并且需要采用额外的起始位和停止位来标记每个字节的开始和结束。起始位是二进制0,停止位是二进制1。
PPP使用字符填充
——如果标志字符本身出现在帧中,则用2字节序列0x7D5E替换。(0x7D称为"PPP转移字符")
——如果转移字符本身出现在帧中,则用2字节序列0x7D5D替换。
2.同步传输:以帧为单位传输数据,在通信时需要使用时钟来同步本端和对端的设备通信。DCE(同步方)即数据通信设备(运营商端设备),提供了一个用于同步DCE设备和DTE设备之间数据传输的时钟信号。DTE(被同步方)即数据终端设备(客户端边界设备),它通常使用DCE产生的时钟信号
PPP使用位填充
——标志字符的位模式为01111110,在除了标志字符之外的任何地方,位填充在5个连续1之后填充一个0
地址:PPP采用HDLC的地址,指定哪个站在处理,PPP只关心一个目的地,因此这个字段被设置为0xFF(所有站)
控制:HDLC控制字段用于指示帧序列和重传行为,链路层的可靠性功能不是由PPP实现,所以控制字段设置为固定值0x03
*注 地址和控制字段在PPP中都是固定常数,所以在传输过程中经常经过一个称为地址和控制字段压缩(ACFC)的选项来省略它们
协议:根据HDLC,协议号的分配方式为:高位字节的最低有效位为0,低位字节的最低有效位为1
0x0000~0x3FFF(十六进制)范围内的值表示网络层协议
0x8000~0xBFFF范围内的值表示NCP相关的数据
0xC000~0xEFFF范围内的值表示控制协议,如LCP
LCP在基本PPP分组之上进行了简单的封装,能识别封装数据的类型和长度
标志 (0x7E) | 地址 (0xFF) | 控制 (0x03) | 协议 (0xC021) | 代码
| 标识 | 长度 | LCP数据 | 填充 (如果存在,用0) | FCS | 标志 (0x7E) |
协议——LCP的PPP协议字段值是0xC021,不能用PFC删除
标识——由LCP请求帧的发送方提供的序列号,并随着每个后续消息进行递增。
代码——配置请求(0x01),配置ACK(0x02),配置NACK(0x03),配置REJECT(0x04),终止请求(0x05),终止ACK(0x06),代码REJECT(0x07),
协议REJECT(0x08),回送请求(0x09),回送应答(0x0A),放弃请求(0x0B),标识(0x0C),剩余时间(0x0D)
长度——LCP分组的字节长度,不能超过链路最大接收单元MRU