Linux下的 PPPoE (整理,总结)

一、 PPPoE 整体实现框架

图1:整体框架

  • PPPoE 程序
    首先PPPoE完成PPPoE的发现阶段(即相互通知MAC地址),接着这个程序负责发送/接收所有通过ppp网络接口(如ppp0)的数据包。
    在会话阶段,PPPoE从网口和stdin接收数据,向stdout发送数据。(PPPD程序在启动PPPoE程序时,将PPPoE程序的stdin和stdout都重定向到PTY的主设备)
  • PPPD 程序
    与PPPoE 程序配合起来完成拨号上网的协商与维护。
  • /dev/ppp
    创建了ppp设备后,PPP过程的数据包经过协议栈的分类,会被传送到该接口的队列内。PPPD从该接口读取PPP过程的数据包,然后交给相应的协议栈处理。
    对于响应的数据包同样写入该设备,设备内会将数据包交给协议栈然后转发出去。
  • socket
    PPPoE的会话与发现阶段数据包对应的以太网类型分别为0x8863和0x8864,内核中定义了这两种类型的socket。
  • PPP协议栈
    主要负责PPP层的封装、压缩与解压。同时,它还对普通数据包和PPP过程的数据包进行了分流,将普通数据包提交给TCP/IP协议栈,而将PPP过程的数据包交给/dev/ppp设备队列中,等待PPPD去收取处理。
  • PTY设备
    串行设备,PPP内核协议栈与PPPoE应用程序的中转站。因为PPP协议早多运行在串行链路上,所以在Linux内核中PPP协议栈与串行设备结合紧密。
    伪终端的使用是成对出现的,分为 master 和 slaver 。写入主设备的信息,可以从从设备上读出;写入从设备的信息,可以从主设备读出。

二、 PPPoE的实现

  • 客户端
    rp-pppoe
  • PPPoE 背景
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值