点对点协议

  点对点协议(Point-to-Point Protocal,PPP)为在点对点连接上传输多协议数据包提供了一个标准方法,通常用在两节点间建立直接的连接。它主要用于利用电话线来连接两台计算机,也有用在宽带broadband计算机连接上。很多因特网服务提供商ISP使用PPP给用户提供接入服务。

组成

  封装:一种封装多协议数据报的方法。PPP 封装提供了不同网络层协议同时在同一链路传输的多路复用技术。PPP 封装精心设计,能保持对大多数常用硬件的兼容性。

  链路控制协议:PPP 提供的 LCP 功能全面,适用于大多数环境。LCP 用于就封装格式选项自动达成一致,处理数据包大小限制,探测环路链路和其他普通的配置错误,以及终止链路。LCP 提供的其他可选功能有:认证链路中对等单元的身份,决定链路功能正常或链路失败情况。

  网络控制协议:一种扩展链路控制协议,用于建立、配置、测试和管理数据链路连接。

  配置:使用链路控制协议的简单和自制机制。该机制也应用于其它控制协议,例如:网络控制协议(NCP)。

  为了建立点对点链路通信,PPP 链路的每一端,必须首先发送 LCP 包以便设定和测试数据链路。在链路建立,LCP 所需的可选功能被选定之后,PPP 必须发送 NCP 包以便选择和设定一个或更多的网络层协议。一旦每个被选择的网络层协议都被设定好了,来自每个网络层协议的数据报就能在链路上发送了。

  链路将保持通信设定不变,直到有 LCP 和 NCP 数据包关闭链路,或者是发生一些外部事件的时候(如,休止状态的定时器期满或者网络管理员干涉)。

认证方式

  PPP的两种认证方式是PAP和CHAP。相对来说PAP的认证方式安全性没有CHAP高。PAP在传输password是明文的,而CHAP在传输过程中不传输密码,取代密码的是hash(哈希值)。PAP认证是通过两次握手实现的,而CHAP则是通过3次握手实现的。PAP认证是被叫提出连接请求,主叫响应。而CHAP则是主叫发出请求,被叫回复一个数据包,这个包里面有主叫发送的随机的哈希值,主叫在数据库中确认无误后发送一个连接成功的数据包连接。

应用范围

  PPP是一种多协议成帧机制,它适合于调制解调器、HDLC位序列线路、SONET和其它的物理层上使用。它支持错误检测、选项协商、头部压缩以及使用HDLC类型帧格式(可选)的可靠传输。

链路建立的过程

  阶段1:创建PPP链路

  LCP负责创建链路。在这个阶段,将对基本的通讯方式进行选择。链路两端设备通过LCP向对方发送配置信息报文(Configure Packets)。一旦一个配置成功信息包(Configure-Ack packet)被发送且被接收,就完成了交换,进入了LCP开启状态。应当注意,在链路创建阶段,只是对验证协议进行选择,用户验证将在第2阶段实现。

  阶段2:用户验证

  在这个阶段,客户端会将自己的身份发送给远端的接收头。该阶段使用一种安全验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接。在认证完成之前,禁止从认证阶段前进到网络层协议阶段。如果认证失败,认证者应该跃迁到链路终止阶段。在这一阶段里,只有链路控制协议、认证协议,和链路质量监视协议的packets是被允许的。在该阶段里接收到的其他的packets必须被静静的丢弃。最常用的认证协议有口令验证协议(PAP)和挑战握手验证协议(CHAP)。 认证方式介绍在第三部分中介绍。

  阶段3:调用网络层协议

  认证阶段完成之后,PPP将调用在链路创建阶段(阶段1)选定的各种网络控制协议(NCP)。选定的NCP解决PPP链路之上的高层协议问题,例如,在该阶段IP控制协议(IPCP)可以向拨入用户分配动态地址。

  这样,经过三个阶段以后,一条完整的PPP链路就建立起来了。

安全问题

  安全问题是此备忘录的主要话题。PPP中的验证协议的交互操作很大程度上依靠于实现者。在文档中通篇使用SHOULD表明了这点。例如,一旦验证失败,有些实现者并不终止链路。相反,实现者限制网络层的通信量的类型构造子网,这样反过来允许用户有机会更新秘密或者发邮件给网络管理员说明问题。对于验证失败没有重试机制。然而,LCP状态机可以在任何时候重新磋商验证协议,这样就允许了一个新的重试。建议任何用来为验证失败的计数器在成功验证前或者终止失败的链路前不要重置。

  不要求验证是双向的或者在两个方向使用相同的协议。在任一个方向上使用不同的协议是完全可以接受的。当然,这依靠于在磋商时指定的协议。在实践中,在每个PPP服务器上有一个数据库,它联合验证信息的用户名字。不期望使

  用多个方法验证特殊的命名用户。这样使用户容易受到攻击。作为代替的,对于每一个命名用户有一个准确的方法用来验证用户名。如果一个用户在不同的环境下需要使用不同的验证方法,那么应该采用截然不同的用户名,每一个准确代表一个验证方法。密码和其他的秘密应该保存在各自的端点以至于对它们的访问尽可能的受到限制。理想的,只能是为了完成验证而需要访问的过程可以访问秘密。

  应该使用一种机制分发秘密,这种机制能够限制处理秘密实体的数目。理想的,没有通过验证的人不会再得到秘密的内容。使用SNMP安全协议可以实现这个目标,但是这样的机制不在这个规范的范围内。目前正在研究和试验其他的分发机制。SNMP安全文档很好的概括了对网络的威胁。

更多精彩内容,请登入维库电子通https://wiki.dzsc.com

相关百科