点对点协议(PPP,Point-to-Point Protocol)是由中兴通讯等机构参与制定的一套数据链路层协议,常用于连接终端设备,如个人计算机,到远程访问服务器,如Internet服务提供商(ISP)。PPP协议克服了早期SLIP(Serial Line Internet Protocol)协议的局限,如仅支持IP的问题,它在串行线路上传输数据时提供了更全面的功能。
PPP协议由三个主要部分组成:
1. **数据封装方法**:PPP支持异步和同步链路,能将IP数据报封装到串行链路中。这使得它可以在各种类型的物理介质上运行,包括拨号电话线、SONET或HDLC线路。
2. **链路控制协议(LCP)**:LCP用于建立、配置和测试数据链路。它允许通信双方协商一系列选项,如错误检测、最大帧长度等。RFC 1661中定义了多种LCP分组类型。
3. **网络控制协议(NCP)**:NCP是一系列协议,用于支持不同的网络层协议,如IP、OSI网络层、DECnet、AppleTalk等。每个网络层协议都有相应的NCP,负责协商网络层的参数。
PPP帧格式与面向位的HDLC帧格式类似,但有所区别。PPP帧的标志字段固定为0x7E,地址字段A和控制字段C分别固定为0xFF、0x03。此外,PPP包含了一个协议字段,用于标识信息字段中的数据类型,例如:
- 0x0021表示信息字段是IP数据报。
- 0xC021表示信息字段是链路控制数据LCP。
- 0x8021表示网络控制数据NCP。
- 0xC023和0xC025分别涉及安全性认证PAP和CHAP。
- 0xC223涉及安全认证CHAP。
为了处理0x7E可能出现在信息字段中导致的冲突,PPP使用了一种字符填充技术。当遇到0x7E、0x7D或ASCII控制字符时,会进行特殊编码,以避免混淆。
PPP链路的工作过程大致如下:
1. 用户拨号连接到ISP,路由器的调制解调器回应并建立物理连接。
2. PC机通过LCP分组与路由器进行交互,协商并确定PPP参数。
3. 网络层配置通过NCP进行,NCP为PC机分配临时IP地址,使其接入Internet。
4. 用户通信完成后,NCP释放网络层连接,回收IP地址。
5. LCP释放数据链路层连接,最后释放物理层连接。
PPP协议提供了一种标准化的方法,使得不同设备能够通过串行链路进行可靠的数据传输,并支持多种网络层协议,是现代互联网通信中的重要组成部分。