0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

理解和实现 PPPoE 拨号

IP数据云 来源:IP数据云 作者:IP数据云 2024-08-14 17:38 次阅读

在现代网络环境中,PPPoE拨号是一种广泛使用的技术,特别是在ADSL、FTTH等接入场景中。PPPoE通过在交换机上封装PPP数据包,实现了宽带用户的远程拨号和接入服务其优点包括能够在宽带环境中提供PPP的所有功能,如用户身份验证、加密等。

PPPoE的基本原理 PPPoE 是 PPP 协议在宽带上的扩展,其核心思想是在宽带上使用 PPP。 PPPoE 由两部分组成:PPP 协商阶段和 PPP 数据传输阶段。

PPP协商阶段

在这个阶段,客户端通过PPPoE客户端软件发送发现和协商数据包到服务器,服务器响应确认。这个过程包括:

PADI (PPPoE Active Discovery Initiation):客户端发送PADI包,广播电台,寻找PPPoE服务器。

PADO (PPPoE Active Discovery Offer):服务器接收PADI包后,发送PADO包给客户端,提供服务。

PADR (PPPoE选择Active Discovery Request):客户端一个合适的服务器,并发送PADR包请求连接。

PADS (PPPoE Active Discovery Session-confirmation):服务器发送 PADS 包确认会话的建立,包含一个唯一的会话 ID。

PPP 职业生涯阶段

一旦会话建立,客户端和服务器之间的PPP 会话开始,所有的 PPP 帧都通过消耗功耗。在这个阶段,数据传输的流程与传统的 PPP 类似,包括 LCP 配置、认证协议(PAP/CHAP) )、网络层协议配置(如IPCP、IPV6CP)等。

①、家庭和企业责任

PPPoE允许被广泛接入家庭宽带接入点和中小型企业接入点,特别是ADSL、VDSL和光纤接入点。它的网络服务提供商(ISP)对用户进行有效的身份验证和设备。

②、VPN 和远程访问

PPPoE在VPN和远程访问应用中提供了灵活的连接方式,尤其是在企业网络环境中。它支持加密和安全的隧道协议,为远程办公和安全数据传输提供了基础。

③、PPPoE拨号的实现示例

下面是一个使用Python 进行 PPPoE 拨号的简单示例,该示例使用了scapy库来构造和发送 PPPoE 数据包。https://www.ipdatacloud.com/?utm-source=LMN&utm-keyword=?2693

from scapy.all import

def send_padi():

# 构建一个 PADI 数据包

**padi = Ether(dst='ff:ff:ff:ff:ff:ff', type=0x8863) / **

**PPPoED(code=0x09) / PPPoETag(tag_type=0x0101, tag_len=0)**

# 发送 PADI 数据包并等待 PADO 响应

response = srp1(padi, timeout=5)

if response and response.haslayer(PPPoED) and response[PPPoED].code == 0x07:

print("Received PADO from server")

return response

else:

print("No response received for PADI")

return None

def send_padr(pado):

# 使用服务器的 MAC 地址构建 PADR 数据包

**padr = Ether(dst=pado.src, type=0x8863) / **

**PPPoED(code=0x19) / PPPoETag(tag_type=0x0101, tag_len=0)**

# 发送 PADR 数据包并等待 PADS 响应

response = srp1(padr, timeout=5)

if response and response.haslayer(PPPoED) and response[PPPoED].code == 0x65:

print("Received PADS, session established")

return response

else:

print("No response received for PADR")

return None

def main():

pado_response = send_padi()

if pado_response:

pads_response = send_padr(pado_response)

if pads_response:

print("PPPoE session successfully established")

if name == " main ":

main()

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 拨号
    +关注

    关注

    0

    文章

    8

    浏览量

    18331
  • PPPoE
    +关注

    关注

    0

    文章

    24

    浏览量

    12128
