PPPoE协议交互过程

  • 1、发现阶段(PPPoED:PPPoE Discovery)
    • 1.1 PADI(PPPoE Active Discovery Initiation)
    • 1.2 PADO(PPPoE Active Discovery Offer)
    • 1.3 PADR(PPPoE Active Discovery Request)
    • 1.4 PADS(PPPoE Active Discovery Session-confirmation)
  • 2、会话阶段(PPPoES:PPPoE Session)
    • 2.1 LCP协商阶段(LCP:Link Control Protocol)
      • (1)LCP协议数据报文分类
      • (2)LCP协商过程
    • 2.2 认证阶段(PPP Authentication:PAP/CHAP)
      • 2.2.1 PAP(Password Authentication Protocol,口令认证协议)认证
    • 2.3 NCP协商阶段(NCP:Network Control Protocol)
    • 2.4 会话维持(Session Keep-alive)
    • 2.5 会话结束(Session Termination)
  • 3、抓包分析PPPoE连接过程

PPPoE(Point to Point Protocol over Ethernet,基于以太网的点对点协议)的工作流程包含发现(Discovery)和会话(Session)两个阶段,发现阶段是无状态的,目的是获得 PPPoE 终端(在局端的ADSL设备上)的以太网 MAC 地址,并建立一个惟一的 PPPoE SESSION-ID。发现阶段结束后,就进入标准的PPP会话阶段。

1、发现阶段(PPPoED:PPPoE Discovery)

1.1 PADI(PPPoE Active Discovery Initiation)

主机广播发起分组,分组的目的地址为以太网的广播地址 0xffffffffffff,CODE(代码)字段值为0×09(PADI Code),SESSION-ID(会话ID)字段值为0x0000。PADI分组必须至少包含一个服务名称类型的标签(Service Name Tag,字段值为0x0101),向接入集中器提出所要求提供的服务。

1.2 PADO(PPPoE Active Discovery Offer)

接入集中器收到在服务范围内的PADI分组,发送PPPoE有效发现提供包分组,以响应请求。其中CODE字段值为0×07(PADO Code),SESSION-ID字段值仍为0x0000。PADO分组必须包含一个接入集中器名称类型的标签(Access Concentrator Name Tag,字段值为0x0102),以及一个或多个服务名称类型标签,表明可向主机提供的服务种类。PADO和PADI的Host-Uniq Tag值相同。

1.3 PADR(PPPoE Active Discovery Request)

主机在可能收到的多个PADO分组中选择一个合适的PADO分组,然后向所选择的接入集中器发送PPPoE有效发现请求分组。其中CODE字段为0x19(PADR Code),SESSION_ID字段值仍为0x0000。PADR分组必须包含一个服务名称类型标签,确定向接入集线器(或交换机)请求的服务种类。当主机在指定的时间内没有接收到PADO,它应该重新发送它的PADI分组,并且加倍等待时间,这个过程会被重复期望的次数。

1.4 PADS(PPPoE Active Discovery Session-confirmation)

接入集中器收到PADR分组后准备开始PPP会话,它发送一个PPPoE有效发现会话确认PADS分组。其中CODE字段值为0×65(PADS Code),SESSION-ID字段值为接入集中器所产生的一个惟一的PPPoE会话标识号码。PADS分组也必须包含一个接入集中器名称类型的标签以确认向主机提供的服务。当主机收到PADS 分组确认后,双方就进入PPP会话阶段。PADS和PADR的Host-Uniq Tag值相同。

图1 PPPoE的协商流程

2、会话阶段(PPPoES:PPPoE Session)

PPP会话的建立,需要两端的设备都发送LCP数据包来配置和测试数据通信链路。
用户主机与接入集中器根据在发现阶段所协商的PPP会话连接参数进行PPP会话。一旦PPPoE会话开始,PPP数据就可以以任何其他的PPP封装形式发送。所有的以太网帧都是单播的。PPPoE会话的SESSION-ID一定不能改变,并且必须是发现阶段分配的值。

2.1 LCP协商阶段(LCP:Link Control Protocol)

