目录
一、PPP 协议与报文基础入门
在网络通信的庞大体系中,PPP 协议就像一座默默支撑着数据传输桥梁的基石,虽然看似不起眼,却起着举足轻重的作用。PPP,即 Point - to - Point Protocol,点对点协议,主要用于在两个直接相连的设备之间建立、配置和测试数据链路连接,为在点对点链路上传输多种协议数据包提供了一个标准方法。
在早期的网络发展中,不同设备之间的连接缺乏统一标准,PPP 协议应运而生,解决了异构网络设备之间通信的难题。它可以在不同的物理介质上工作,无论是常见的串口线、电话线,还是更高速的光纤 ,PPP 都能稳定地实现数据传输,让各种主机、网桥和路由器之间能够顺利通信,成为简单连接的一种共通解决方案。比如,在家庭拨号上网的时代,计算机通过电话线连接到 ISP(互联网服务提供商)的路由器,两者之间就是借助 PPP 协议来建立通信链路,实现数据的传输,从而让用户能够访问互联网。
而 PPP 报文,则是 PPP 协议在网络中传递信息的载体,是实现设备间通信的关键 “信使”。它承载着各种网络层协议的数据,像我们熟悉的 IP 协议、IPX 协议等,都可以通过 PPP 报文在点对点链路上进行传输。从结构上看,PPP 报文有着特定的格式,如同一个规整的包裹,包含多个重要部分,每个部分都承担着独特的职责,共同保障数据准确无误地到达目的地。
二、PPP 设备报文转发流程深度剖析
(一)链路建立阶段
PPP 链路建立的起始阶段是至关重要的,这一阶段主要由链路控制协议(LCP)主导 。当通信双方的物理层检测到线路激活,比如在串口连接中检测到载波信号,PPP 链路就从 Dead 阶段进入到 Establish 阶段,也就是链路建立阶段。在这个阶段,通信双方通过交换 LCP 配置选项报文来协商链路的相关参数。
配置选项丰富多样,其中最大接收单元(MRU)的协商决定了设备能够接收的最大数据包大小,常见的 MRU 值为 1500 字节,这在以太网环境中较为常见,不过在一些特殊场景下,可能会根据实际需求进行调整。验证方式的协商则关乎链路的安全性,如果网络环境对安全性要求较高,可能会选择后续介绍的 CHAP 认证方式;若对安全性要求相对较低,PAP 认证方式也是一种选择,当然,也可以选择不进行认证。魔术字(magic number)用于检测链路是否存在环路,通过两端设备交换魔术字,若发现魔术字相同,就意味着可能存在环路,从而避免数据在环路中不断循环,造成网络拥塞。
假设我们有设备 A 和设备 B 通过 PPP 链路相连,设备 A 首先发送 Configure - Request 报文,其中包含它期望的 MRU 值、希望采用的认证方式以及生成的魔术字等配置选项。设备 B 收到后,如果认可这些配置,就会发送 Configure - Ack 报文进行确认;若有不认可的选项,比如设备 B 支持的 MRU 值更小,它会发送 Configure - Nak 报文,告知设备 A 自己支持的 MRU 值,设备 A 收到 Configure - Nak 报文后,会根据设备 B 的反馈调整配置,再次发送 Configure - Request 报文,直到双方就所有配置选项达成一致,此时 LCP 状态机变为 Opened 状态,底层链路成功建立,为后续的通信奠定了基础。
(二)认证阶段(若启用)
PAP 认证
PAP(Password Authentication Protocol,密码验证协议)认证过程相对简单直接,采用两次握手方式。在认证过程中,被认证方向认证方发送包含用户名和密码的认证请求报文,这些信息以明文形式传输,这就像是把家门钥匙直接暴露在外,存在较大的安全风险,一旦传输过程中的数据被窃取,用户名和密码就会泄露。
认证方收到请求后,会在本地用户表中查找是否存在该用户名,若找到,就进一步核对密码是否正确。如果用户名和密码都匹配,认证方会发送认证成功的响应报文,允许链路继续建立;若用户名不存在或者密码错误,认证方则发送认证失败的响应报文,此时链路可能会被终止,回到 Dead 阶段,比如家庭网络中,用户通过 PPP 协议连接到 ISP 的路由器,如果用户名或密码错误,就无法成功连接到互联网。
CHAP 认证
CHAP(Challenge - Handshake Authentication Protocol,挑战握手验证协议)认证则更加注重安全性,采用三次握手方式,并且在网络中不直接传输用户密码。认证过程开始时,认证方主动向被认证方发送一个包含随机数的挑战报文(Challenge),同时附上本端的用户名。被认证方接到挑战报文后,会根据报文中的随机数、配置的密码(或者从用户表中查找对应用户名的密码),通过哈希算法(如 MD5 算法)计算出一个哈希值,然后将这个哈希值和自己的用户名一起发回给认证方作为响应(Response)。
认证方收到响应后,会使用自己保存的被认证方密码和报文中的随机数,按照相同的哈希算法计算哈希值,并与被认证方返回的哈希值进行比较。如果两者一致,说明被认证方拥有正确的密码,认证通过;如果不一致,则认证失败。而且,CHAP 认证还具有周期性重新认证的特点,在整个连接过程中,认证方会不定时地向被认证方发送挑战报文,再次进行认证,以此来防止第三方冒充被认证方进行攻击,这种认证方式在对安全性要求较高的企业网络或金融机构网络中被广泛应用。
(三)网络层协议协商阶段
在 PPP 链路完成认证阶段(若启用认证)后,便进入网络层协议协商阶段,此阶段由网络控制协议(NCP)负责。以 IP 控制协议(IPCP)为例,它主要用于协商 IP 相关的参数,其中最关键的就是 IP 地址的分配。
在动态 IP 地址分配场景中,比如家庭用户通过拨号上网连接到 ISP,用户设备(如路由器)会向 ISP 的接入服务器发送包含配置请求代码(类型为 1)的 IPCP 数据帧,请求动态分配 IP 地址。接入服务器收到请求后,如果有可用的 IP 地址资源,就会选择一个未使用的 IP 地址,通过发送配置响应(类型为 2)数据帧,将该 IP 地址分配给用户设备。用户设备收到分配的 IP 地址后,会发送配置确认(类型为 3)数据帧,以完成 IP 地址的动态协商过程。这样,用户设备就获得了在网络中通信所需的 IP 地址,可以与其他网络设备进行数据交互。
而在静态 IP 地址配置的情况下,通信双方在 IPCP 协商阶段会直接交换预先配置好的 IP 地址信息,双方确认对方的 IP 地址合法且在同一网段(如果需要通信的话),没有冲突后,就完成了 IPCP 协商,为后续的数据转发做好准备。
(四)数据转发阶段
当 PPP 链路完成前面几个阶段的协商和配置后,就进入了数据转发的关键阶段。在这个阶段,PPP 设备如同一位精准的快递分拣员,依据路由表和转发表来决定报文的转发路径。
路由表是设备进行路由决策的核心依据,它包含了目的网段、网络掩码、出接口和下一跳等重要信息。当 PPP 设备接收到一个报文时,