PPP完整流程五个阶段
1. LCP链路建立
2. 使用PAP或者CHAP验证客户端身份
3. 所使用IPCP配置IP层参数
4. 使用LCP断开连接
5. 断开物理连接
PPP帧格式
F | A | C | 协议 | 数据….. | FCS | F |
---|
7E | FF | 03 | 协议 | 数据…. | FCS | 7E |
说明:
字段 | 说明 |
---|
7E | 起始、结束标识符,数据中出现7E使用7D5E转义,7D使用7D5D转义 |
FF | 地址控制,PPP端到端,所以为FF |
C | 控制字段,包含帧类型和序号 |
协议 | 表示封装的什么协议取值见下表 |
FCS | 帧校验和字段 |
协议字段取值:
取值 | 协议 |
---|
C021 | LCP |
C223 | CHAP |
C23 | PAP |
8021 | IPCP |
C025 | LQR |
LCP协议
各种选项
类型 | 报文名称 | 报文代码 |
---|
链路配置 | Configure-Request | 1 |
链路配置 | Configure-Ack | 2 |
链路配置 | Configure-Nak | 3 |
链路配置 | Configure-Reject | 4 |
链路终止 | Terminate-Request | 5 |
链路终止 | Terminate-Ack | 6 |
链路维护 | Code-Reject | 7 |
链路维护 | Protocol-Reject | 8 |
链路维护 | Echo-Request | 9 |
链路维护 | Echo-Reply | 10 |
链路维护 | Discard-Request | 11 |
LCP位于PPP帧的数据部分,由一系列选项组成,其中
1.头部
2.TLV(Type Length Value)组成,每个TLV:
类型 | 长度 | 值 |
---|
8b | 8b | 前面长度指定 |
01 | 04 | MRU |
03 | 04 | 认证协议(C023、C223) |
04 | 04 | 质量协议 |
05 | 06 | 魔数(0xa1a7e22e) |
07 | 02 | Protocol-Field-Compression |
08 | 02 | Address-and-Control-Field-Compression |
链路配置过程
1. 发起方发送Configure-Rquest报文,包含请求协商的选项
2. 回应方可能有:
1. 若所有选项都可以接受,则回复Configure-Ack
2. 选项可识别但是部分接受,回复Configure-Nak,包含拒绝的选项
3. 部分选项不可识别,回复Configure-Reject,包含不能识别的选项
3. 发起方接受到Confiure-Nak或者Configure-Reject后,便重新发起Configure-Request但不包含拒绝的选项
4. 重复以上过程直到发起方得到Configure-Ack
请求认证过程
PAP(Password Authentication Protocol)(C023)
1. 报文格式
1.1 认证请求
0 - 7 | 8 - 15 | 16 - 31 |
---|
类型(1) | ID | 长度 |
身份长度 | 身份 | ^ |
口令长度 | 口令 | ^ |
1.2 认证回复
0 - 7 | 8 - 15 | 16 - 31 |
---|
类型(2/3) | ID | 长度 |
消息长度 | 消息 | ^ |
2. 缺点:
明文传输(虽然你可以加密),不安全,而且在后面的链路阶段不可以使用
CHAP(Challenge Handshake Authentication Protocol)(C223)
1.流程
认证方(IPS) | | 被认证方(用户) |
---|
Challenge | –>c | A1=Hash(c,s) |
- | <–A1 | Response |
Hash(c,s)==A1 | –>Success | - |
Hash(c,s)!=A1 | –>Failure | - |
2. 报文格式
2.1Challenge报文
0 - 7 | 8 - 15 | 16 - 31 |
---|
类型(1/2) | ID | 长度 |
值长度 | 值 | ^ |
^ | 名字 | ^ |
2.2Response报文
0 - 7 | 8 - 15 | 16 - 31 |
---|
类型(3/4) | ID | 长度 |
- | 消息 | - |
PPPOE协议
1. PPPOE思路
1. 将PPP协议用于以太网,以太网协议对认证支持度不好
2. 用以太网帧作为传输工具,其中以太网帧头部的帧类型0x8869(发现)/0x8864(其他)
2. PPPOE阶段
1. 发现阶段(PPPOE Active Discovery)(PAD*)
阶段|作用
---|---
发起(Initiation)(PADI)|通过广播请求以获取可用的服务器的报文
提供(Offer)(PADO)|收到请求后,服务器返回的报文
请求(Rquest)(PADR)|客户端向服务器发起请求
确认(Session-Confirmation)(PADS)|服务器相应请求
终止(Termination)(PADT)|终止会话
3. PPPOE报文格式
0 - 4 | 4 - 8 | 8 - 16 | 16 - 31 |
---|
版本 | 类型 | 代码 | 会话ID |
长度 | ^ | 数据 | ^ |
其中版本、类型固定为1。
阶段 | 代码 | 会话ID | 源MAC地址 | 目标MAC地址 |
---|
PADI | 0x09 | 0 | 客户 | 硬件广播 |
PADO | 0x07 | 0 | 服务器 | 客户 |
PADR | 0x19 | 0 | 客户 | 服务器 |
PADS | 0x65 | 唯一 | 服务器 | 客户端 |
PADT | 0xa7 | 终止会话的id | 发送方 | 目标方 |
会话 | 0x00 | 当前会话id | 发送 | 目标方 |
1. PADT和会话可以由服务器/客户发出
2. 会话的唯一id在发起阶段(PADS)给出
3. 问题:多层网络怎么广播到服务器?
4. 大体报文格式
Frame
EthernetⅡ
PPPOE
PPP
LCP/PAP/CHAP/IPCP