阅读:1349回复:10
我是实在走投无路才到处提问的,请帮忙
我老板提出把pc做为atm网络终端的设想。一般的做法是做以atm网卡,把从pci总线来的ip包在板卡上面打成atm信元的形式再发出去。我们希望在软件上实现把从tcp/ip协议栈出来的ip包直接打成atm信元的形式。也就是说,从层次的角度讲,希望自己软件实现网络层下面的mac层,使得最后到板卡直接就是53字节的atm信元。
如果我没有理解错的话,平时说的mac其实就是对普通网卡的驱动。我的问题是: 1、从ip 层出来的ip包是给这个网卡驱动吗?也就是说,是利用该驱动来访问tcp/ip协议栈位于ip层下面的接口吗? 2、我遇到的困难是驱动方面的问题吗?(您不知道,我刚开始学了API半天,结果发现不是一回事:(:(:( 3、各位大虾,如果的确是写驱动的问题,还请各位给出指点,我真的很感激。随便推荐几本能回答我的问题的书籍,谢谢各位阿 |
|
沙发#
发布于:2003-02-22 20:42
你们老板的想法不错呀,不过这个好象不容易呀!不过觉得他的想法还是有很多问题,有没有实用的价值还要研究。你要做的是写网络驱动,做一个中间层,然后修改所有的包大小,发出去!不过关于NDIS和物理网卡的关系我不是很清楚,我觉得这样就可以了。你们老板的想法我觉得没有什么实用的价值,我原来研究过ATM承载TCP/IP的地址转换问题,他这样做看起来很有创意,其实没有什么实用价值!
|
|
|
板凳#
发布于:2003-02-22 22:08
您好,尽管我得分不多了,但是我还是给您分,你的回答对我很重要,让我知道这次我下手的地方对了。不过我还有一些疑问:
1、中间层?能具体一点吗?具我所知,驱动程序光中间层就有很多,是filter吗? 2、看得出来您是又经验的,我恳请你推荐一本你认为对我做这项工作有帮助的书。你知道的,一本合适的书籍会节省很多时间。 3、从您的回答,我没有理解错误的话,从ip层下来的数据要进入我的驱动?问题回到了第一个提问,什么驱动完成这个角色?数据在各层驱动只见是怎么一个关系? |
|
地板#
发布于:2003-02-23 14:50
第一:你要做的是NDIS IMD。“具我所知,驱动程序光中间层就有很多”这句话的问题我不太明白,如果从 驱动的角度讲是有很多的IMD,可是那时对不同的驱动而言的,象UBS IMD。但是你要的关于NDIS的IMD,它是在NDIS4.0以后的版本支持的,NDIS3.0不支持,也就是说98不支持IMD。
第二:关于NDIS没有什么好书,有的就是DDK的文档,看DDK的文档就可以了! 第三:协议驱动和IMD都是直接从网卡Miniport中获得数据包的,但是,协议驱动是做捕获的,就是说只是数据包的一个Copy!而IMD是做截包的,Firewall、vpn就是这种方式。我需要的是截获数据包,所以你要使用IMD,或者是HOOK! 第四:Windows的网络组件的体系结构是:Application-->(API)Winsock(Base SPI)-->(TDI)Protocol Driver(NDIS)-->(NDIS)Miniport Driver(NDIS)-->NIC。括号中是接口,其它的就是模块,在Base SPI和TDI之间还有很多的东西,你也不需要知道,我就不说了! 好运 ! |
|
|
地下室#
发布于:2003-02-24 09:36
经过一段时间的阅读,我觉得自己需要开发intermediate driver。但是资料上说这层的驱动功能之一是完成不同链路层结构的转换,比如atm和ethernet。这个我就迷糊了(因为我一直以为交给中间层驱动的就是ip包,照资料的说法,交给中间驱动的是以太网帧?)。
|
|
5楼#
发布于:2003-02-24 10:04
是一个 完整的以太网帧
|
|
|
6楼#
发布于:2003-02-24 16:24
那么从 ip 栈出来的ip 数据流先交给谁封装成物理帧嗯????我就是要自己做一个这个功能的东西替代它!!
|
|
7楼#
发布于:2003-02-24 16:40
从协议层出来的就已经有了MAC地址了,你可以在协议层的下面来修改
|
|
|
8楼#
发布于:2003-02-24 18:05
phone-boy,你说的意思是要做一个数据链路层是吗。你能不能说说你们的驱动的数据包都给谁?下面是给你们自己的板卡,那么上面呢?是给TCP/IP系统吗?
|
|
|
9楼#
发布于:2003-02-25 08:54
上面是给tcp/ip栈
|
|
10楼#
发布于:2003-02-25 09:28
ddk里面有ATM驱动的例子,你可以看看的吖,一个类似中间层的东西吧。
|
|
|