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协议工作流程 的相关文章

  • 【计算机网络】(五)拨号上网与宽带上网PPP,PPPoE,ADSL,FTTH(GPON)

    可见链接 https www zhihu com question 48988005 它们都是个人用户接入Ethernet的协议 小学的时候家里就是拨号上网的 xff0c 每次有人打电话到家里网就会断掉 xff0c 游戏就掉线 xff0c
  • PPPoE on Android

    分享一下我老师大神的人工智能教程 零基础 xff01 通俗易懂 xff01 风趣幽默 xff01 还带黄段子 xff01 希望你也加入到我们人工智能的队伍中来 xff01 https blog csdn net jiangjunshow P
  • 网络综合布线七大子系统详解(图解)

    根据 GB50311 2007 综合布线系统工程设计规范 国家标准规定 网络综合布线七大子系统包括 1 工作区子系统 2 水平子系统 3 垂直子系统 4 管理间子系统 5 设备间子系统 6 进线间子系统 新加的 7 建筑群子系统 工作区子系
  • OSPF实验

    我们坠落 破碎 掉入深渊 但我们终会被托起 被治愈 我们无所畏惧 OSPF部分实验 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 没关系的 大家都会做错选择 会莫名其妙掉眼泪 走在路上会突然崩溃 但这并不影响我们去看
  • OSPF协议

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 HCIA第四天 前言 一 OSPF协议 二 LAS优化 特殊区域 1 解决OSPF的不规则区域 三 扩展配置 前言 一 OSPF协议 OSPF 开放式最短路径优先协议 无类别
  • 什么是集群、分布式、集中式、伪分布式

    1 集中式 将项目等部署到同一台机器上 对机器性能要求比较高 一般会用多台机器备份 否则 如果机器出现死机等状况 整个项目将不能运行 eg 就好比你要盖一座房子 你房子就给一个人盖 如果这个人生病或者有事 你还没有合适的人来代替这个人 你的
  • 网络基础-基础网络命令

    文章目录 路由 命令查询 添加路由 1 添加访问某台主机的静态路由 2 添加访问某个网络的静态路由 3 添加默认网关 删除 设计关键字 路由2 参考 路由 命令查询 通过 route help 或man route 查询 添加路由 1 添加
  • 【计算机网络】301 永久重定向的缓存问题

    301 永久重定向的缓存问题 问题描述 在使用 301 的时候常常会遇到一个问题 当服务端针对某个 URL 设置了 301 永久重定向后 不管怎么重新设置或者删除设置 浏览器在进行访问时仍然会使用最开始缓存的 301 重定向 而服务端无法控
  • 配置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
  • 路由器OSPF动态路由配置(扩展版)

    实验7 路由器OSPF动态路由配置 扩展版 使用软件 Cisco Packet Tracer Student Multilayer Switch0 Switch gt Switch gt en Switch conf t Switch co
  • 网络基础:ACL与NAT

    目录 一 理论 1 ACL 2 NAT 二 实验 1 基础ACL 2 高级ACL 3 静态NAT 4 Easy IP 一 理论 1 ACL 1 ACL ACL 是Access Control List的简写 中文名称叫做 访问控制列表 它是
  • (转载)谈SDH、MSTP、OTN和PTN的区别和联系

    http tech c114 net 169 a892299 html width 250 height 24 frameborder 0 allowtransparency true marginwidth 0 marginheight
  • 渗透学习 Linux基础知识

    你生来就值得被爱 这点你无需质疑 小白入坑学废集2 Linux 介绍 什么是Linux Linux系统结构 Linux常见发行版本 版本问题 磁盘分区表示 硬盘和分区结构 目录结构 目录名 Linux系统常用命令 命令行编辑的几个辅助操作
  • PPPOE协议工作流程

    PPPoE Point to Point Protocol over Ethernet 基于以太网的点对点协议 的工作流程包含发现 Discovery 和会话 Session 两个阶段 发现阶段是无状态的 目的是获得PPPoE 终端 在局端
  • 2022-01-12 网工基础(二十)GRE原理与配置 VRRP原理与配置

    一 GRE原理与配置 IPSec VPN 用于在两个端点之间提供安全的 IP 通信 但只能加密并传播单播数据无法加密和传输语音 视频 动态路由协议信息等组播数据流量 通用路由封装协议 GRE Generic Routing Encapsul
  • 关于IP网段间互访的问题——路由是根本

    文章出处 http blog csdn net dog250 archive 2010 02 09 5303291 aspx 之所以IP网段间可以互相访问 完全靠的就是路由 因此路由是IP通信的根本 IP是机器可以进行通信的资格证书 而路由
  • T1 载波速率 为什么是1.544Mbps?

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

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

    HTTP HTTPS HTTP 基本概念 协议格式 请求报文 请求方法 请求资源地址 协议版本 应答报文 常见Header 常见状态码与状态描述 Cookie Session http协议特点 HTTPS 基本概念 对称加密与非对称加密 数

随机推荐

  • 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 终端 在局端