PPPOE
This is my study note of pppoe.
简述
1 | PPPOE是一种点对点的协议,即一个节点只能访问另一个指定的节点。PPP协议主要工作在数据链路层,其最重要的功能是提供了身份验证功能,但是PPP协议虽然提供了身份验证的功能,但是不包含地址的信息,因此PPP协议无法直接运用在网络中,而PPPOE就是结合PPP协议身份验证的功能,在PPP协议的基础上将报文封装成PPPOE报文,实现点对点通信。 |
特点:
- PPPOE实现了传统以太网上不能提供身份验证、加密以及压缩等功能
- PPPOE通过唯一的Session ID可以很好的保障用户的安全性
- PPPOE拨号上网让终端设备连接ISP从而连接宽带接入
- 可用于调制解调器和数字用户线路等以太网线
- PPP协议是一种C/S的协议,即客户端和服务端协议
PPPOE报文
报文字段 | 说明 |
---|---|
Ver域 | PPPOE版本号,值为0x01 |
Type域 | PPPOE类型,值为0x1 |
Code域 | Code域为0x00,表示会话数据。Code域为0x09,表示PADI报文;Code域为0x07,表示PADO或PADT报文;Code域为0x19,表示PADR报文;Code域为0x65,表示PADS报文。 |
Session_ID | 固定值 |
Length域 | 定义PPPoE的Payload域长度。不包括以太网头部和PPPoE头部的长度。 |
PPPOE工作阶段
1.发现阶段->2.会话阶段->3.LCP协商建立链路->4.CHAP/PAP认证->5.NCP协商阶段->6.用户上线->7.计费->8.探测
PPPOE发现阶段
Discover阶段总共有四个步骤组成:
- 广播PADI,请求建立连接
1
如果此时PADI报文中service-name不为空,则服务器将用配置的service-name和该报文中的service-name进行完全匹配性检测,相同则继续提供服务,否则不提供服务。
- 回应PADO
1
此时,Code域为0x07。
- 会话请求PADR
1
从返回PADO报文值的PPPOE Serer中选定符合条件的PPPOE Server,并返回一个PADR(非广播),同时Code域为0x19。
- PPPOE Serer发送PADS
1
PPPOE Serer会产生一个唯一的会话标识,并通过PADS回复给PPPOE CLient,若无错误则进行PPPOE会话阶段。
PPPOE会话阶段
- 首先进行LCP协商
1
2
3
4PPPOE Client和Server互相发送LCP Configure-Request报文。双方收到Configure-Request报文后,都回复Configure Ack报文,表示LCP链路建立成功,否则继续发送Configure-Request报文:
1.如果在设定的协商次数内回应ack报文,则LCP链路建立成功
2.超出协商次数。则终止LCP协商
3.连接成功后,Server会周期性给Client发送LCP Echo-Request报文,然后接收PPPoE Client回应的Echo-Reply报文,来探测LCP链路是否正常 - 随后进行PAP/CHAP认证
1
2
3
4
51.PAP认证:
两次握手,通过用户名和密码对用户进行认证,以明文的方式传递用户名和密码
适用于安全要求较低的环境
2.CHAP认证:
CHAP认证为三次握手协议,CHAP认证方式只在网络上传输用户名,不传输用户密码,安全性比PAP要高。
NCP协商
1 | NCP有很多种,如IPCP、BCP、IPv6CP,最为常用的是IPCP(Internet Protocol Control Protocol)协议。NCP的主要功能是协商PPP报文的网络层参数,如IP地址,DNS Server IP地址,WINS Server IP地址等。 |
会话维持
1 | 设备主动发送Echo Request进行PPPoE心跳保活,若3次未得到服务器的响应,则设备主动释放地址。发LCP Echo Request 的时候,魔术字字段要和之前通信的Configure_Request使用的魔术字字段保持一致。 有些设备或终端不支持主动发送 Echo-Request 报文, 只能支持回应Echo-Reply报文。 |
会话结束
1 | PPPoE 还有一个PADT(PPPOE Active Discovery Terminate)分组,它可以在会话建立后的任何时候发送,来终止PPPoE会话,也就是会话释放。它可以由主机或者接入集中器发送,目的地址填充为对端的以太网的MAC地址。 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 风声向寂!
评论
ValineDisqus