PPPoE收发包过程分析

本文详细介绍了PPPoE拨号上网过程中ppp0设备的创建,以及PPPoE协议的收包和发包流程。在创建ppp0设备时,涉及内核ppp模块和pppd程序。收包处理包括通过pppoe_rcv()和pppoe_disc_rcv()函数,而发包则通过pppoe_xmit()等函数完成,涉及以太网头的添加和设备的绑定。
摘要由CSDN通过智能技术生成

1. ppp0设备

路由器中的LAN/WAN口都是通过以太网(ether)设备来收发包的,而在WAN口进行了PPPoE拨号后,ifconfig会发现多出一个ppp0,这个设备是干什么用的呢?
实际上,这个设备是内核的ppp模块为方便pppoe等协议收发包用的,有了这个设备,你就可以将路由表改一改,将发往WAN口的数据包从ppp0(而不是eth1)发出去,内核协议栈会按照PPP协议相关的设置将这个包发出去。

1.1 创建ppp0

创建ppp设备是在内核的drivers/net/ppp_generic.c中:

ppp_create_interface(struct net *net, int unit, int *retp);

函数里根据第二个参数unit来决定ppp%d如何赋值。

而相应的,在用户程序pppd的sys-linux.c中,make_ppp_unit()函数通过ioctl进入内核来调用ppp_create_interface():

... ...
ioctl(ppp_dev_fd, PPPIOCNEWUNIT, &ifunit);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值