Windows机器上的Wireshark数据包接收和处理过程是什么?


20

我将使用WiresharkWindows计算机上进行一些流量监视。在进行此工作时,我想知道Wireshark如何在Windows之前设法捕获低级网络数据包。

首先,NIC上的网络接口会收到一个数据包。然后,NIC会进行一些初始检查(CRC,正确的MAC地址等)。假设验证成功,则NIC转发数据包。但是如何以及在哪里?

我知道驱动程序是NIC与OS或任何其他应用程序之间的粘合剂。我进一步猜测是WindowsWireshark有单独的驱动程序(WinPcap吗?)。否则,Wireshark将无法接收以太网帧。是否同时存在两个或多个NIC驱动程序?NIC如何知道要使用哪个?


您的前提不正确。NIC始终将数据包移交给Windows(特别是设备驱动程序,然后移至网络堆栈),然后由Windows决定如何处理。Windows具有一项功能,程序可以要求它“像在网上一样”接收数据包的副本,也许应用过滤器,而Wireshark使用该功能。Wireshark的确实不是绕过Windows。
zwol

(有些实验性操作系统试图通过允许将数据包直接从网卡直接传递到应用程序来更好地实现超高速网络,但是AFAIK Windows无法做到这一点:您始终至少要经过NDIS层。)
zwol

Answers:


38

Windows中的I / O模型基于一堆组件。数据必须流经物理网卡和将使用该数据的应用程序之间存在的堆栈的各个组件。有时,这些各种组件在流过堆栈时会检查数据(例如,TCP数据包),并且根据该数据包的内容,可以更改数据,或者可以完全丢弃该数据包。

网络堆栈

这是数据包流经的“网络堆栈”的简化模型,以便从应用程序到达网络,反之亦然。

上方屏幕快照中显示的最有趣的组件之一是WFP(Windows筛选平台)标注API。如果我们放大它,它可能看起来像这样:

Windows筛选平台

开发人员可以自由地将自己的模块插入此堆栈中的适当位置。例如,防病毒产品通常使用“过滤器驱动程序”来插入该模型并检查网络流量或提供防火墙功能。Windows防火墙服务显然也适用于此模型。

如果您想编写一个记录网络流量的应用程序(例如Wireshark),那么执行此操作的适当方法是使用您自己的驱动程序,并将其插入到尽可能低的堆栈中,以便它可以检测到网络数据包。在防火墙模块有机会删除它们之前。

因此,此过程涉及许多“驱动程序”。也有许多不同类型的驱动程序。同样,系统上的其他形式的输入/输出,例如硬盘驱动器读和写,也遵循非常相似的模型。

另一个要点-WFP标注并不是暗示您自己进入网络堆栈的唯一方法。以WinPCap为例,它直接通过驱动程序与NDIS交互,这意味着它有机会在进行任何过滤之前就拦截流量。

NDIS驱动程序

WinPCap

参考文献:

Vista +中的下一代TCP / IP堆栈

Windows筛选平台体系结构


3
出色的图表。这些是否张贴在microsoft.com上的某个位置?如果是这样,我很乐意四处看看,看看还有其他可用的信息。
EEAA

1
完美的答案。简单明了的解释,提供了很棒的可视化和资源!非常感谢!
汉斯

1
+1,值得一提的是,在WFP之上构建了一个开源驱动程序,这使得编写称为WinDivert的此类应用程序变得微不足道。我还为此编写了一个.NET包装器

1
过去曾经有一种称为“分层服务提供者”的东西-您可以在其中拦截和重写数据包-该功能是否可以替代?它是“过滤” API的一部分吗?(哦,等等,没关系:我只是看了@TechnikEmpire的WinDivert链接,看到了可能。)
davidbak

1
@davidbak是的,WinDivert是一种混合体。标注驱动程序API供开发人员构建特定的驱动程序,该驱动程序除了可以简单地丢弃数据包(不需要任何驱动程序)以外,还可以执行任何其他操作。WinDivert是这样的驱动程序,但它是通用的,通过将包推入和弹出内核和用户模式空间来提供对包的完全访问。

3

正如Ryan Ries的回答所说:

以WinPCap为例,它直接通过驱动程序与NDIS交互,这意味着它有机会在进行任何过滤之前就拦截流量。

这是一个描述,WinPcap的文档中,它是如何工作的


作为对Ryan答案的修改,这样做会更好。它本身并不是一个答案。
与莫妮卡(Monica)进行的轻度比赛

2
实际上,是的,这对他的问题的答案-比Ryan的答案更重要。问题是“ Wireshark如何做到”;Ryan的答案提供了许多有关WinPcap(Wireshark使用的机制)使用的机制的信息,因此它当然很有趣,但与原始问题无关。我张贴的链接介绍如何WinPcap的做吧,这有关原来的问题。

7
也许您引用了并解释了第三方资源中的相关文章。如果没有其他要求,则仅链接答案不是答案。那就是SE政策。从字面上看,您在该页面上添加的所有答案都是“对Ries的答案在互联网上其他地方的工作方式进行了描述”
Lightness Races with Monica
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.