数据包嗅探器的原理

时间:2013-01-13 10:59:39

标签: c winapi proxy network-programming tcp-ip

我想知道数据包嗅探器的原理。他们如何捕获其他应用程序的数据包?

我一直在考虑这个问题。我有一个理论。这与代理服务器的工作方式有关吗?当使用某些特殊API时,所有本地应用程序都会将其数据包发送到指定的ip而不是原始数据包。数据包嗅探器接收并复制,最后将它们发送回原始目的地。是吗?

您能解释数据包嗅探器的工作原理吗? 感谢您的帮助。

1 个答案:

答案 0 :(得分:8)

网络接口(即硬件网络适配器卡)接收线路上的所有流量,无论是否发送给它们。

收到帧后,驱动程序会检查MAC address中的收件人frame header,并将其与接口的MAC进行比较。如果地址匹配,则帧被转发到OS以供消费;如果没有,它就会被丢弃。

接口还提供了放入 promiscuous mode 的选项,其中所有帧都转发到操作系统。这就是数据包嗅探器的作用:它们向驱动程序发送命令,使卡处于混杂模式,然后可以读取从网络实际到达的所有流量,无论它是谁。

当然,混杂模式并不能保证您将在网络上收到所有流量;网络拓扑可以轻松防止发送给他人的流量首先到达您的系统(例如that's what switches typically do)。