写在前面:
仅供学习使用
PPPoE协议概述
-
PPPoE是一种把PPP帧封装到以太网帧的链路层协议,所以抓包的时候抓的是以太网协议。
-
PPPoE利用以太网将大量主机组网,不仅具有以太网快速简便的特点还有PPP强大的功能,任何能被PPP封装的协议都能通过PPPoE传输,且可以根据一个PPP对话的建立和释放对用户进行基于时长或者流量的统计,计费方式灵活方便。还可以提供动态IP地址分配方式,无需添加设备就可解决IP地址短缺的问题,且能够定位用户在本局域网内的活动。
-
PPPoE的利用场景在modem上,modem(猫)将发送时的数字信号(网线)解调成模拟信号(电话线),接收时将模拟信号解调成数字信号。现在的无线路由器一般集成了猫、路由器、无线的功能。
-
PPPoE在DSL(数字用户线路)中的应用:会用到一个DSLAM(数字用户线路接入复用器)用来让用户上网。
PPPoE会话建立过程
-
发现阶段:获取对方的以太网地址,以及确定唯一的PPPoE会话。
-
PADI(广播)->PADO(单播)->PADR(单播)->PADS(单播)。
-
客户端广播发送 发起分组PADI 发现接入服务器、所有的PPPoE服务器接收到PADI报文后,将客户端请求的服务与自身服务对比,能提供服务的服务器单播发送 响应分组PADO 作为client的服务端。客户端从所有PADO中选择最先接收到PADO报文对应的服务器为服务端,单播发送 请求分组PADR 。服务端接收到PADR后单播发送 确认分组PADS 给客户端,其中包含了一个唯一的SESSION-ID用来表示会话建立。
-
会话阶段:PPP协商阶段和PPP报文传输阶段。
-
会话终结阶段:会话建立后的任意时刻,发送报文结束PPPoE会话。
报文封装
-
以太网报文
-
Dmac(目的地址)=6B | Smac(源地址)=6B | ether_type=2B | PPPoE Packet | FCS=2B
-
PPPoE报文
-
version=4b | type=4b | code=1B | session-id=2B | length=2B | PPP Packet