PPP,点对点协议修改了SLIP协议中的所有缺陷。 PPP包括以下三个部分: 1) 在串行链路上封装 I P数据报的方法。 P P P既支持数据为 8位和无奇偶检验的异步模式 (如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链接。 2) 建立、配置及测试数据链路的链路控制协议( LCP:Link Control Protocol)。它允许通 信双方进行协商,以确定不同的选项。
3) 针对不同网络层协议的网络控制协议( N C P:Network Control Protocol)体系。当前 R F C定义的网络层有I P、O S I网络层、D E C n e t以及A p p l e Ta l k。例如, IP NCP允许双方商定是 否对报文首部进行压缩,类似于 CSLIP(缩写词NCP也可用在TCP的前面)。
RFC 1548[Simpson 1993]描述了报文封装的方法和链路控制协议。 RFC 1332[McGregor 1992]描述了针对IP的网络控制协议。
P P P数据帧的格式看上去很像 I S O的H D L C(高层数据链路控制)标准。图 1是P P P数据 帧的格式。
每一帧都以标志字符0x7e开始和结束。紧接着是一个地址字节,值始终是 0xff,然后是一 个值为0x03的控制字节。
接下来是协议字段,类似于以太网中类型字段的功能。当它的值为 0 x 0 0 2 1时, 表示信息 字段是一个 I P数据报;值为 0 x c 0 2 1时,表示信息字段是链路控制数据;值为 0 x 8 0 2 1时, 表示 信息字段是网络控制数据。 CRC字段(或FCS,帧检验序列)是一个循环冗余检验码,以检测数据帧中的错误。
由于标志字符的值是 0 x 7 e,因此当该字符出现在信息字段中时, P P P需要对它进行转义。 在同步链路中,该过程是通过一种称作比特填充 (bit stuffing)的硬件技术来完成的。在异步链路中,特殊字符 0 x 7 d用作转义字符。当它出现在 P P P数据帧中时, 那么紧接 着的字符的第6个比特要取其补码,具体实现过程如下:
1) 当遇到字符0x7e时,需连续传送两个字符: 0x7d和0x5e,以实现标志字符的转义。
2) 当遇到转义字符0x7d时,需连续传送两个字符: 0x7d和0x5d,以实现转义字符的转义。
3 ) 默认情况下,如果字符的值小于 0 x 2 0(比如,一个 A S C I I控制字符), 一般都要进行转 义。例如,遇到字符0x01时需连续传送0x7d和0x21两个字符(这时,第 6个比特取补码后变为 1,而前面两种情况均把它变为 0)。
这样做的原因是防止它们出现在双方主机的串行接口驱动程序或调制解调器中, 因为有 时它们会把这些控制字符解释成特殊的含义。 另一种可能是用链路控制协议来指定是否需要 对这32个字符中的某一些值进行转义。默认情况下是对所有的 32个字符都进行转义。
与SLIP类似,由于PPP经常用于低速的串行链路,因此减少每一帧的字节数可以降低应用 程序的交互时延。 利用链路控制协议, 大多数的产品通过协商可以省略标志符和地址字段, 并且把协议字段由 2个字节减少到 1个字节。如果我们把 P P P的帧格式与前面的 S L I P的帧格式 进行比较会发现, P P P只增加了 3个额外的字节: 1个字节留给协议字段,另 2个给 CRC字段使用。另外,使用 IP网络控制协议,大多数的产品可以通过协商采用 Van Jacobson报 文首部压缩方法(对应于 CSLIP压缩),减小IP和TCP首部长度。
总的来说, PPP比SLIP具有下面这些优点:
(1) PPP支持在单根串行线路上运行多种协议, 不只是I P协议;
(2) 每一帧都有循环冗余检验;
(3) 通信双方可以进行 I P地址的动态协商(使用 I P网络控制协议);
(4) 与C S L I P类似,对T C P和I P报文首部进行压缩;
(5) 链路控制协议可以 对多个数据链路选项进行设置。为这些优点付出的代价是在每一帧的首部增加 3个字节,当建 立链路时要发送几帧协商数据,以及更为复杂的实现。
尽管PPP比SLIP有更多的优点,但是现在的SLIP用户仍然比PPP用户多。随着产品 越来越多,产家也开始逐渐支持PPP,因此最终PPP应该取代SLIP。