LCP的Request主机和AC都要给对方发送,LCP协商阶段完成最大传输单元(MTU),是否进行认证和采用何种认证方式(Authentication Type)的协商。

(1)LCP协议数据报文分类

链路配置报文:用来建立和配置一条链路,主要包括Configure-Request、Configure-Ack、Configure-Nak和Configure-Reject报文
链路维护报文:用来管理和调试链路,主要包括Code-Reject、Protocol-Reject、Echo-Request、Echo-Reply和Discard-Request报文
链路终止报文:用来终止一条链路,主要包括Terminate-Request和Terminate-Reply报文

(2)LCP协商过程

LCP协商的过程如下:协商双方互相发送一个LCP Config-Request报文,确认收到的Config-Request报文中的协商选项,根据这些选项的支持与接受情况,做出适当的回应。若两端都回应了Config-ACK,则标志LCP链路建立成功,否则会继续发送Request报文,直到对端回应了ACK报文为止。

图2 LCP协商的基本过程

说明:
(1)Config-ACK:若完全支持对端的LCP选项,则回应Config-ACK报文,报文中必须完全协带对端Request报文中的选项。
(2)Config-NAK:若支持对端的协商选项,但不认可该项协商的内容,则回应Config-NAK报文,在Config-NAK的选项中填上自己期望的内容,如:对端MRU值为1500,而自己期望MRU值为1492,则在Config-NAK报文中埴上自己的期望值1492。
(3)Config-Reject:若不能支持对端的协商选项,则回应Config-Reject报文,报文中带上不能支持的选项,如Windows拨号器会协商CBCP(被叫回呼),而ME60不支持CBCP功能,则回将此选项拒绝掉。
需要指出的是PPP协商是双向的,也就是说双方都会发出Configure-Request请求,并且有可能协商多次才能成功,最理想的就是一对Configure-Request&Configure-Ack就协商成功,下面是几种常见的协商过程。

一次交互 两次交互--Nak情况 两次交互--Reject情况 多次交互

2.2 认证阶段(PPP Authentication:PAP/CHAP)

会话双方通过LCP协商好的认证方法进行认证,如果认证通过了,才可以进行下面的网络层的协商。认证过程在链路协商结束后就进行。

2.2.1 PAP(Password Authentication Protocol,口令认证协议)认证

PAP为两次握手协议,它通过用户名及口令来对用户进行验证。PAP验证过程如下:
当两端链路可相互传输数据时,被验证方发送本端的用户名及口令到验证方,验证方根据本端的用户表(或Radius服务器)查看是否有此用户,口令是否正确。如正确则会给对端发送Authenticate-ACK报文,通告对端已被允许进入下一阶段协商;否则发送NAK报文,通告对端验证失败。此时,并不会直接将链路关闭。只有当验证不过次数达到一定值(缺省为10)时,才会关闭链路。

PAP的特点是在网络上以明文的方式传递用户名及口令,如在传输过程中被截获,便有可能对网络安全造成极大的威胁。因此,它适用于对网络安全要求相对较低的环境。

PAP认证流程

2.2.2 CHAP(Challenge Handshake Authentication Protocol,质询握手认证协议)

认证 CHAP为三次握手协议。只在网络上传输用户名,并不传输用户口令,因此它的安全性要比PAP高。CHAP的验证过程为: 首先由验证方(Server)向被验证方(Client)发送一些随机产生的报文,并同时将本端的主机名附带上一起发送给被验证方。被验证方接到对端对本端的验证请求(Challenge)时,便根据此报文中验证方的主机名和本端的用户表查找用户口令字,如找到用户表中与验证方主机名相同的用户,便利用报文ID、此用户的密钥用Md5算法生成应答(Response),随后将应答和自己的主机名送回。验证方接到此应答后,用报文ID、本方保留的口令字(密钥)和随机报文用Md5算法得出结果,与被验证方应答比较,根据比较结果返回相应的结果(ACK or NAK)

(1)接受认证端发送Challenge
(2)申请认证端发验证请求报文
(3)接受认证端回应认证接受报文
经过以上三次报文交互后,CHAP认证完成。

CHAP认证流程

