网络控制协议是一组独立定义的协议。NCP层协议一般是在WAN连接的一端丢失了特定协议的成功操作的信息时被使用。例如,如果一个用户要拨号进入Cisco路由器,该用户的机器一般不知道要使用哪个IP地址,因此必须通过NCP/IPCP协商从Cisco路由器获得一个地址。然而,当在专用连接上使用PPP时,网络管理者分配所有的网络层属性,因此NCP的能力并不重要。
PPP的设计意图是定义一个能够在点到点线路上运送多种网络协议的数据报(Datagram)的数据链路层协议。在Intemet体系结构中没有OSI/RM中服务的概念,因此,PPP还必须涉及与网络层间的数据交换问题,必须具备就数据链路层支持的网络协议进行协商并进行相应配置的能力。这就是在PPP中需要涉及网络控制协议(NCP)的原因,应当指出:NCP是数据链路层支持对多种网络协议进行配置协商的手段,因此,使用网络控制协议一词很容易误解为网络层的控制协议,读者应当正确理解其实质。LCP为数据链路的建立与终止、控制、配置协商等提供了一种通用机制,因此,在NCP的定义中借用了这种机制,借用了LCP的PDU格式(只是协议代码为表1中的NCP编码),甚至PDU名称也借用LCP的名称。从这种意义上讲,NCP主要是对相关协商内容的定义。
IETF为多种网络协议定义了相应的NCP,例如:支持IP协议的NCP被称为IPCP(IP Control Protocol),支持Novell网的IPX的NCP叫做IPXCP等等。在PPP运作过程中,当进人网络层协议处理阶段时,首先通过LCP就链路测试和配置进行协商,然后利用NCP进行网络配置协商。PPP允许在其上的网络层有多种网络协议,因此.可根据需要利用相应的NCP进行多次协商。以下是对IPCP作简要的介绍。IPCP的责任是在PPP链路两端配置、激活和停止IP模块。IPCP格式与LCP几乎完全相同。
不同之处在于:①协议字段 LCP的该字段为二—十进制“C021”,而IPCP的该字段为“8021”;②PDU编码字段 LCP使用代码“1”一“12”,而IPCP只借用了其中的“1”一“7”,即Configure-Request、Configure-Ack、Configure-NAK、configure-Reject、Terrrdnate-Request、Terminate-Ack和Code-ReJect。应当注意,这一字段是在协议字段界定之下的特定PDU的编码,因此,尽管同名,LCP协商的内容与数据链路层有关,而NCP协商的内容却是与相关的网络层协议有关。RFCll72定义了两类协商选项:IP-Addresses和Compression-Type;而RFCl332(1PCP)则增加了一个选项:IP-Address,但建议不再使用IP-Addresses。]P-Addresses建议者试图对链路两端的“源一的”IP“地址对”进行协商,而IP-Address仅就请求方使用的IP地址进行协商;由于前者在实践中遇到许多实际问题,FRCl332中建议使用后者。
Compression Protocol在使用RFCll44规定Van Jacobson算法压缩TCP/IP头(注:UDP/TCP头不适合压缩)时,则该字段中代码为“002D”(二一十进制),“Slot”是TCP/11)P实现中用于存放TCP/IP头的缓存,每个Slot存放一个TCP/IP头,故Slot数量关系到能缓存TCP/IP报文的数量,因此被列入协商对象;Slot-Id可取值为0一Max-Slot-Id,Comp-slot-Id用于表示该字段是否允许被压缩(0表示不能,l表示可以)。