0
点赞
收藏
分享

微信扫一扫

PPPoE拨号流程(转载)

兽怪海北 2022-01-22 阅读 57

​​​​​​PPPoE拨号流程_曾梦想仗剑走天涯-CSDN博客_pppoe拨号

4.Linux中的PPPoE拨号守护进程(pppd:Point-to-Point Protocol Daemon)

Linux 内核 include/uapi/linux/if_pppox.h

中定义了

{PADI_CODE,PADO_CODE,PADR_CODE,PADS_CODE,PADT_CODE}

struct pppoe_tag/pppoe_hdr;

PPP/PPPoE 实现代码在 /drivers/net/ppp/ 目录下,pppoe.c 中实现了 pppoe_connect、pppoe_xmit、pppoe_recvmsg 等接口。

pppd 是一个后台服务进程(daemon),是一个用户空间的进程,所以把策略性的内容从内核的PPP协议处理模块移到 pppd 中是很自然的事了。pppd 实现了所有鉴权、压缩/解压和加密/解密等扩展功能的控制协议。

pppd只是一个普通的用户进程,它如何扩展PPP协议呢?这就是pppd与内核中的PPP协议处理模块之间约定了,它们之间采用了最传统的内核空间与用户空间之间通信方式:设备文件。

设备文件名是 /dev/ppp。通过read系统调用,pppd可以读取PPP协议处理模块的数据包,当然,PPP协议处理模块只会把应该由pppd处理的数据包发给pppd。通过write系统调用,pppd可以把要发送的数据包传递给PPP协议处理模块。通过ioctrl系统调用,pppd可以设置PPP协议的参数,可以建立/关闭连接。

举报

相关推荐

0 条评论