网站搜索

如何在 Windows Server 中捕获和检查网络数据包


在排除棘手的连接或应用程序问题时,查看网络上正在传输的内容非常有帮助。

在排除棘手的连接或应用程序问题时,查看网络上正在传输的内容非常有帮助。 Microsoft 最初提供了 Microsoft 网络监视器,后来又推出了 Microsoft 消息分析器。不幸的是,Microsoft 已停止使用 Microsoft Message Analyzer 并删除其下载链接。目前,只有较旧的 Microsoft 网络监视器可用。

当然,您可以使用第三方工具来执行网络捕获,例如WireShark。尽管某些第三方工具可能会提供更好的体验,但 Microsoft 网络监视器仍然拥有自己的优势。在本文中,我们将了解如何使用最新可用版本的 Microsoft Network Monitor(最流行的工具之一)捕获和检查数据包。

虽然我本可以使用 WireShark,但我发现开箱即用的 Microsoft Network Monitor 的界面和可用性要容易得多。在 WireShark 中可以完成大部分相同的工作,但您可能必须在界面中进行更多配置。

使用 Microsoft 网络监视器捕获数据包

首先,我们需要安装Microsoft Network Monitor,您可以在此处找到下载,然后继续安装。安装 Microsoft 网络监视器后,继续启动该程序。启动后,您将单击“新建捕获”。

接下来,您需要单击“开始”按钮来启动监控。这将立即开始捕获,您将看到对话开始显示在左侧。

如果您发现收到一条错误消息,指出没有绑定任何适配器,那么您应该以管理员身份运行 Microsoft 网络监视器。此外,如果您刚刚安装了此软件,则可能需要重新启动。

使用 Microsoft 网络监视器的一大好处是它可以轻松地将网络对话分组在左侧。这使得查看特定流程变得更容易找到并深入研究。

展开任何一个加号都会向您显示网络监视器可能已捕获并在进程下分组的一组特定“对话”。

过滤流量

您很快就会发现,随着所有这些数据的到来,您将需要更轻松地滤除噪音。使用过滤器的一个例子是

DnsAllNameQuery

,位于标准过滤器的 DNS 部分下。通过将此行添加到显示过滤器部分并单击“应用”,您将能够仅显示那些 DNS 查询的数据包,如下所示。

构建过滤器

创建过滤器或修改内置过滤器非常容易。在“显示过滤器”字段中,有多种构建过滤器的方法。通过输入协议名称并在其后添加

.

(句点),您将看到自动完成的可能的字段值以进行比较。使用标准比较运算符

==

我们可以看看某些值是否相等。我们甚至可以使用逻辑运算符创建多重表达式,例如

and

or

。下面是一个示例。

DNS.QuestionCount AND
DNS.ARecord.TimeToLive == 14

还有一些可用的方法,例如 contains()UINT8()。您可以看到,使用下面的 contains 方法仅过滤掉包含 [google.com](http://google.com) 且 TimeToLive 为 14 的 DNS 记录。

DNS.QuestionCount AND
DNS.ARecord.TimeToLive == 14 AND
DNS.QRecord.QuestionName.contains("google.com")

您可能已经知道,有多种方法可以组合过滤器,使它们变得有用且方便使用。这是只返回您感兴趣的数据的好方法,特别是因为数据包捕获可能会变得相当大。在下一节中,我们将看一些更有用的示例。

过滤器示例

除了默认的内置示例之外,一些实际示例对于帮助您了解如何获取所需的有用数据大有帮助。

按端口号过滤

虽然可以使用 HTTP 协议进行过滤,但使用以下方法可以让您考虑自定义端口,例如 80808443,这在故障排除时特别有用。

// Filter by TCP Port Number
tcp.port == 80 OR Payloadheader.LowerProtocol.port == 80
tcp.port == 443 OR Payloadheader.LowerProtocol.port == 443

已分段的 TCP 帧将被重新组装并插入到跟踪中的新帧中,其中包含名为 Payloadheader 的特殊标头。通过查找两者,我们可以确保获得我们要查找的所有数据。

查找 SSL 协商帧

在进行故障排除时,您可能需要了解尝试协商哪些 SSL 连接。尽管您可能无法解密内部流量,但这将有助于查找连接尝试使用哪些服务器。

// Filter by SSL Handshake
TLS.TlsRecLayer.TlsRecordLayer.SSLHandshake.HandShake.HandShakeType == 0x1

查找 TCP 重传和 SYN 重传

要解决文件上传和下载问题,您可以查看是否发生了许多可能影响性能的重新传输。

Property.TCPRetransmit == 1 || Property.TCPSynRetransmit == 1

确保您已打开对话,此过滤器取决于该功能。

读取帧和十六进制数据

默认情况下,窗口布局有两个底部窗格,专用于“帧详细信息”和“十六进制详细信息”。在帧详细信息中,每个数据包都被分解为其组成部分。对面是十六进制详细信息,它们是原始字节和解码。当您在框架详细信息中选择不同的部分时,十六进制代码中的相同部分也将突出显示。

结论

使用最新版本的 Windows 执行网络跟踪非常容易。尽管微软选择停止或弃用其内部创建的工具,但有些工具仍然蓬勃发展。还有很多其他工具,例如 WireShark,但 Microsoft Network Monitor 仍然可以轻松解析和理解捕获的数据包信息。

相关文章