阅读:3689回复:43
是否可以在协议驱动里面构造以太帧
我想问一下链路层的成帧是在协议驱动里面完成的吗?如果我想自己控制成帧的过程是否可以在协议驱动里面完成呢?
不知道协议驱动对应的是网络协议的哪一层,请高手讲解一下,20奉送 |
|
|
沙发#
发布于:2003-03-10 16:54
[quote]你如何发送的?不行肯定是发送的不正确,绑定关系不对? 呵呵,你误会了,数据发送我已经测试过了,我只是对你刚才的那个 网卡混杂模式只能sniffle不明白而已 [/quote] sniffle具体到底是什么意思呀??? :cool: |
|
板凳#
发布于:2003-03-07 20:24
你如何发送的?不行肯定是发送的不正确,绑定关系不对? 呵呵,你误会了,数据发送我已经测试过了,我只是对你刚才的那个 网卡混杂模式只能sniffle不明白而已 |
|
|
地板#
发布于:2003-03-07 16:41
你如何发送的?不行肯定是发送的不正确,绑定关系不对?
|
|
|
地下室#
发布于:2003-03-07 16:03
我就知道是设成混杂模式了,这样只能做sniffer,别的什么都不能干,那是已经达到网卡以后网卡有给你的一个副本,原来的packet已经发出去了。 还是不太明白,网卡设成混杂模式只是它有收取网上所用以太帧的能力,我注册了协议栈后通过协议栈朝网卡上发送数据为什么不行呢,给讲讲原理,谢谢了先 |
|
|
5楼#
发布于:2003-03-07 10:31
我就知道是设成混杂模式了,这样只能做sniffer,别的什么都不能干,那是已经达到网卡以后网卡有给你的一个副本,原来的packet已经发出去了。
|
|
|
6楼#
发布于:2003-03-07 10:30
我就知道是设成混杂模式了,这样只能做sniffer,别的什么都不能干,
|
|
|
7楼#
发布于: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的话就没有问题了, |
|
8楼#
发布于:2003-03-06 21:19
receive函数好像只负责接收低层的数据包吧,发送是调用ndissend函数吧 没有错呀。。。发送是调用ndissend函数,但是当NDISSEND执行完后,调用完NDISSEND后,数据还是会走RECEIVE函数。。。。所以说不管RECEIVE还是NDISSEND的数据都是走RECEIVE函数。。所以才不好区分呀。。。 [/quote] 是吗,我看了NDIS.H里面对NDISSEND的定义,好像调用的是sendhandle吧,数据走receive函数你是从什么资料上看到的, 如果是那样的话,确实就有点麻烦了 |
|
|
9楼#
发布于:2003-03-06 18:20
[quote]win2000/ntddk/src/network/ndis/packet的例子就可以自己发包, 这个我也试过了,改掉源程序里面那个广播地址为一个已知的MAC地址,我在另一台机上就能收到它发过来的数据包,我现在不明白的地方是如果是大数据量的发送,我要把它封装成多帧,这个封装和重组的过程该怎么做 [/quote] 以太网的传输是靠的MAC地址,封装和重组的过程你具体参考一下RFC的参考资料吧,有得啃的了,好好学习一下包结构 |
|
10楼#
发布于:2003-03-06 18:16
receive函数好像只负责接收低层的数据包吧,发送是调用ndissend函数吧 [/quote]
没有错呀。。。发送是调用ndissend函数,但是当NDISSEND执行完后,调用完NDISSEND后,数据还是会走RECEIVE函数。。。。所以说不管RECEIVE还是NDISSEND的数据都是走RECEIVE函数。。所以才不好区分呀。。。 |
|
11楼#
发布于:2003-03-06 10:53
[quote][quote]你得到的是受到的报文还是发送的报文?? to mikeluo:你的意思 是进来的报文和发出的报文不一样是吗?? [/quote] 如果在协议层里,不管是发送还是接受的数据都会经过receive函数,所以要区分是往外发的,还是接受进来的就不容易了......... [/quote] receive函数好像只负责接收低层的数据包吧,发送是调用ndissend函数吧 |
|
|
12楼#
发布于:2003-03-06 10:49
win2000/ntddk/src/network/ndis/packet的例子就可以自己发包, 这个我也试过了,改掉源程序里面那个广播地址为一个已知的MAC地址,我在另一台机上就能收到它发过来的数据包,我现在不明白的地方是如果是大数据量的发送,我要把它封装成多帧,这个封装和重组的过程该怎么做 |
|
|
13楼#
发布于:2003-03-06 10:10
win2000/ntddk/src/network/ndis/packet的例子就可以自己发包,
testapp.c里面处理send时,只给了一个广播的mac地址,这么看来,应该可以自己定义数据报格式了?只要负责接受的一方可以解释? |
|
|
14楼#
发布于:2003-03-06 09:58
[quote]你得到的是受到的报文还是发送的报文?? to mikeluo:你的意思 是进来的报文和发出的报文不一样是吗?? [/quote] 如果在协议层里,不管是发送还是接受的数据都会经过receive函数,所以要区分是往外发的,还是接受进来的就不容易了......... |
|
15楼#
发布于:2003-03-06 09:31
wincap就是一个很好的例子。 哪里有这个源代码下载呀,望大虾告知 |
|
|
16楼#
发布于:2003-03-05 16:07
wincap就是一个很好的例子。
可以自定义发包。 里面有源代码是和自己的应用层直接结合。 |
|
|
17楼#
发布于:2003-03-04 21:58
自定义协议。 我现在就是这么想,只是不敢肯定而已,谢谢你的指点,我正这么做,我定义的协议可能要绕过TDI,直接和应用程序结合,毕竟TDI我也不熟悉,如果大虾能有好的例子给一个,比如如何封包,我就非常感谢。 |
|
|
18楼#
发布于:2003-03-03 16:29
自定义协议。
在很多的防火墙的控制上都采用了这样的手段。 不知道你的自定义协议要做到什么程度。是要和TDI结合还是直接和自己的应用程序结合。 不管是TDI类还是PACKET类,都可以自己封包。 MINI驱动不会管你传给它的数据包是什么内容。你只需要按照格式把包填充好,然后发给它就可以了。 |
|
|
19楼#
发布于:2003-02-28 15:39
就是就是,给位大虾帮忙思考一下,谢谢先
|
|
|
上一页
下一页