日期:2014-05-16  浏览次数:20690 次

libpcap为何能捕获到达其他机器的数据包
有没有人能说下网络数据帧的流通方式?我想知道为什么网卡能接收到mac地址不为本机的单播数据帧?

我在看libpcap,不理解为什么它可以捕获到达其他机器的数据包。

如果我的主机不被配置为路由,那不是只有目标地址为本机的单播、广播和多播才会被发给本机么?

为什么能接收到到达其他机器的数据包?

谢谢。

------解决方案--------------------
一个子网里的计算机, 比如A发出一个包, 它不知道会落到谁手里, 它只是之前通过ARP协议问到了一个可能真实的B机器的MAC, 并把这个MAC放在了这个包的链路头里.

整个子网里的所有计算机的链路层都会收到这个包, 判断MAC是否是自己的, 是自己的就上传到IP层看IP是不是自己的, 最后上升到TCP/UDP层, 判断端口是不是开启的.

就这么个原理, 所以抓包都是链路层抓包.