引言
之前的PPP协议太过于简单,并没有深度仔细研究,说实话书上和华为的PPT上解释的也是云里雾里。这篇说下PPP工作流程。
PPP帧格式
PPP报文时面向字节的,因而所有的PPP帧的长度都是整数字节。
PPP报文可由Protocol字段表示不同类型的PPP报文。例如:当Protocol字段为0xC021时,代表的是LCP报文。此时又由Code字段来表示不同类型的LCP报文。
PPP报文格式如下:
0x7E | 0xFF | 0x03 | 0xC021 | 0—1500Byte | 4Byte | 0x7E |
---|---|---|---|---|---|---|
Flag | Address | Control | Protocol | Information | FCS | Flag |
其中,Protocol报文中包含:IP报文(0x0021),IPCP报文(0x8021),LCP报文(0xC021),PAP报文(0xCo23),CHAP报文(0xC223)。
PPP的帧格式:
-
Flag字段标识一个物理帧的起始和结束
-
Address字段代表一个广播地址
-
Control字段代表无序号帧
-
FCS代表帧校验序列,用来检查PPP完整性。
-
Information字段所包含的东西较多,包含:
-
Identifier(用来匹配响应请求)
-
Length(当前LCP报文的总字节数目)
-
Data(用来协商配置,最大接受单元和认证协议等)
-
Data中又包含:Type(数据类型),Length(数据长度),Value (数值)它们三个包含LCP协商中的常用参数,像MRU,认证协议和魔术字等。
-
以上这些东西能记就多记些,包含的东西确实也很杂乱。但是Protocol报文一定要记住,后续会详细介绍这些Protocol报文,因为它们是报文的核心。
PPP协议工作流程
PPP协议需要经历链路建立阶段,认证阶段和网络层协商阶段共这三个阶段。
先来个简单的流程介绍
(1)首先,在两台调制解调器(modem)上建立物理连接;
(2)然后使用LCP完成逻辑链路的建立,并进行认证检查。
(3)随后通过NCP完成网络协议的配置对接
(4)此时,PC就在Internet上了
(5)完成工作后先拆除NCP,释放IP地址,再拆除LCP关闭数据链路连接
(6)释放物理连接(拔线)
上述流程是简易版本,我也觉得这个太low,体现不出你的水平。自然还有个详细版,它更加具体详细。
(1)通信双方开始建立PPP链路时,先进入到Establish阶段。
(2)在Establish阶段,进行LCP协商(协商双方的最大接受单元,认证方式和魔术字等选项)协商成功后进入OPENED状态,表示底层链路已经建立。
(3)如果配置了认证,将进入Authenticate阶段。否则直接进入Network阶段。
(4)在Authenticate阶段会根据连接建立阶段协商的认证方式进行链路认证,认证方式有两种:PAP和CHAP。如果认证成功,进入Network阶段,否则进入Terminate阶段,拆除链路,LCP状态转为Down。
(5)在Network阶段,PPP链路进行NCP协商。通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商。最常见的NCP协议是IPCP,用来协商IP参数。
(6)在Terminate阶段,如果所有的资源都被释放,通信双方将回到Dead阶段。
注:PPP运行过程中,随时的中断连接,物理链路断开,认证失败,超时定时器时间到和手动关闭连接动作等都会导致链路进入Terminate阶段。
以上是流程图
后续
这章没有太多废话,因为没啥好说的,基本都是重点,流程也很详细明确。不过后续要说几个IPCP报文,LCP报文,PAP报文,CHAP报文和NCP报文