文章目录
前言
一、PPPoE的简单介绍
1.PPPoE客户端
2.PPPoE服务器
3.一些典型用例
4.PPPoE帧格式
二、PPPoE会话建立过程
三、PPPoE抓包详解
1.PADI
2.PADO
3.PADR
4.PADS
5.会话阶段
协商阶段
认证阶段
总结
前言
PPPoE(Point-to-Point Protocol over Ethernet),表面中文意思是以太网上的PPP。该协议提供了在广播式的网络比如以太网中,多台主机连接到远端的访问集中器(访问集中器也称为宽带接入服务器)上的一种标准。在于以太网并非点到点网络,而是多点到多点的广播网络。这跟之前的PPP的区别就在这里,不是单纯点到点了。PPPoE就整体来看就分成三个阶段,发现阶段,会话阶段,结束阶段。
一、PPPoE的简单介绍
PPPoE就看两端,客户端和服务器。PPPoE协议提供了在广播式的网络中多台主机连接到远端的访问集中器(访问集中器也称为宽带接入服务器)上的一种标准。PPPoE协议的作用是:实现有效的用户管理,进行网络接入计费等。
1.PPPoE客户端
设备提供了PPPoE服务器的功能,支持动态分配IP地址,提供多种认证方式,和防火墙配合,可以对内部网络提供安全保障,适用于校园、智能小区等通过以太网接入Internet的组网应用。
2.PPPoE服务器
局域网内所有主机通过同一个PPPoE会话传送数据,主机上不用安装PPPoE客户端拨号软件,而且同一个局域网中的所有主机可以共享一个帐号。
3.一些典型用例
PPPoE Client
当AR设备将PPPoE作为一种WAN(Wide Area Network)接入方式时,AR充当PPPoE Client的角色,BRAS(Broadband Remote Access Server)作为PPPoE Server。
PPPoE Server
AR1200设备提供了PPPoE Server的功能,支持动态分配IP地址,提供本地认证、RADIUS/HWTACACS等多种认证方式,适用于校园、智能小区等通过以太网接入Internet的组网应用。
4.PPPoE帧格式
Ver: 版本号, 4bit, PPPoE规范的本版本为0x01
Type: 类型, 4bit, PPPoE规范的本版本应设置为0x01
Code: 代码字段、8bit, 根据两阶段中各种数据包的不同功能而值不同
Session_ID: 长度是16比特。是一个网络字节序的无符号值。其值在后面Discovery数据包中定义。
Length: 长度是16比特。该值是PPPoE的Payload长度。它不包括以太网头部和PPPoE头部的长度。
Payload: PPPoE的Payload,包含0个或多个Tag。
上面粉色部分也就是以太网格式帧如下:
Destination_address域
以太网单播目的地址或者以太网广播地址(0xFFFFFFFF)
在Discovery数据包中,该域的值是以太网广播地址。
在PPPoE会话流量中,该域必须是Discovery阶段已经确定的通信对方的单播地址。
Source_address域
源设备的以太网MAC地址。
Ethernet_Type域
当值为0x8863时表示Discovery阶段
当值为0x8864时表示PPPoE会话阶段
二、PPPoE会话建立过程
PPPoE拨号过程如上图,现在我们先来看发现阶段:
1.发现阶段第一步,客户端向服务器发送PADI数据包
2.发现阶段第二步,访问集中器(AC)以单播的方式发送一个PADO数据包对主机的请求做出应答。目的地址为主机的MAC地址,PADO数据包必须包含一个类型为AC-Name 的 Tag(包含了访问集中器的名字)。
3.发现阶段第三步因为PADI数据包是广播的,所以主机可能收到不止一个的PADO报文。主机在收到报文后,会根据AC-Name或者PADO所提供的服务来选择一个AC,然后主机向选中的AC单播一个PADR 数据包。
4.发现阶段最后一步。当AC在收到 PADR报文时,就准备开始一个PPP的会话了。它为PPPoE会话创建一个唯一的会话ID并用单播一个PADS数据包来给主机做出响应。
PPPoE会话阶段又是怎样的呢:
PPP会话的建立,需要两端的设备都发送LCP (Link Control Protocol)数据包来配置和测试数据通信链路。
1.会话阶段第一步协商阶段,LCP 的 Request 主机和AC都要给对方发送,LCP协商阶段完成最大传输单元,是否进行认证和采用何种认证方式的协商。
2.会话阶段第二步认证阶段,会话双方通过LCP协商好的认证方法进行认证,如果认证通过了,才可以进行下面的网络层的协商。认证过程在链路协商结束后就进行。
3.会话阶段第三步ICPC协商阶段,用户和接入设备对P服务阶段的一些要求进行多次协商,以决定双方都能够接收的约定。如:IP业务阶段使用的P压缩协议等。双方的协议是通过报文中包含的Option项进行协商的,每一个Option都是一个需要协商的问题。最后双方都需要对方答复Configure_Ack 的同意报文。
最后要终止,进入Terminate终止阶段后且资源释放完,即进入Dead阶段,终端连接通信包PADT,PADT报文接收端的服务器或客户端能够根据验证标识准确识别接收到的PADT报文是否是由当前PPPoE会话中合法的用户发送的,从而进行终止当前PPPoE会话或丢弃PADT报文的处理。
三、PPPoE抓包详解
1.PADI
首先客户端向服务器发送PADI数据包,抓包结果如下:
Code域置为0x09,会话ID域必须置为0x0000。
2.PADO
抓到的目的地址为主机的MAC地址,Code域置为0x07,会话ID域必须置为0x0000。PADO数据包必须包含一个类型为AC-Name的 Tag(包含了访问集中器的名字)。
3.PADR
目的地址域为AC的MAC地址,Code域置为0x19,会话ID域必须置为Ox0000。PADR报文必须且只能包含一个Tag_Type为Service-Name的 Tag,表明主机请求的服务。
4.PADS
目的地址域为主机的MAC地址,Code域置为0x65,会话ID必须设置为所创建好的会话ID。
5.会话阶段
PPP会话的建立,需要两端的设备都发送LCP(Link Control Protocol)数据包来配置和测试数据通信链路。
协商阶段
LCP的Request主机和AC都要给对方发送,LCP协商阶段完成最大传输单元,是否进行认证和采用何种认证方式的协商。
Config-ACK : 若完全支持对端的LCP 选项,则回应Config-ACK 报文,报文中必须
完全协带对端Request 报文中的选项。
Config-NAK : 若支持对端的协商选项, 但不认可该项协商的内容, 则回应Config-NAK
报文,在Config-NAK 的选项中填上自己期望的内容,如:对端MRU 值为1500 ,而自己期
望MRU 值为1492 ,则在Config-NAK 报文中埴上自己的期望值1492 。
Config-Reject : 若不能支持对端的协商选项,则回应Config-Reject 报文,报文中带
上不能支持的选项, 如Windows 拨号器会协商CBCP(被叫回呼) ,而ME60 不支持CBCP
功能,则回将此选项拒绝掉。
认证阶段
这个是我们协商出来使用的加密协议。可以在PPPOE上更改。目前一般用三种CHAP,另一种是PAP现在
总结
PPPoE就是以太网上的点对点协议,是将点对点协议(PPP)封装在以太网(Ethernet)框架中的一种网络隧道协议。由于协议中集成PPP协议,所以实现出传统以太网不能提供的身份验证、加密以及压缩等功能,也可用于缆线调制解调器和数字用户线路等以以太网协议向用户提供接入服务的协议体系。
我们的学习最重要的一点就是典型的应用场景下的PPPOE工作到底是如何的,清楚他的协议进行的流程并且对抓包中的重要信息能看懂。
————————————————
版权声明:本文为CSDN博主「大马哈鱼拌柠檬」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44719839/article/details/125885580