大多数情况下,当网络崩溃或遇到问题时,您必须通过搜索捕获到的数据包来查找问题。这就是诸如Wireshark之类的工具大显身手的地方了。它是目前使用最广泛的网络协议分析器之一,它分析从网络TAP(也称为数据包捕获设备)或计算机的NIC发出的文件,并让您深入了解它们的参数、消息、格式等。
然而,在捕获网络线路时会获得的信息量令人生畏。捕获如此多的数据包,意味着您最终将得到巨大的捕获文件。不过幸运的是,Wireshark允许用户快速过滤这些数据,因此您可以筛选您感兴趣的部分,例如某个IP源或目标。您甚至可以比较值、搜索字符串、隐藏不必要的协议等。
下面介绍的过滤器均可用于实时捕获以及导入的文件,从而使您可以在协议的几乎任何字段上进行筛选,包括数据流的十六进制值。当然,您要过滤的内容完全取决于您的具体情况和目的。
我们咨询了我们的工程师,他们最喜欢什么过滤器以及如何使用它们。以下是一些他们常用的过滤器。
ip.addr == x.x.x.x
为任何以x.x.x.x作为源IP地址或目标IP地址的数据包设置过滤器。假设您要分析特定流量,这将非常有用。应用该过滤器可以帮助您分析传出流量,查看有哪些数据与您要查找的IP或源相匹配。
您还可以选择使用ip.dst == x.x.x.x,来仅按目标进行过滤,或者使用ip.src == x.x.x.x,进行按源过滤。
ip.addr == x.x.x.x && ip.addr == x.x.x.x
(或者 ip.src == xxxx && ip.dst == xxxx – for a destination)
在两个特定IP地址之间设置对话过滤器。这可以帮助您检查两个特定主机或网络之间的数据。当您要查找特定数据时,这个过滤器可以提供帮助,所以无需再遍历其他不感兴趣的数据。
http or dns
设置过滤器以显示所有http和dns协议。它可以缩小所需的确切协议范围。 因此,如果您需要跟踪某些奇怪的FTP流量,则只需将其设置为“ftp”。如果想找出为什么某些网站没有出现的原因? 则只需要将其设置为“dns”即可。
tcp.port==xxx
为具有特定源或目标端口的TCP数据包设置过滤器。只查看进出某个特定端口的通信量是非常有用的,也不会耽误太多时间。
tcp.flags.reset==1
设置过滤器来显示所有的TCP重置。所有数据包都有一个TCP,如果将其设置为1,它会告诉接收方计算机应立即停止使用该连接。因此,此过滤器是一个强大的过滤器,因为TCP重置会立即终止TCP连接。
tcp contains xxx
该过滤器显示了包含特定术语(不是xxx,请使用您要查找的术语)的所有TCP数据包。如果您要查找数据包中出现的特定术语,则需要此过滤器。
tcp.stream eq X
跟随tcp流。
tcp.seq == x
按序列号过滤。
tcp.flags.push == 1
对于故障排除很重要,此过滤器可检测推送事件。
http.request
此过滤器过滤所有HTTP GET和POST请求。 它可以显示访问量最大的网页。
!(arp or icmp or dns)
它被设计用来过滤掉某些类型的协议,它屏蔽掉了arp、icmp、dns或其他你认为没有用的协议。这将使你能集中注意力关注你感兴趣的流量。
udp contains xx:xx:xx
它为任意偏移(offset)的特定十六进制值设置过滤器。
dns.flags.rcode != 0
指示无法正确解析哪些dns请求。
如果您想了解更多有关与Wireshark完美集成的便携式网络捕获解决方案的信息,可以查看“便携式数据包捕获解决方案的发展”一文。