有关网卡混杂模式

时间:2022-11-03 15:14:05
        网络课程设计,用pcaplib编个小sniffer, 怎么弄都只能捕捉到自己的包或是网关传送传给自己的包(事实上,期间仅有一次捕到过一个非本机包,不过被视为异常现象忽略了),不是说将网卡设置成混杂模式就行了吗?莫非设置不成功?百般不得解后,发信给pcaplib的mail list了,结果老外是这样说的:
In a switched LAN you will only see broadcasts and packets destined to the
address(es) that are advertised behind your switch port. The sollution is:
a) use the "monitor" port on your switch
b) use a hub rather than a switch
c) overflow the forwarding table of your switch to turn it into a hub
The first being the preferred option, of course.
        恍然,将网卡混杂模式并不截取网段上所有的数据包,它只是能截取所有路过这块网卡的数据包。“混杂模式能接收传输在网络上的每一个信息包”这种说法仅仅对于过去的hub式的局域网才成立。而对于现在广泛使用的交换式(switched)局域网,计算机的端口直接与交换机的端口相连,当然也通过交换机和同网段的其他计算机的端口相连,所以,它和共享式不同,只有在两个站点需要通信时,交换机才同时联通多个端口,平时是不联通的。而且,主机的数据包先是经过网关,如果是非广播的,将由交换机根据其上的目标地址是否已记录来决定包的走向。所以,不象共享式的,一般每个包都会经过所有同网段的主机,而仅仅是广播的或者目标地址为同网段的主机才会被截取。
       原因明白了,但是正如老外所说,要想监听网段所有的包,最好是在交换机上配置一个监听端口,该端口目标地址设为你的主机地址,那样将所有经过该交换机的包复制一份再转发给你。这违反了本程序只在本机上执行的原则了。
       照此推论,arp欺骗只是对arp协议进行欺骗。也就是说只能阻止你和新的ip地址进行通信,不能阻止你和已通信过,网关的mac地址已经被记录在DLC协议中的地址将进行通信,因为这时你没有用到arp协议了,只是用到ip协议。
      嗯,下一次再被别人给用p2p终结者限制式,试一试:<