PPP Internet协议控制协议(ipCP)
1. 介绍
href="" target="_blank"PPP有三个主要组件:
在串行线路上对数据报进行加密;
用于建立,配置和检测数据链路连接的连接控制协议(LCP)。
用于建立和配置不同网络层协议的网络控制协议(NCP)协议族。
为了在点对点连接上建立通信,每个PPP端必须首先发送LCP包以配置和检测数据链接。在连接建立而且可选的选项都已经由LCP设置完成后,PPP必须必须发送NCP包用以选择和配置一个或多个网络层协议。在每层的协议被配置完成后,就可以在链种上进行通信了。在LCP或NCP显式地关闭连接以前连接一保持开放。
2. 对IP的PPP网络控制协议
IP控制协议(IPCP)负责建立,使能和中止IP模块。IPCP和LCP协议使用相同的包交换机制。IPCP包在PPP没有达到网络层协议阶段以前不能进行交换,假如有IPCP包在到达此阶段前到达会被抛弃。IPCP和LCP基本相同,除了以下几点:
数据链路层协议域方面。一个IPCP包被包括在PPP数据链路层帧的信息域内,在帧中的协议域会有指示类型的数值8021。编码域仅用到编码1到7。其它编码被认为是不可识别而被抛弃。超时方面。IPCP包在PPP没有到达网络层协议以前不能交换。在实现中应该在未接收到配置确认或其它响应前预备等待认证和链接质量决定的完成。实现中应该保证连接在除用户干扰或超的其它情况下不得中断。配置选项类型方面。IPCP有不同的配置选项集合,在下面会具体谈到。
2.1. 发送IP数据报
在进行IP包通信前,PPP必须达到网络层协议阶段,IPCP必须到达打开状态。在PPP数据链路层帧的信息域中包括了一个IP包,帧中的协议域指示了类型值0021。在PPP连接上传送IP包的最大长度和PPP数据链种层帧的信息域的最大长度一致。过大的IP数据报必须被重新分段。假如系统不希望分段重组就必须使用TCP最大段大小选项和MTU发现。
3. IPCP配置选项
IPCP配置选项可以选择希望的IP参数。IPCP使用与LCP相同的配置选项格式。IPCP选项类型域的值如下所示:
1 IP地址1
2 IP压缩协议
3 IP地址2
3.1. IP地址1
使用配置选项IP地址是不好的,这在实现中已经证实了。IP地址配置选项可以替换这个域,应该使用IP地址配置选项。假如接收到的配置请求中包括IP地址或IP地址选项,此选项不应该在配置请求中包括这个选项。假如因为IP地址选项而收到配置拒绝时,或接收到的配置未确认中包括IP地址选项作为附加选项时,才发送这一选项。
3.2. 压缩协议
此配置选项可以使用系统使用特定的压缩协议,默认情况下不需要进行压缩。IP压缩协议配置选项格式如下所示,传送顺序从左至右。
类型 2
长度 >= 4
IP压缩协议域由两个字节组成,指示希望的压缩协议,此域的值和PPP数据链路层协议域指示的压缩协议一致。当前能够使用的压缩协议值如下:002d代表Van Jacobson ComPRessed TCP/IP。数据域为0个或多个字节,存储特定的压缩协议的一些参数。
3.3. IP地址2
这个域提供了确定用于本地连接端的IP地址的方法。它使得配置请求的发送者可以要求自己希望的IP地址,或者要求对方提供相应的信息。对方可以通过返回NAKing选项和合法的IP地址提供这方面的信息。
假如确定远程IP地址是必须的,而对方又未在它的配置请求选项中提供,此选项应该加在配置拒绝选项后。IP地址值要么是一个合法的远程IP地址,要么要求对方提供信息。默认情况下未指定IP地址。下面是IP地址配置选项格式,传送顺序是从左至右。
类型 3
长度 6
四个字节的IP地址是配置请求发送方希望本地地址。假如这四位全部为零,则要求对方提供IP地址信息。
4. Van Jacobson TCP/IP包头压缩
Van Jacobson TCP/IP包头压缩降低了TCP/IP包头的大小到接近3个字节,这对于慢速的串行线路来说是一大提高。IP压缩协议配置选项用于指示接收压缩包的能力。假如需要两个方向都进行压缩则需要双方独立申请。在传送IP包时PPP协议域被设置为以下值:
0021 类型IP。IP协议不是TCP,或包是一个数据段,或未经过压缩。
002d 压缩的TCP。TCP/IP包头由压缩的包头替换。
002f 未压缩的TCP. IP协议域由槽(slot)标记取代。
4.1. 配置选项格式
IP压缩协议配置选项格式如下所示,传送顺序从左至右:
类型 2
长度 6
IP压缩协议
002d指示Van Jacobson Compressed TCP/IP包头。Max-Slot-Id域一个字节,指示最大的槽标记,它比实际的槽数少一,槽标记从0到Max-Slot-Id。在实际中,假如Max-Slot-Id = 0,可能会有问题。Comp-Slot-Id域一个字节,指示槽标记域是否压缩。
0 槽标记不得压缩。所有压缩的TCP包必须在每个变更掩码(change mask)中设置C位,并要包括槽标记。
1 可压缩槽标记。