2.3 NCP协商阶段(NCP:Network Control Protocol)

NCP有很多种,如IPCP、BCP、IPv6CP,最为常用的是IPCP(Internet Protocol Control Protocol)协议。NCP的主要功能是协商PPP报文的网络层参数,如IP地址,DNS Server IP地址,WINS Server IP地址等。PPPoE用户主要通过IPCP来获取访问网络的IP地址或IP地址段。

NCP流程与LCP流程类似,用户与ME设备之间互相发送NCP Config-Request报文并且互相回应NCP Config-Ack报文后,标志NCP己协商完,用户上线成功,可以正常访问网络了。

IPCP的协商过程是基于PPP状态机进行协商的。经过双方协商,通过配置请求、配置确认、配置否认等包文交换配置信息,最终由initial (或closed)状态变为Opened状态。IPCP状态变为Opened的条件必须是发送方和接收方都发送和接收过确认包文。

IPCP协商过程中,协商包文可包含多个选项,即参数。各个选项的拒绝或否认都不能影响IPCP的UP,IPCP可以无选项协商,无选项协商也同样能够UP。选项有IP Address、网关、掩码等,其中IP Address是最重要的一个选项,有些厂家的实现必须这个选项得到确认,大多数厂家的实现允许这个选项为空。

NCP的基本协商流程见下图:

NCP的基本协商流程 用户和接入设备对IP服务阶段的一些要求进行多次协商,以决定双方都能够接收的约定。

如:IP业务阶段使用的IP压缩协议等。双方的协议是通过报文中包含的Option项进行协商的,每一个Option都是一个需要协商的问题。

最后双方都需要对方答复Configure_Ack的同意报文。

2.4 会话维持(Session Keep-alive)

设备主动发送Echo Request进行PPPoE心跳保活,若3次未得到服务器的响应,则设备主动释放地址。发LCP Echo Request 的时候,魔术字字段要和之前通信的Configure_Request使用的魔术字字段保持一致。

有些设备或终端不支持主动发送 Echo-Request 报文, 只能支持回应Echo-Reply报文。

2.5 会话结束(Session Termination)

PPPoE 还有一个PADT(PPPOE Active Discovery Terminate)分组,它可以在会话建立后的任何时候发送,来终止PPPoE会话,也就是会话释放。它可以由主机或者接入集中器发送,目的地址填充为对端的以太网的MAC地址。

当对方接收到一个 PADT(PPPOE Active Discovery Terminate)分组,就不再允许使用这个会话来发送PPP业务。PADT分组不需要任何标签,其CODE字段值为0xa7(PADT Code),SESSION-ID字段值为需要终止的PPP会话的会话标识号码。在发送或接收PADT后,即使正常的PPP终止分组也不必发送。PPP对端应该使用PPP协议自身来终止PPPoE会话,但是当PPP不能使用时,可以使用PADT。

3、抓包分析PPPoE连接过程


从上述过程可以分析出,在进行PPPoE拨号过程中,前5个包是PPPoE发现阶段,该过程正常完成了PADI、PADO、PADR、PADS;接着是会话阶段中的双向LCP协商过程,第8个包为Configuration Reject包,两次交互后,最终完成了Configuration Ack报文的交互,完成了LCP协商过程。第15个包发起身份认证请求,但是服务器回复Authenticate-Nak报文,服务器发出终止请求,后续相关交互终止了该次会话过程。
从上述抓包分析来看,我们可以根据PPPoE抓包来分析该协议的交互流程,进而定位PPPoE的相关bug。

