自学教程 从零学编程

PPP 协议

一、PPP 是什么

PPP(Point-to-Point Protocol,点对点协议),数据链路层协议。
用于点对点串行链路上传输网络层数据包(IP等)。
典型场景:早期电话拨号上网、串口、路由器之间串口链路、4G/5G拨号。

前身是SLIP(串行线路网际协议);SLIP只有简单封装,无校验、无认证;PPP对SLIP全面增强。

二、PPP 的三大组成部分

  1. LCP(链路控制协议 Link Control Protocol)
    负责链路建立、配置、检测、协商链路参数;协商最大帧长、是否开启认证、魔术字(检测环路)。链路建立阶段最先跑LCP。
  2. NCP(网络控制协议 Network Control Protocol)
    LCP链路就绪后,NCP协商网络层参数;常用IPCP(IP Control Protocol),协商两端IP地址。
  3. PPP帧封装
    对网络层报文进行封装、差错检测。

三、PPP完整会话阶段

  1. 链路建立阶段(LCP协商)
    两端交换LCP报文,协商链路参数(认证方式、MRU魔术字等)。
  2. 认证阶段(可选)
    LCP协商成功后,可以进行身份认证,PAP / CHAP。
    • PAP:密码明文发送,不安全;
    • CHAP:挑战握手,密码不在线路上传输,更安全。

认证失败直接关闭链路。

  1. 网络层协商阶段(NCP/IPCP)
    协商IP地址,两端分配IP,网络层协议(IP)可以开始通信。
  2. 数据传输阶段
    封装IP报文,在PPP链路上收发数据。
  3. 链路终止阶段
    任意一方发送LCP关闭报文,断开链路。

记忆顺序:LCP建立 → 认证 → NCP协商IP → 传数据 → 断开链路

四、PPP帧格式

标志字段(0x7E) | 地址 | 控制 | 协议域 | 信息(IP包) | FCS校验 | 标志(0x7E)
  • 标志字段:0x7E,标识帧开始与结束
  • 地址、控制字段:固定值,点对点链路不需要MAC寻址
  • 协议域:标识里面承载的是什么协议(0x0021代表IP)
  • FCS:帧校验,差错检测

PPP没有MAC地址,因为是点对点链路,不存在广播。

五、PAP 和 CHAP 认证对比

项目PAPCHAP
全称Password Authentication ProtocolChallenge Handshake Authentication Protocol
安全弱,账号密码明文传输强,密码不在线路传输
流程客户端直接发用户名+密码服务器发随机挑战串;客户端用密码哈希后返回;服务端比对哈希
认证时机链路建立阶段一次性认证周期性可重复挑战

六、PPP vs SLIP

  • SLIP:仅封装IP,无校验,无认证,不能协商IP;淘汰。
  • PPP:有LCP/NCP,支持差错校验、认证、动态IP协商,支持多网络层协议。

七、优缺点

✅ 优点

  1. 支持身份认证PAP/CHAP;
  2. 支持差错检测(FCS);
  3. 可以动态协商IP地址;
  4. 支持多种网络层协议(IP等);
  5. 简单,适合点对点串行链路。

❌ 缺点

  1. 只适用于点对点链路,不能用于以太网广播网络;
  2. PAP认证存在明文安全风险,不推荐使用。

八、小结

  1. PPP 数据链路层点对点协议,用于串行点对点链路;
  2. 由LCP(链路协商)、认证、NCP(网络层参数协商)、帧封装组成;
  3. 认证两种方式:PAP明文,CHAP哈希挑战(推荐);
  4. 通信流程:LCP建链路 → 认证 → IPCP分配IP → 传输IP报文 → 释放链路;
  5. 没有MAC地址,不支持广播;SLIP的替代方案。

思考题:PPP工作在点对点链路,为什么PPP帧里面保留地址字段却不使用MAC地址?

标签:

0 条笔记