Wireshark verfügt über zwei Arten von Filtern: Anzeigefilter und Erfassungsfilter.
Anzeigefilter sind flexibler als Erfassungsfilter (einige Erfassungsfilter können dies nicht tun), da Anzeigefilter die Daten prüfen, nachdem sie bereits in das Paketprotokoll von wireshark kopiert wurden.
Aufnahmefilter können für die Leistung von großem Nutzen sein, wenn viele separate Datenströme über Ihre Netzwerkschnittstelle laufen, Sie jedoch nur eine kleine Menge davon erfassen möchten. Die Daten werden niemals in Wireshark kopiert, wenn sie nicht mit den Erfassungsfiltern übereinstimmen.
Sie können dies tatsächlich ausprobieren und den Leistungsunterschied in der Benutzeroberfläche spüren (und den Leistungsunterschied bei der CPU-Nutzung beobachten), indem Sie Folgendes tun:
- Starten Sie einen schnellen Webserver auf Localhost.
- Starten Sie einen enormen HTTP-Dateidownload (Gigabyte an Daten).
- Erfassen Sie auf der Localhost-Netzwerkschnittstelle mit einem Erfassungsfilter, der den Port ignoriert, an dem der riesige Download stattfindet.
- Löschen Sie den Erfassungsfilter vollständig, und vergleichen Sie in Schritt 3 die Leistung und die CPU-Auslastung, um dieselbe Art von Filter auf der Anzeigefilterseite festzulegen.
Bei IIRC speichert Wireshark die Paketkappen auf die Festplatte (damit es nicht in OOM geht). Der Engpass, der bei "zu breiten" Capture-Filtern auftritt, besteht wahrscheinlich darin, dass Ihr Festplattensubsystem alle Vorgänge auf Ihrer Netzwerkschnittstelle protokollieren muss.
Aus diesem Grunde, wenn Sie einen sehr ausgelasteten Server sind wiresharking nur einen bestimmten Fluss oder Prozess zu beobachten, ist es wesentlich sinnvoll Capture Filter einzustellen. Andernfalls führt wireshark zu erheblicher CPU-Last und E / A-Durchsatz.
Unter Windows wird die Paketerfassung meistens auf der Kernel-Seite implementiert. Wireshark verwendet ein Tool namens WinPcap, ein Kernel-Modul, das Ihre Capture-Filter zur Laufzeit in nativen Code kompiliert, um einen extrem optimierten Test zu erstellen, ob der Capture-Filter übereinstimmt oder nicht. Wenn der Filter nicht übereinstimmt, wird das Paket niemals in den Prozessraum von wireshark kopiert.
Die Implementierung des pcap-Kernelseiten-Backends kann von Plattform zu Plattform und somit auch in Bezug auf Leistung und Effizienz variieren.