点对点协议 压缩的SLIP和PPP

【点对点协议 压缩的SLIP和PPP】
由于串行线路的速率通常较低(19200 b/s或更低),而且通信经常是交互式的(如Telnet和Rlogin,二者都使用TCP),因此在SLIP线路上有许多小的TCP分组进行交换 。为了传送1个字节的数据需要20个字节的IP首部和20个字节的TCP首部,总数超过40个字节(19.2节描述了Rlogin会话过程中,当敲入一个简单命令时这些小报文传输的具体情况)
;;;;既然承认这些性能上的缺陷,于是人们提出一个被称作CSLIP(即压缩SLIP)的新协议,它在RFC 1144[Jacobson 1990a]中被具体描述 。CSLIP一般能把上面的40个字节压缩到3或5个字节 。它能在CSLIP的每一端维持多达16个TCP连接,并且知道其中每个连接的首部中的某些字段一般不会发生变化 。对于那些发生变化的字段,大多数只是一些小的数字和的改变 。这些被压缩的首部大大地缩短了交互响应时间 。
;;;;现在大多数的SLIP产品都支持CSLIP 。作者所在的子网(参见封面内页)中有两条SLIP链路,它们均是CSLIP链路 。
;;;;PPP,点对点协议修改了SLIP协议中的所有缺陷 。PPP包括以下三个部分:
;;;;1) 在串行链路上封装IP数据报的方法 。PPP既支持数据为8位和无奇偶检验的异步模式(如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链接 。
;;;;2) 建立、配置及测试数据链路的链路控制协议(LCP:Link Control Protocol) 。它答应通信双方进行协商,以确定不同的选项 。
;;;;3) 针对不同网络层协议的网络控制协议(NCP:Network Control Protocol)体系 。当前RFC定义的网络层有IP、OSI网络层、DECnet以及AppleTalk 。例如,IP NCP答应双方商定是否对报文首部进行压缩,类似于CSLIP(缩写词NCP也可用在TCP的前面) 。
;;;;RFC 1548[Simpson 1993]描述了报文封装的方法和链路控制协议 。RFC 1332[McGregor1992]描述了针对IP的网络控制协议 。
;;;;PPP数据帧的格式看上去很像ISO的HDLC(高层数据链路控制)标准 。图2 - 3是PPP数据帧的格式 。
;;;;每一帧都以标志字符0x7e开始和结束 。紧接着是一个地址字节,值始终是0xff,然后是一个值为0x03的控制字节 。
;;;;接下来是协议字段,类似于以太网中类型字段的功能 。当它的值为0x0021时,表示信息字段是一个IP数据报;值为0xc021时,表示信息字段是链路控制数据;值为0x8021时,表示信息字段是网络控制数据 。
;;;;CRC字段(或FCS,帧检验序列)是一个循环冗余检验码,以检测数据帧中的错误 。
;;;;由于标志字符的值是0x7e,因此当该字符出现在信息字段中时, PPP需要对它进行转义 。在同步链路中,该过程是通过一种称作比特填充(bit stuffing )的硬件技术来完成的[Tanenbaum1989] 。在异步链路中,非凡字符0x7d用作转义字符 。当它出现在PPP数据帧中时,那么紧接着的字符的第6个比特要取其补码,具体实现过程如下:
;;;;1) 当碰到字符0x7e时,需连续传送两个字符:0x7d和0x5e,以实现标志字符的转义 。
;;;;2) 当碰到转义字符0x7d时,需连续传送两个字符:0x7d和0x5d,以实现转义字符的转义 。
;;;;3 ) 默认情况下,假如字符的值小于0x20(比如,一个ASCII控制字符),一般都要进行转义 。例如,碰到字符0x01时需连续传送0x7d和0x21两个字符(这时,第6个比特取补码后变为1,而前面两种情况均把它变为0) 。
;;;;这样做的原因是防止它们出现在双方主机的串行接口驱动程序或调制解调器中,因为有时它们会把这些控制字符解释成非凡的含义 。另一种可能是用链路控制协议来指定是否需要对这32个字符中的某一些值进行转义 。默认情况下是对所有的32个字符都进行转义 。

推荐阅读