PPP帧格式:
flag 1B | address 1B | control 1B | protocol type 2B | payload | crc 2B | flag 1B |
0x7E | 0xFF | 0x03 | 0xc021:LCP 0xc023:PAP 0xc223:CHAP 0x0021:IP | 最大1500 | 0x7E |
其中:
flag为帧起始和结束符,用于帧定界用的
address字段、control字段都是固定值,因为点对点通信已经没有地址的概念了
PPP封装在PPPoE头内只有protocol type和payload保留
PPPoE头:
version 4bits | type 4bits | code 1B | session ID 2B | length 2B | PPP |
0x1 | 0x1 | 0x00:会话数据 0x09:PADI 0x07:PADO 0x19:PADR 0x65:PADS |
其中:
version、type都是固定的
session ID是discovery阶段结束后才有的
code的0x00,包括LCP、PAP/CHAP、IPCP、IP等数据
PPP作用:
提供了一种点对点链路上封装网络层协议的方法
PPPoE交互流程:
PADI(PPPoE active discovery initiation)
PADO(PPPoE active discovery offer)
PADR(PPPoE active discovery request)
PADS(PPPoE active discovery session-confirm)
以上四个阶段用于获得终端用户的MAC并确定唯一的session ID
LCP交互:
配置的确认,如MRU(maximum receive unit,最大接收单元)、认证方法(PAP或CHAP)等
PAP/CHAP交互:
PAP:明文发送用户名和密码让服务器确认
CHAP:服务器发送一段随机报文,客户端用密钥加密后返回(MD5)
NCP(IPCP)交互:
IP、DNS服务器的分配