收藏 人收藏

    评论

    相关推荐

    使用IR900 4G专网卡拨号拨不上的解决办法

    目前在使用IR900(包括IR912L-TL00和915L-TL00)时,若遇到使用电信4G专网卡拨号拨不上的时候,可参照以下解决方法:网络-拨号接口:调整拨号参数集和初始化拨号命令1
    发表于 07-25 08:11

    4G卡插上无法正常拨号的解决办法

    1.普通电话卡或物联网卡(能插在手机上直接使用的) 路由器预设了通用拨号参数这类卡插在路由器上一般情况下不需要配置便能成功拨号; (注:物联网卡为一卡一机绑定,同一张物联网卡如果和一台设备绑定将无法
    发表于 07-24 06:56

    求助,能否实现PPP拨号功能+构建HTTP服务器?

    1、我已经通过修改usb_cdc_4g_module demo实现PPP拨号上网,但是加上HTTP服务器后,HTTP服务器会访问不了,PPP拨号上网也会异常。 2、单独构建HTTP服务器,不使
    发表于 06-27 07:38

    ESP32 ppos如何支持EC20拨号上网?

    请问一下ESP32 ppos如何支持EC20拨号上网
    发表于 06-17 07:15

    cybt413061连接HFP时,拨号操作未启动的原因?

    请就以下几点提出建议: 1. 启动拨号时,我们正在连接 HFP 配置文件并拨号,然后断开 HFP 配置文件。 在这里,我们遇到的问题是,当发送拨号命令时,HFP 被连接,之后拨号没有启
    发表于 05-20 08:05

    怎么理解指针的指针?

    怎么理解指针的指针?其实这个概念并不难,只是把它放到实际应用中,容易造成困扰。
    的头像 发表于 02-23 16:46 684次阅读
    怎么<b class='flag-5'>理解</b>指针的指针?

    PPPoe的报文结构和抓包分析

    PPPoe的头部后面就是PPP的报文了,因为我们需要的是ppp协议中的认证功能,所以自然需要有完整的ppp报文去完成这一部分的功能。
    的头像 发表于 01-02 09:47 3212次阅读
    <b class='flag-5'>PPPoe</b>的报文结构和抓包分析

    深入理解RCU:玩具式实现

    也许最简单的RCU实现就是用锁了,如下图所示。在该实现中,rcu_read_lock()获取一把全局自旋锁,rcu_read_unlock()释放锁,而synchronize_rcu()获取自旋锁,随后将其释放。
    的头像 发表于 12-27 09:06 624次阅读

    理解、操作并实现基于二极管的集成式RF检波器接口

    电子发烧友网站提供《理解、操作并实现基于二极管的集成式RF检波器接口.pdf》资料免费下载
    发表于 11-23 14:48 1次下载
    <b class='flag-5'>理解</b>、操作并<b class='flag-5'>实现</b>基于二极管的集成式RF检波器接口

    电源管理解决方案

    电子发烧友网站提供《电源管理解决方案.pdf》资料免费下载
    发表于 11-16 10:15 0次下载
    电源管<b class='flag-5'>理解</b>决方案

    理解Mahony滤波算法的实现过程

    ,进行9轴姿态解算时,我深深地感受到对四元数与姿态阵之间关系的理解是非常重要的。在此之前,我检索了网络文章,并记录了《MEMS_惯性传感器09 - Mahony姿态解算算法详解》、《MEMS_惯性传感器
    的头像 发表于 11-13 10:55 1505次阅读
    <b class='flag-5'>理解</b>Mahony滤波算法的<b class='flag-5'>实现</b>过程

    如何理解看门狗?

    一直不是很理解看门狗,有什么方法可以快捷理解吗?
    发表于 10-25 06:13

    如何理解 RAMECC FAR 寄存器的值

    如何理解 RAMECC FAR 寄存器的值
    的头像 发表于 10-19 18:19 542次阅读
    如何<b class='flag-5'>理解</b> RAMECC FAR 寄存器的值

    理解STM32控制中常见的PID算法

    理解STM32控制中常见的PID算法
    的头像 发表于 10-17 17:28 2086次阅读
    <b class='flag-5'>理解</b>STM32控制中常见的PID算法

    自动驾驶场景理解模块

    场景理解 场景理解功能模块图场景理解功能模块体现了负责“理解”当前驾驶场景的算法。如果自主车辆要在共享的驾驶空间中进行智能操纵,则有必要预测/预见该空间内其他实体的行动。场景或方案
    的头像 发表于 10-04 17:57 866次阅读
    自动驾驶场景<b class='flag-5'>理解</b>模块