PPPOE协议工作流程

2023-11-10

 

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 值相同。

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 报文为止。

说明:
(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
功能,则回将此选项拒绝掉。

2.2 认证阶段(PPP Authentication :PAP/CHAP )
会话双方通过LCP 协商好的认证方法进行认证,如果认证通过了,才可以进行下面的网络
层的协商。认证过程在链路协商结束后就进行。

Ⅰ PAP ( Password Authentication Protocol ,口令认证协议)认证
PAP 为两次握手协议,它通过用户名及口令来对用户进行验证。PAP 验证过程如下:
当两端链路可相互传输数据时, 被验证方发送本端的用户名及口令到验证方, 验证方根据本
端的用户表(或Radius 服务器)查看是否有此用户,口令是否正确。如正确则会给对端发
送Authenticate-ACK 报文, 通告对端已被允许进入下一阶段协商; 否则发送NAK 报文, 通
告对端验证失败。此时, 并不会直接将链路关闭。只有当验证不过次数达到一定值(缺省为
10 )时,才会关闭链路。
PAP 的特点是在网络上以明文的方式传递用户名及口令,如在传输过程中被截获,便有可
能对网络安全造成极大的威胁。因此,它适用于对网络安全要求相对较低的环境。

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

用户和接入设备对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 接入流程示例
PPP 状态变迁如图6 所示:

以PPPoE-CHAP 为例, PPP 用户接入流程如图7 所示:

4.Linux 中的PPPoE 拨号守护进程(pppd :Point-to-Point Protocol Daemon )
pppd 是一个后台服务进程(daemon) ,是一个用户空间的进程,所以把策略性的内容从内核
的PPP 协议处理模块移到pppd 中是很自然的事了。pppd 实现了所有鉴权、压缩/解压和加
密/解密等扩展功能的控制协议。
pppd 只是一个普通的用户进程,它如何扩展PPP 协议呢?这就是pppd 与内核中的PPP
协议处理模块之间约定了, 它们之间采用了最传统的内核空间与用户空间之间通信方式: 设
备文件。
设备文件名是/dev/ppp 。通过read 系统调用,pppd 可以读取PPP 协议处理模块的数据包,
当然, PPP 协议处理模块只会把应该由pppd 处理的数据包发给pppd 。通过write 系统调
用, pppd 可以把要发送的数据包传递给PPP 协议处理模块。通过ioctrl 系统调用, pppd
可以设置PPP 协议的参数,可以建立/关闭连接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PPPOE协议工作流程 的相关文章

  • 在PPPoE拨号环境下实现基于前缀委派(PD)的IPv6(H3C设备)

    本文于2020年4月成文 2020年9月12日修订 之前写过一篇 在PPPoE拨号宽带上使用IPv6 xff08 Cisco路由器 xff09 xff0c 今天就H3C设备又写了一篇 使用此配置 xff0c H3C路由器 xff08 或其他
  • 路由器重温——PPPoE配置管理-2

    四 配置设备作为PPPoE服务器 路由器的PPPoE服务器功能可以配置在物理以太网接口或 PON 接口上 xff0c 也可配置在由 ADSL 接口生成的虚拟以太网接口上 1 配置虚拟模板接口 虚拟模板接口VT和以太网接口或PON接口绑定后
  • 静态路由的划分。。。。。

    先了解静态路由在做作业 静态路由的作业 一 静态路由是什么 二 作业 1 分析划分子网 2 将ip地址和环回地址先写入路由器 包括R5 3 全网可通 并且防环 先写到这里 加油 坚持写博客 坚持努力 我要假期悄悄努力 一 静态路由是什么 静
  • 网络基础:路由器工作原理

    目录 一 理论 1 路由器工作原理 2 路由表获取方式 3 路由器和交换机的区别 二 实验 1 华为系统配置2台路由器 2 华为系统配置3台路由器 3 华为系统配置浮动路由 一 理论 1 路由器工作原理 路由器工作在OSI七层协议中的第三层
  • 2021-12-23 网工基础(十四) 链路聚合的两种模式、堆叠、集群、IP路由基础

    一 链路聚合的两种模式 1 手工模式 管理员手工指定 无协议报文 没有开销 2 LACP模式 交换机之间会交互LACP的协议 会有一点儿报文交互 一般正常情况下推荐使用LACP模式 一般自动协商都会手工强制的要好 除非自动确实失败 无法成功
  • 网络基础:协议层次

    目录 一 理论 1 OSI参考模型 2 TCP IP模型 3 OSI模型对应协议 4 TCP IP模型对应协议 5 OSI模型传输数据过程 二 实验 1 TCP IP模型封装 一 理论 一个协议层能够用软件 硬件或者两者的结合来实现 各个层
  • 配置MAC刷新ARP功能

    在以太网中 MAC地址表项用于指导设备进行二层数据转发 ARP表项通过IP地址和MAC地址的映射指导设备进行不同网段间的通信 MAC地址表项的出接口通过报文触发刷新的 ARP表项的出接口是在老化时间到后通过老化探测进行刷新的 这样就可能会出
  • 网络基础:IP数据包格式

    目录 一 理论 1 IP数据包完整格式 2 IP数据包首部各字段 3 ARP协议 二 实验 1 华为系统中的ARP命令 一 理论 1 IP数据包完整格式 根据TCP IP 协议 使用 IP 协议传输数据的包被称为 IP 数据包 IP Dat
  • 对wireshark捕捉的数据包,对数据帧头部、IP数据包头部、ICMP头部进行分析

    利用wireshark抓包 数据如下 十六进制 1个字符占4比特 2个字符占1个字节 00 e0 fc 82 6c 01 00 e0 fc f7 7f 5e 08 00 45 00 00 54 00 1f 00 00 fe 01 85 86
  • 详解域名和DNS

    目录 一 概念名词 1 域名 1 1域名 1 2二级域名和多级域名 1 3域名对于我们有什么用呢 2 DNS Domain Name System 域名系统 2 1 什么是域名系统 3 CDN Content Delivery Networ
  • tcp第三次握手ack均是1?

    本人做了tcp连接测试 但是结果和网络中其他人的说法有点不一致 测试使用了命令 tcpdump s1用网卡ens33抓取端口好为80的网络数据包 tcpdump nn i ens33 port 80 s2访问百度 建立3次连接请求数据 cu
  • 【网络基础】通俗易懂的了解HTTPS的整体过程

    文章目录 前言 HTTP 各个版本 结构 请求 请求行 请求头 请求体 响应 响应行 响应头 响应体 HTTPS 对称加密 非对称加密 对称和非对称结合加密 CA证书中级大发 证书 对称和非对称结合加密 证书关系链 拓展知识 证书的合法性验
  • (转载)谈SDH、MSTP、OTN和PTN的区别和联系

    http tech c114 net 169 a892299 html width 250 height 24 frameborder 0 allowtransparency true marginwidth 0 marginheight
  • 2021-12-21 网工基础(十三) STP的选举规则、STP的接口状态、边缘端口、生成树版本的进化、链路聚合技术原理与配置

    一 STP的选举规则 1 在交换网络中选举一个根桥 Root Bridge 比较Bridge ID桥ID 优先级 MAC地址 越小越优 为了确保交换网络的稳定 建议提前规划STP组网 并将规划为根桥的交换机的桥优先级设置为最小值0 2 在每
  • PPPOE协议工作流程

    PPPoE Point to Point Protocol over Ethernet 基于以太网的点对点协议 的工作流程包含发现 Discovery 和会话 Session 两个阶段 发现阶段是无状态的 目的是获得PPPoE 终端 在局端
  • SSRF——服务端请求伪造

    什么是SSRF 服务器端请求伪造 SSRF 是指攻击者能够从易受攻击的Web应用程序发送精心设计的请求的对其他网站进行攻击 利用一个可发起网络请求的服务当作跳板来攻击其他服务 ssrf有什么作用 一般用于探测内网端口及信息 查看文件 甚至可
  • 2022-01-12 网工基础(二十)GRE原理与配置 VRRP原理与配置

    一 GRE原理与配置 IPSec VPN 用于在两个端点之间提供安全的 IP 通信 但只能加密并传播单播数据无法加密和传输语音 视频 动态路由协议信息等组播数据流量 通用路由封装协议 GRE Generic Routing Encapsul
  • T1 载波速率 为什么是1.544Mbps?

    这是大二时上的一节网络通信技术基础上学的内容 期末时却没能写出来 一直觉得有些遗憾 所以写在博客的第一篇 希望自己可以激励自己 知错则改 不断进步 分割线 人的话音信道在4Mhz之内 根据奈奎斯特采样定理按照2倍8MHz采样 并128级量化
  • 单臂路由实现原理

    一 概述 单臂路由 router on a stick 是指在路由器的一个接口上通过配置子接口 或 逻辑接口 并不存在真正物理接口 的方式 实现原来相互隔离的不同VLAN 虚拟局域网 之间的互联互通 单臂路由的子接口 路由器的物理接口可以被
  • 网络基础-传输层协议-TCP/UDP

    TCP UDP 谈一谈端口号 为什么会有端口号 端口号划分 一个进程可以bind多个端口号吗 一个端口号可以被多个进程bind吗 UDP 协议格式 udp协议的特点 无连接 不可靠 面向数据报 UDP缓冲区 TCP 协议格式 在这里插入图片

随机推荐

  • LeetCode——剑指 Offer 39. 数组中出现次数超过一半的数字

    剑指 Offer 39 数组中出现次数超过一半的数字 题目 数组中有一个数字出现的次数超过数组长度的一半 请找出这个数字 你可以假设数组是非空的 并且给定的数组总是存在多数元素 示例 1 输入 1 2 3 2 2 2 5 4 2 输出 2
  • Ajax简要分析使用

    先抛出一般结构 ajax type get url Stu Servlet data type select student id stu id message p success function data alert data 当然是j
  • Ubuntu22.04使用中文输入法

    安装的时候选择了英文安装 之后切换到中文 忘记还要写中文注释 发现在语言设置里不能添加输入法 仔细找了以下发现输入法的设置改到了键盘设置里 网络上查到的大部分都是老版本的ubuntu 这个是2204版本 输入法设置位置不同
  • 闪回事务查询+闪回事务查询案例

    闪回事务查询 1闪回事务查询是闪回版本查询的一个扩充 2闪回事务查询可以审计某个事务或者撤销一个已经提交的事务 闪回事务查询案例 测试数据 create table sct4 id number 4 name varchar2 20 ins
  • uos,qt,linuxdeployqt,qt-installer-framework, 生成安装包的记录

    注 使用源码生成安装包的环境要求 已安装QT v5 5 24 DTK QTcreator linuxdeployqt qt installer framework v5 9 的UOS v20 1 打开QTcreator 新建项目 2 选择侧
  • python随机生成验证码,数字+大小写字母

    ASCII码的对照链接 大写字母的十进制范围是 65 91 小写字母的十进制范围是 97 123 数字的十进制范围是 48 58 思路 1 先在空链表中添加大小写字母和数字 2 从列表中随机选择四个验证码 3 将列表转化成字符串输出 代码如
  • python 进行排序的两种方式 sort和sorted

    方法1 用List的成员函数sort进行排序 方法2 用内建函数sorted进行排序 sort函数定义 sort cmp None key None reverse False sorted函数定义 sorted iterable cmp
  • Cannot invoke “String.equalsIgnoreCase(String)“ because “code“ is null

    问题 同时开启多个项目 端口号不一致导致项目前后端错乱匹配 解决办法 后端 ruoyi admin下的application yml中的port 端口号 前端 vue config js里的port 端口号修改一致
  • cpp 解析HTML之 htmlcxx

    html与xml格式上比较相似 但xml不并一定能支持html的解析 这里介绍一个c 解析html的开源项目 htmlcxx 一 代码示例 1 项目源码下载之后 使用vs打开即可 默认为生成 lib静态库及MTd模式 可以在属性中修改指定为
  • httprunner测试框架3--har2case录制脚本

    har2case录制脚本 录制脚本 只是一个过渡 可以将录制的 har脚本快速转化成httprunner脚本文件 不能依靠录制 har2case可以将 har文件转化成yaml格式或者json格式的httprunner的脚本 可以借助fid
  • java代码kafka初始化producer和consumer

    目录 一 初始化producer对象 序列化消息 生产者发送消息的三种方式 kafka生产者其它详细知识 二 初始化consumer对象 反序列化消息 consumer取消订阅的方式consumer unsubscribe 使用自定义的序列
  • 回溯法解决地图填色问题

    目录 回溯法 最大度优先 最少可选颜色优先 向前探测 随机产生不同规模的图 分析算法效率与图规模的关系 四色 回溯法 回溯法的基本思想是采用递归和深度优先搜索的方法 尝试在一组可能的解中搜索出符合要求的解 在搜索过程中 若发现当前所选的方案
  • 颜色值不透明度对应表(0%-100%)

    不透明度 ps 可以理解为alpha 0 1的值
  • 腾讯大佬告诉你,写Python到底用什么IDE合适

    不管你是 Python 新手还是老鸟 肯定纠结过一个问题 到底用什么编辑器写 Python 代码好 为此 我们调查了数十位鹅厂程序猿们爱用的 Python IDE 从他们对每款编辑器的看法中 也许能给你一点启示 入门Python其实很容易
  • lzma sdk文件压缩与解压

    最新版的lzma sdk可以去SourceForge上面获取 具体地址为点击打开链接 7z官网点击打开链接 英文版 点击打开链接 中文版 我用lzma sdk主要是为了用来压缩和解压文件用的 其实适当的用法可以用来制作安装包 因为安装包也是
  • 在Linux的Ubuntu系统下安装QT及相关环境配置

    安装QT 从官网下载QT的安装包 在本地安装 本次使用的是Ubuntu18 06以及QT5 14 2 下文皆使用此版本作为示例 首先安装QT 具体操作如下 1 使用cd命令 cd home usr download 切换至安装包所在的目录下
  • Proteus仿真时数码管不能动态显示的问题及解决方法

    今天做Proteus仿真时遇到了数码管不能动态显示的问题 我的程序是用单片机P1口控制数码管段选 P2口低四位控制数码管位选 数码管1ms显示一位 全部刷新需要4ms 正常情况下人眼是感受不到这个速度下数码管的刷新过程的 所以他应该是这个样
  • 【图文解析 】Java中的Liu、继承、组合

    Alt Shift s 快捷键
  • Vue Element-ui el-table sortablejs 表格拖拽排序

    首先要在项目中本地安装 sortablejs 执行 npm install sortablejs save 然后在要实现表格拖拽的 vue文件中 引入 sortablejs import Sortable from sortablejs 基
  • PPPOE协议工作流程

    PPPoE Point to Point Protocol over Ethernet 基于以太网的点对点协议 的工作流程包含发现 Discovery 和会话 Session 两个阶段 发现阶段是无状态的 目的是获得PPPoE 终端 在局端