PPPoE协议交互过程相关推荐

  1. 以太网 TCP协议交互过程中出现丢包时的解决机制,超时重传、快速重传、SACK与DSACK

    2.7.3 以太网 TCP协议(TCP交互过程中出现丢包时的解决机制-列举部分) 参考:CSDN_TCP的重传机制_博主.Pr Young,对描述进行了整理与结合个人的理解进行编写. 一.超时重传机制 ...

  2. pppoe协议交互流程以及报文结构

    文章目录 pppoe出现的原因: pppoe的交互流程 Discovery阶段: session阶段: Terminate阶段: pppoe报文结构: pppoe出现的原因: PPP (Point-t ...

  3. 802.11协议帧格式、Wi-Fi连接交互过程、无线破解入门

    转自: http://www.cnblogs.com/littlehann/p/3700357.html Linux黑客大曝光: 第8章 无线网络 无线网络安全攻防实战进阶 无线网络安全 黑客大曝光 ...

  4. DHCP协议格式、DHCP服务搭建、DHCP协商交互过程入门学习

    相关学习资料 http://www.rfc-editor.org/rfc/rfc2131.txt http://baike.baidu.com/view/7992.htm?fromtitle=DHCP ...

  5. HTTPS协议,SSL协议及完整交互过程

    转自:https://blog.csdn.net/dfsaggsd/article/details/50910999 SSL 1.        安全套接字(Secure Socket Layer,S ...

  6. 国标流媒体服务器GB28181协议和海康设备的交互过程记录

    国标GB28181协议从2016年更新后,变得比之前更火了,到今年已经4年了,国标视频流媒体服务器基础的功能都已经发展起来,而更深层次的功能还需要进一步的研发. 在日常运用中,海康的摄像头运用较为广泛 ...

  7. http 协议的交互过程详细分析。

    http 协议的交互过程详细分析. 以wget <file>  wireshark 抓包分析. 在<netinet/ip.h> 中,有如下定义 struct iphdr   { ...

  8. PPPoE协议讲解以及拨号过程Wireshark抓包解析

    文章目录 前言 一.PPPoE的简单介绍 1.PPPoE客户端 2.PPPoE服务器 3.一些典型用例 4.PPPoE帧格式 二.PPPoE会话建立过程 三.PPPoE抓包详解 1.PADI 2.PA ...

  9. DHCP和PPPoE协议以及抓包分析

    目录 一.DHCP协议学习 1.1 定义 1.1.1 使用DHCP的优点 1.2 DHCP客户端 1.3 DHCP服务器 1.4 端口 1.5 DHCP中继 1.6 报文格式及其类型 1.7 DHCP ...

最新文章

  1. 3W法—what,why,how的运用
  2. 批量选中删除(包含全选)---jsp,servlet
  3. IIS7 经典模式和集成模式的区别分析
  4. 学习 Python 编程的 19 个资源
  5. 一棵树的生物量怎么算_宾利的眼镜盒价值2万,算坑人吗?网友:良心产品,不坑穷人...
  6. 值得推荐的C/C++开源框架和库
  7. centos7 安装及配置
  8. 高手过招,精彩纷呈:PostgreSQL数据库人才与业务生态应用论坛圆满落幕
  9. 【CCCC】L2-022 重排链表 (25分),,链表遍历
  10. typora mac快捷键
  11. win10系统 安装modelsim64位的无法生成license文件的解决办法
  12. matlab可达矩阵 结果,matlab可达矩阵
  13. 用友政务U8补丁包下载地址
  14. canvas绘制圆形头像
  15. 经纬度坐标转换成px_highcharts的极值图,如何将经纬度转换成坐标?
  16. js实现页面表格内容的复制粘贴填充,实现快速填写
  17. OpenCV3之——图像修补inpaint()函数
  18. (C++)计算三角形面积
  19. CNA, FCoE, TOE, RDMA, iWARP, iSCSI等概念及 Chelsio T5 产品介绍
  20. 计算机的定点运算器原理,计算机组成原理定点运算器的组成和结构.doc

热门文章

  1. 网线顺序-水晶头顺序
  2. 上传微信小程序项目到Github
  3. Python requests模块详解
  4. 想要学习丙烯画,这些地方要注意了~
  5. 管人用人育人留人之道-不值得定律
  6. 2022山东省安全员C证操作证考试题及答案
  7. 2022第九届生物发酵展(济南)3月召开,拓展生物发酵行业新机遇
  8. 【已解】英雄联盟lol撸啊撸“寻找对局”按钮无法点击,开不了赛解决方法
  9. 技术人最基本投资建议
  10. Uber 机器学习平台 — 米开朗基罗