阅读:1850回复:12
Packet的疑惑
用Packet收包,设置成混杂模式时,居然可以抓到本机发出的数据包!比如我ping一次,竟然收到4个ICMP Echo Request和4各ICMP Echo Reply;
而设置成DIRECTED时,只能收到发给本机的(4个ICMP Echo Reply)。 ping不是经由tcpip.sys发出的么?为什么从本机发出的包还会被Packet收到呢?难道混杂的时候,网卡会把本机发出的数据又通知上层接收?还是hub广播的时候会给数据进入的口也回送一份?谁能指点一下。 |
|
最新喜欢:jzyhum... |
沙发#
发布于:2002-06-04 19:42
估计,大家不愿回答。 不要,一切都靠别人啊。。。。。。。。。。。。。 |
|
|
板凳#
发布于:2002-06-04 22:36
为何不愿回答?不知道?不屑? 如果自己能搞定,当然不用问啦!而且也没看见相关资料有说明的(不知道DDK文档里面有没有?具体在什么位置?)…… |
|
地板#
发布于:2002-06-04 22:49
\"用Packet收包,设置成混杂模式时,“居然”可以抓到本机发出的数据包!\"
为什么不??? 很多东西,不只是找,而要学! 我并无其他意思,只是猜测:“估计,大家不愿回答。” :P |
|
|
地下室#
发布于:2002-06-04 22:55
\"用Packet收包,设置成混杂模式时,“居然”可以抓到本机发出的数据包!\" 就以ping的例子来说,74字节(通常是这个大小)的帧应该是被tcpip.sys中的某一个函数调用NdisSend或者NdisSendPackets送出的呀;而这两个函数应该又会调用微端口的MiniportSend或者MiniportSendPackets。NDIS在什么时候调用了Packet的ProtocolReceive或者ProtocolReceivePacket呢?没道理啊…… |
|
5楼#
发布于:2002-06-05 10:29
我想,你可能是什么地方想偏了,越想越想不明白。
我觉得,以太网使用的是冲突监测/重发机制,早期的以太网就是一根同轴导线,把所有的机器连起来,其中一个机器线断了,其他的就都收不到它后边机器的数据了。同样来想混杂模式,也就是,把机器网卡设成接收同轴导线上的所有数据(电平信号)的模式,这应该只和硬件有关,不关系到软件(当然要软件来设定了)。 只是我的一点理解也可能有偏差的地方。 |
|
|
6楼#
发布于:2002-06-05 10:47
[quote]\"用Packet收包,设置成混杂模式时,“居然”可以抓到本机发出的数据包!\" 就以ping的例子来说,74字节(通常是这个大小)的帧应该是被tcpip.sys中的某一个函数调用NdisSend或者NdisSendPackets送出的呀;而这两个函数应该又会调用微端口的MiniportSend或者MiniportSendPackets。NDIS在什么时候调用了Packet的ProtocolReceive或者ProtocolReceivePacket呢?没道理啊…… [/quote] 我也不知道ndis具体在什么调用得。 但是ndis的确调用了。 这个调用发生在miniport_send之前, 因为imd如果在mpsend里面对包进行了处理, packet.sys抓到的是没有经过处理的包。 并非只有设置为混杂模式才会调用,设置为loop_back的时候 也会调用。 |
|
|
7楼#
发布于:2002-06-05 18:12
我的理解为:
当“网卡”工作在“混杂模式”时,数据经由“网卡”时(不论收或发),“网卡”会调用(通知?)(由NDIS负责实现)协议层的相关函数,真正的收不收取是你自己的事了。 住: 此处的“网卡”为指的是,协议层看到的网卡。 可能为“虚的”!!! 大虾见笑,见笑。。。。。。。。。。 :) |
|
|
8楼#
发布于:2002-06-05 23:08
我的理解为: 多谢版主和各位的关注。 虚拟网卡应该就是向上层显露的微端口了。按照你的意思,也就是说这种行为是底层的驱动(网卡驱动)实现的?或者说,当高层协议驱动设置为混杂模式时,实际上是告诉底层的网卡驱动不论是收到的还是要发送出去的数据都会向上Indicate了? 而斑竹的意思应该是说设置混杂模式(或loop_back)时NDIS库在它的发送数据的例程里面调用低层的MiniportSend之前也把要从本机发送出去的数据通过某种渠道(NdisMXxxIndicate?或者直接ProtocolReceive?)给了Packet一份。 我现在明白了,总之,所谓混杂模式(NDIS),不仅仅是将网卡(如果支持的话)在硬件上进行某种设置,而且还改变底层驱动或者NDIS库函数的某种流程。 |
|
9楼#
发布于:2002-06-06 11:40
”我现在明白了,总之,所谓混杂模式(NDIS),不仅仅是将网卡(如果支持的话)在硬件上进行某种设置,而且还改变底层驱动或者NDIS库函数的某种流程。“
嘿嘿,应该是这样吧! :) |
|
|
10楼#
发布于:2002-06-06 11:46
”我现在明白了,总之,所谓混杂模式(NDIS),不仅仅是将网卡(如果支持的话)在硬件上进行某种设置,而且还改变底层驱动或者NDIS库函数的某种流程。“ nod. 以前对混杂模式的理解仅仅停留在“网卡能将目的MAC不是给本机的非广播包也交给主机处理”,没有考虑到Windows下的具体含义。感觉“loop_back”这个词好像更好地说明这种处理的过程。 |
|
11楼#
发布于:2002-06-06 17:50
这样的方式,不是学到了更多吗?
另: 我前所说的“估计,大家不愿回答。” 另一个原因,大概是你太“小气” :) 一分不给,这是礼节性的问题。 这是游戏,但是有规则会更好! :D |
|
|
12楼#
发布于:2002-06-07 10:03
这样的方式,不是学到了更多吗? 呵呵,发贴的时候没有登录,所以显示的可用分是零。我重新开一个。 |
|