网络协议分析-PPP与PPPOE
本文最后更新于:几秒前
PPP与PPPOE协议
PPP协议:
PPP二层协议,支持多协议,提供身份认证,支持数据压缩,支持动态地址协商,支持多链路捆绑。
协议帧格式:
| 标志 | 地址 | 控制 | 协议类型 | 信息域 | 校验和 | 标志 |
PPP帧以0x7E 为标志开始和结束。
地址域固定值为0xFF 这是因为点到点链路对方地址固定。
控制域固定位是0x3,协议域用来区分信息域中承载的信息类型:
PPP协议包含以下三个组件:
1.链路控制协议LCP
2.网路控制协议NCP
3.ppp扩展协议(主要用于链路捆绑)
其中LCP 完成数据链路的配置和测试,由NCP完成通信参数的配置。
在LCP阶段配置链路上最大帧长,使用的鉴别协议(身份验证是在LCP阶段完成的)
NCP阶段配置客户端的IP地址。
LCP报文主要分为:
1.链路配置报文
▪ Config-request 发起配置过程
▪ config-ACK 所有选项都被接受和识别
▪ config-Nak 如果协商参数全部被识别但有部分被接受,会返回这种数据包(其中包含否认的选项)
▪ config-reject 如果也有协商参数不被识别或不被接受则返回这个数据,其中不包含拒绝的选项
当通信双方需要建立链路时,无论哪一方都需要发送config-Request报文并携带希望协商的参数
2.链路终止报文
a.Terminate-Request
b.Terminate-ACK
链路要关闭一个连接时,想要关闭的一端会持续发送 Terminate-Request 数据包,直到收到一个Terminate-ACK数据包,这时候发起端将断开连接。
3.链路维护报文
Magic Number: 用来防止环路,当接收端收到一个Config-Request时,会将此报文与上一次接受到的Config-Request报文相比较,如果两个报文中携带的magic number 不一致,则认为链路没有环路,否则会认为链路存在环路。
IPCP:含有三个配置选项,多个IP地址,IP压缩,IP地址
CHAP认证:
主认证方向被认证方发送一个随机数C,被认证方将这个随机数C+密钥 作为Hash函数的输入,计算出一个散列值,然后将这个散列值发送给 主认证方,主认证方也这样计算散列值,然后比较。
PPPOE:
工作流程:
发现阶段,会话阶段
发现阶段:获取PPPOE终端的以太网MAC地址,并建立一个唯一的PPPOE session-id,PPPOE 发现阶段结束后,进入标准PPP会话阶段。
发起:客户端通过广播获取可用的AC。
提供:收到请求后,如果AC可以提供服务,则返回 PPPOE active Discovery offer 报文
请求:如果客户端收到来自多个AC的应答,则必须选择其中一个,并向该AC发起请求。
确认:收到请求的AC向客户端返回确认,从而建立ppp连接与会话。
PPPOE 报文格式:
Ver : PPPOE 版本号 值为0x1
Type:PPPOE类型 值为0x1
Code:PPPOE报文类型
Session_ID: 对于一个给定的PPP会话,该值是一个固定值,并且与以太网S_add 和 D_add 一起实际定义了一个ppp会话,值0xffff 为将来的使用保留,不允许使用
length: PPPOE payload域长度
文章不正确之处,欢迎指出,谢谢