阅读:2791回复:10
PPPoE实现方案公布
PPPoE是我2001年所作的一个项目,近日突然发现有n多人对PPPoE感兴趣,就把由来已久的想法诉诸行动:现在把文章的详细摘要公布给大家,希望能对大家有所帮助。
|
|
|
沙发#
发布于:2003-07-11 12:34
有即时联系方式吗?
QQ:364479 UC: 10091 msnd: ma13910206425@hotmail.com 可以交流一下吗? msn和uc每天在线. |
|
|
板凳#
发布于:2003-07-11 12:41
msn:50889
|
|
|
地板#
发布于:2003-07-11 12:41
qq:50889
|
|
|
地下室#
发布于:2003-07-11 14:27
系统的ppp协商过程是如何做的??ras和是如何来处理IPCP协商的Ip还有系统的路由的?他那个IP是如何加到ppp adapter上面的?居然是4个255?
|
|
|
5楼#
发布于:2003-07-12 01:03
sureman:
文档中提及PPP协议在NDISWAN中实现,其实不然,在win2k上实现PPP/SLIP协议的应用层的RasPPP.dll,NDISWAN只能说是实现了调度接口。 最近反汇编了众多DLL/SYS,才发现NDISWAN/TAPI/RAS体系原来如此复杂,而且三者间的耦合非常的高,如果我们单纯从Documented的API函数来看,我们甚至无法把这三层分开。 Mikeluo: RAS的IPCP协商都是在RasPPP.dll中实现的,NDISWAN和这个协商似乎无关。RAS处理路由在RasPPP.dll中实现,其中调度了dhcpcsvc.dll/iphlpapi.dll。 PPP adapter的ip设定也在这里完成。 PPP设定路由的主要函数从Windbg看出应该是IpcpProjectionNotification。我觉得4个255可能是在Hardcode在RasPPP.dll中的, 反汇编调试中,我们发现有这句话,我觉得很有可能就是设定Mask的。 or [ebp-20], 0FFFFFFFFh |
|
6楼#
发布于:2003-07-12 08:29
conglin可能是对的,因为我们实现pppoe的时候,并没有对ppp的细节考虑过多的考虑,故一并把其他的事情归到ndiswan界面中了。
至于这个界面之后又调用了什么东东,就没有管了。 要向你学习这种认真的态度! |
|
|
7楼#
发布于:2003-07-12 11:07
sureman: 我想ndiswan应该做两件事,一是封装ppp的报文,二是调度wan miniport。 协商过程有ras来做应该是很合理的。ras应该是填充了ppp的payload,然后由ndiswan来封装成ppp的报文,然后调度相应的wan miniport来发送。 ras在添加ip的时候使用的应该不是公开的接口来做的。windows上面有很多的接口是没有公开的。 我现在想如果修改从ndiswan出来的ppp报文应该是可以的。 |
|
|
8楼#
发布于:2003-07-12 19:51
Mikeluo讲的没错,NDISWAN是封装PPP Frame的。
MSDN中关于NDISWAN的陈述 Before sending packets to the WAN miniport driver’s send function, NDISWAN does simple PPP HDLC framing. Simple PPP HDLC framing is PPP\'s HDLC framing without the FCS, bit or byte stuffing, and any beginning or end flags. Protocol的声明和解释是在RasPPP.dll中完成的。 有兴趣的话可以跨机跟踪包含Ras Service的某个svchost进程。不过在进程列表中会有多个这样的进程。我是通过Process Explorer来查找的,先排除掉没有rasppp.dll/rasmans.dll的进程,然后选择显示最慢的那个。 |
|
9楼#
发布于:2003-07-13 14:17
如果我要写一个 Protocol Driver 绑定到 NdisWanIp
上面接发报该注意些什么问题?和绑定到以太网卡上 应该不同吧! 另外楼主的文章该怎么下载? [编辑 - 7/13/03 by Nemesis2k] |
|
10楼#
发布于:2003-07-15 09:09
:D :D :D
看了,没看明白,不过可以看出来,研究的不错,好! |
|
|