目录
PAP(Password Authentication Protocol,口令认证协议)
概述
PPP(point-to-point协议),即点对点协议,是数据链路层封装协议的一种。提供一种标准的方式在点对点的链路上传输多个网络层协议的数据报,PPP协议包括各种网络控制协议族(NCP)如:IPCP和IPXCP等,链路控制协议族(LCP)以及验证协议族(CHAP、PAP)等。其中,网络控制协议主要用来协商链路上传输的数据包的格式和类型,链路控制协议主要用来建立、拆除和监控PPP数据链路,验证协议主要用来提供网络安全的保证。
PPP协议工作在串行接口和串行链路上,一般来说,PPP协议所构成的网络只允许双方之间通信,不允许像以太网一样接入交换机后接入其他的主机或设备。
结构组成
为了在点对点的链路上建立通信,PPP链路的两端必须发送LCP数据包进行数据链路的测试和配置。等链路建立起来之后,还可能要进行端的验证,然后,PPP必须发送NCP数据包选择并配置一个或多个网络层协议,当所选择的网络层协议配置成功之后,每个网络层发送的数据报就可以在链路上传送了。链路一直保持着直到有明确的LCP或NCP数据包断开链路或某些外来的事件发生
PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:
- 对各种协议数据报的封装方法(封装成帧)
- 链路控制协议LCP 用于建立、配置以及测试数据链路的连接
- 一套网络控制协议NCPs 其中的每一个协议支持不同的网络层协议

帧格式

- Flag字段为帧定界标志,用来标识PPP帧的开始与结束,长度为1字节,取值固定为0x7E
- Address字段为地址字段,用来标识接收方的地址,长度为1字节,由于点到点链路的接收方是唯一的,故此字段取值固定为0xFF,表示只有对端才能接受到数据。
- Control字段为控制字段,长度为1字节,取值固定为0x03,表示无序号信息(Unnumbered Information)。
- Protocol字段为协议字段,用来标识PPP帧封装的协议数据类型,长度为2字节。此字段使PPP得以封装不同的协议。
字段值 协议 0x0021 IP(Internet Protocol) 0x0029 Appletalk 0x8021 IPCP(Internet Protocol Control Protocol) 0xC021 LCP(Link Control Protocol) 0xC023 PAP(Password Authentication Protocol) 0xC025 LQR(Link Quality Report) 0xC223 CHAP(Challenge Handshake Authentication Protocol) - Information字段为信息字段,该字段长度不固定,最大长度等于MRU(Maximum Receive Unit)值,默认为1500字节。此字段存放承载的协议数据,包括LCP、NCP等。
- FCS(Frame Checksum)字段为帧校验和字段,用来检测PPP帧的完整性(CRC计算),长度为2字节。
差错检测

接收方每收到一个PPP帧,就进行CRC检验(多项式)。若CRC检验正确,就收下这个帧;反之就丢弃这个帧(不可靠传输服务)。检验由尾部的FCS实现
使用PPP的数据链路层,向上提供的是不可靠数据传输服务,PPP协议没有纠错和重传机制。
ppp工作流程(阶段与状态)
在一下关于协议的描述中,我们需要区分两个概念:phase与state,翻译过来就是阶段与状态。在下面的应用中,我们可以看到,整个过程由不同的几个阶段构成,而每个阶段则是由不同的状态转换过程构成的,这些转换过程反映了协商的过程,所以不同的阶段可能包括相同的状态转换过程,表明它们的协商原理是一致的。
在建立、保持和终止PPP链路的过程中,PPP链路需要经过5个阶段,除认证阶段外,其它4个阶段都是必要过程。 5个阶段如下:
1 链路不可用阶段(Dead,物理层未准备好):
链路在该阶段启动和结束。当外部事件指示链路准备好去使用的时候,PPP将进入建立阶段。在该阶段,lcp自动机将处于初始化或正在启动状态,链路向建立阶段的转换将发送一个up事件到状态机
实现注意事项:典型的,在调制解调器断开连接后,链路应当自动转换到该状态。
2 链路建立阶段(Establish) :
LCP通过交换配置信息建立连接,当一个configure-ack包发送和接收后即完成配置阶段,进入打开状态。如果接收到LCP配置请求,会引起状态由网络协议层或着认证状态回退到LCP的建立阶段。
3 认证阶段(Authenticate):
该过程完成双方的认证,这并不是强制要求的,但是如果使用了,则在没有完成认证前不能进入网络协议配置阶段。一个实现不能简单的使认证过程失效因为超时或者缺少响应,而应该在多次尝试失败后才认为认证失败。
4 网络层协议阶段(Network):
完成上述两个阶段的配置后就可进入这一阶段进行网络层的协议的协商。当NCP进入打开状态后,PPP就可以承载响应网络协议的数据包了。在进入opened状态之前,任何收到的网络层的数据包都将被丢弃。实现上需注意,如果lcp处于打开状态,收到任何不被支持的协议的数据包都将会发送一个协议拒绝包,仅仅支持的协议才会被悄悄的丢弃。
5 链路终止阶段(Terminate):
PPP可以在任何时候终止链路,这可能在一下情况下发生:丢失信号、认证失败、链路质量确认失败、超过最大空闲时间以及管理员的主动关闭行为。Lcp通过交换terminate数据包来进行关闭链路的操作。当链路正在关闭时,PPP会通知网络层,以便其采取相应的措施。终止请求的发送者将关闭链路在收到终止请求响应后或者重启计数器超时。终止请求的接收着应当等待对方断开链路,在发送一个终止响应后重启计数器超时前接收者不能断开链路。之后,PPP进入dead阶段。
通过lcp关闭链路已经足够了,而且应当就由lcp来关闭链路。


本文详细解析了PPP协议,包括其结构组成、帧格式、差错检测机制、工作流程(包括LCP、NCP、认证过程),以及LCP协议的具体报文格式和功能。还介绍了LWIPPPP的使用和demo下载方法。
1万+

被折叠的 条评论
为什么被折叠?



