20楼#
发布于:2003-02-27 16:59
协议再上面的东西不太了解,不好说该怎么做,TCPIP本身就是一个TDI驱动,TDI的上面应该是一个TDI Client,这个你好好看看ddk里面的关于TDI那方面的东西吧
|
|
|
21楼#
发布于:2003-02-27 19:30
协议再上面的东西不太了解,不好说该怎么做,TCPIP本身就是一个TDI驱动,TDI的上面应该是一个TDI Client,这个你好好看看ddk里面的关于TDI那方面的东西吧 那么NDIS上面的协议驱动又是完成什么功能呢?看DDK的那些图好像协议驱动就是传输驱动吧,不是很清楚,能指教一下吗? |
|
|
22楼#
发布于:2003-02-27 20:08
你得到的是受到的报文还是发送的报文?? to mikeluo:你的意思 是进来的报文和发出的报文不一样是吗?? |
|
|
23楼#
发布于:2003-02-28 09:15
不明白你说的是什么意思。如果你是把网卡设为混杂模式来收到的包,那只能做sniffer,不能做截包和修改。
|
|
|
24楼#
发布于:2003-02-28 11:42
slightflying说话含混不清,该打PP,呵呵。
TO mikeluo:他的意思是他们自己开发了一个新的协议,和好象TCP/IP协议一样的东西,现在要把这个协议嵌到Windows中去,就是说让Windows支持他们开发的新的协议!不过呢他们又丢不下自己的面子让微软帮他们做。呵呵,打肿脸充胖子,这号人没有救了!!没有救了! :D :D :D :D :D :D :D :D :D :D |
|
|
25楼#
发布于:2003-02-28 15:39
就是就是,给位大虾帮忙思考一下,谢谢先
|
|
|
26楼#
发布于:2003-03-03 16:29
自定义协议。
在很多的防火墙的控制上都采用了这样的手段。 不知道你的自定义协议要做到什么程度。是要和TDI结合还是直接和自己的应用程序结合。 不管是TDI类还是PACKET类,都可以自己封包。 MINI驱动不会管你传给它的数据包是什么内容。你只需要按照格式把包填充好,然后发给它就可以了。 |
|
|
27楼#
发布于:2003-03-04 21:58
自定义协议。 我现在就是这么想,只是不敢肯定而已,谢谢你的指点,我正这么做,我定义的协议可能要绕过TDI,直接和应用程序结合,毕竟TDI我也不熟悉,如果大虾能有好的例子给一个,比如如何封包,我就非常感谢。 |
|
|
28楼#
发布于:2003-03-05 16:07
wincap就是一个很好的例子。
可以自定义发包。 里面有源代码是和自己的应用层直接结合。 |
|
|
29楼#
发布于:2003-03-06 09:31
wincap就是一个很好的例子。 哪里有这个源代码下载呀,望大虾告知 |
|
|
30楼#
发布于:2003-03-06 09:58
[quote]你得到的是受到的报文还是发送的报文?? to mikeluo:你的意思 是进来的报文和发出的报文不一样是吗?? [/quote] 如果在协议层里,不管是发送还是接受的数据都会经过receive函数,所以要区分是往外发的,还是接受进来的就不容易了......... |
|
31楼#
发布于:2003-03-06 10:10
win2000/ntddk/src/network/ndis/packet的例子就可以自己发包,
testapp.c里面处理send时,只给了一个广播的mac地址,这么看来,应该可以自己定义数据报格式了?只要负责接受的一方可以解释? |
|
|
32楼#
发布于:2003-03-06 10:49
win2000/ntddk/src/network/ndis/packet的例子就可以自己发包, 这个我也试过了,改掉源程序里面那个广播地址为一个已知的MAC地址,我在另一台机上就能收到它发过来的数据包,我现在不明白的地方是如果是大数据量的发送,我要把它封装成多帧,这个封装和重组的过程该怎么做 |
|
|
33楼#
发布于:2003-03-06 10:53
[quote][quote]你得到的是受到的报文还是发送的报文?? to mikeluo:你的意思 是进来的报文和发出的报文不一样是吗?? [/quote] 如果在协议层里,不管是发送还是接受的数据都会经过receive函数,所以要区分是往外发的,还是接受进来的就不容易了......... [/quote] receive函数好像只负责接收低层的数据包吧,发送是调用ndissend函数吧 |
|
|
34楼#
发布于:2003-03-06 18:16
receive函数好像只负责接收低层的数据包吧,发送是调用ndissend函数吧 [/quote]
没有错呀。。。发送是调用ndissend函数,但是当NDISSEND执行完后,调用完NDISSEND后,数据还是会走RECEIVE函数。。。。所以说不管RECEIVE还是NDISSEND的数据都是走RECEIVE函数。。所以才不好区分呀。。。 |
|
35楼#
发布于:2003-03-06 18:20
[quote]win2000/ntddk/src/network/ndis/packet的例子就可以自己发包, 这个我也试过了,改掉源程序里面那个广播地址为一个已知的MAC地址,我在另一台机上就能收到它发过来的数据包,我现在不明白的地方是如果是大数据量的发送,我要把它封装成多帧,这个封装和重组的过程该怎么做 [/quote] 以太网的传输是靠的MAC地址,封装和重组的过程你具体参考一下RFC的参考资料吧,有得啃的了,好好学习一下包结构 |
|
36楼#
发布于:2003-03-06 21:19
receive函数好像只负责接收低层的数据包吧,发送是调用ndissend函数吧 没有错呀。。。发送是调用ndissend函数,但是当NDISSEND执行完后,调用完NDISSEND后,数据还是会走RECEIVE函数。。。。所以说不管RECEIVE还是NDISSEND的数据都是走RECEIVE函数。。所以才不好区分呀。。。 [/quote] 是吗,我看了NDIS.H里面对NDISSEND的定义,好像调用的是sendhandle吧,数据走receive函数你是从什么资料上看到的, 如果是那样的话,确实就有点麻烦了 |
|
|
37楼#
发布于:2003-03-07 10:14
[quote]receive函数好像只负责接收低层的数据包吧,发送是调用ndissend函数吧 没有错呀。。。发送是调用ndissend函数,但是当NDISSEND执行完后,调用完NDISSEND后,数据还是会走RECEIVE函数。。。。所以说不管RECEIVE还是NDISSEND的数据都是走RECEIVE函数。。所以才不好区分呀。。。 [/quote] 是吗,我看了NDIS.H里面对NDISSEND的定义,好像调用的是sendhandle吧,数据走receive函数你是从什么资料上看到的, 如果是那样的话,确实就有点麻烦了 [/quote] 数据走receive函数,那是当写协议层时设置的接收方式为混杂模式的话,不信的话,你可以对PACKET的例子进行测试,我说的是协议层就是这样的,如果做中间驱动或HOOK的话就没有问题了, |
|
38楼#
发布于:2003-03-07 10:30
我就知道是设成混杂模式了,这样只能做sniffer,别的什么都不能干,
|
|
|
39楼#
发布于:2003-03-07 10:31
我就知道是设成混杂模式了,这样只能做sniffer,别的什么都不能干,那是已经达到网卡以后网卡有给你的一个副本,原来的packet已经发出去了。
|
|
|