Wireshark Display Filters
What It Is
Wireshark display filters control which packets are shown after capture. They do not reduce what was captured. Use display filters to isolate a conversation, protocol, error, retransmission, handshake, DNS name, VLAN, WLAN frame, or TCP stream while keeping the original packet evidence intact.
Modern note: Capture filters and display filters are different languages. tcp port 443 is a capture filter. tcp.port == 443 is a Wireshark display filter.
Operators
| Operator | Alias | Meaning | Example |
|---|---|---|---|
== |
eq |
Equal | ip.addr == 10.0.0.10 |
!= |
ne |
Not equal | tcp.port != 22 |
> |
gt |
Greater than | frame.len > 1500 |
< |
lt |
Less than | tcp.len < 100 |
>= |
ge |
Greater or equal | ip.ttl >= 64 |
<= |
le |
Less or equal | tcp.window_size <= 1024 |
contains |
none | Contains bytes or text | dns.qry.name contains "example" |
matches |
~ |
Regex match | http.host matches "example\.com" |
in |
none | Set membership | tcp.port in {80 443 8443} |
and |
&& |
Logical AND | ip.addr == 10.0.0.10 and tcp |
or |
|| |
Logical OR | dns or arp |
not |
! |
Logical NOT | not arp |
Watch out: A Boolean field can exist even when the bit is not set. For TCP flags, prefer explicit comparisons like tcp.flags.syn == 1.
Core Fields
| Layer | Useful Fields |
|---|---|
| Frame | frame.number, frame.time, frame.len, frame.protocols |
| Ethernet | eth.addr, eth.src, eth.dst, eth.type |
| VLAN | vlan.id, vlan.priority, vlan.etype |
| ARP | arp.opcode, arp.src.proto_ipv4, arp.dst.proto_ipv4, arp.src.hw_mac |
| IPv4 | ip.addr, ip.src, ip.dst, ip.ttl, ip.proto, ip.dsfield.dscp |
| IPv6 | ipv6.addr, ipv6.src, ipv6.dst, ipv6.nxt, ipv6.hlim |
| ICMP | icmp.type, icmp.code |
| ICMPv6 | icmpv6.type, icmpv6.code, ndp |
| TCP | tcp.port, tcp.srcport, tcp.dstport, tcp.flags, tcp.stream |
| UDP | udp.port, udp.srcport, udp.dstport, udp.length |
| DNS | dns.qry.name, dns.a, dns.aaaa, dns.flags.rcode |
| TLS | tls, tls.handshake, tls.handshake.extensions_server_name |
| HTTP | http.request, http.response, http.host, http.request.uri |
| WLAN | wlan, wlan.sa, wlan.da, wlan.bssid, wlan.fc.type_subtype |
Everyday Filters
| Goal | Display Filter |
|---|---|
| Host traffic | ip.addr == 10.0.0.10 |
| Two hosts | ip.addr == 10.0.0.10 and ip.addr == 10.0.0.20 |
| IPv6 host | ipv6.addr == 2001:db8::10 |
| Subnet | ip.addr == 10.0.20.0/24 |
| TCP or UDP port | tcp.port == 443 or udp.port == 443 |
| DNS queries | dns.flags.response == 0 |
| DNS failures | dns.flags.rcode != 0 |
| ARP | arp |
| VLAN ID | vlan.id == 20 |
| TCP stream | tcp.stream == 4 |
| HTTP requests | http.request |
| TLS handshakes | tls.handshake |
| QUIC | quic or udp.port == 443 |
| DHCPv4 | bootp |
| DHCPv6 | dhcpv6 |
| ICMPv6 neighbor discovery | icmpv6 or ndp |
TCP Analysis Filters
| Goal | Display Filter |
|---|---|
| SYN packets | tcp.flags.syn == 1 and tcp.flags.ack == 0 |
| SYN/ACK packets | tcp.flags.syn == 1 and tcp.flags.ack == 1 |
| Resets | tcp.flags.reset == 1 |
| FIN packets | tcp.flags.fin == 1 |
| Retransmissions | tcp.analysis.retransmission |
| Fast retransmissions | tcp.analysis.fast_retransmission |
| Duplicate ACKs | tcp.analysis.duplicate_ack |
| Zero window | tcp.analysis.zero_window |
| Window updates | tcp.analysis.window_update |
| Out of order | tcp.analysis.out_of_order |
| Lost segment warning | tcp.analysis.lost_segment |
| TCP payload | tcp.len > 0 |
Watch out: TCP analysis flags are Wireshark interpretations. They are useful clues, not proof by themselves. Always check sequence numbers, timing, and capture position.
Wireless Filters
| Goal | Display Filter |
|---|---|
| All 802.11 | wlan |
| Management frames | wlan.fc.type == 0 |
| Control frames | wlan.fc.type == 1 |
| Data frames | wlan.fc.type == 2 |
| Beacon frames | wlan.fc.type_subtype == 8 |
| Probe requests | wlan.fc.type_subtype == 4 |
| Probe responses | wlan.fc.type_subtype == 5 |
| Authentication | wlan.fc.type_subtype == 11 |
| Association requests | wlan.fc.type_subtype == 0 |
| Deauthentication | wlan.fc.type_subtype == 12 |
| Disassociation | wlan.fc.type_subtype == 10 |
| BSSID | wlan.bssid == aa:bb:cc:dd:ee:ff |
| Station address | wlan.addr == aa:bb:cc:dd:ee:ff |
Modern note: Useful WLAN packet analysis usually requires monitor mode and the right channel. A normal client capture often misses management frames and other clients.
Workflow
- Start with a broad display filter like
ip.addr == 10.0.0.10. - Add the protocol or port once the conversation is visible.
- Use packet details to right-click fields and apply them as filters.
- Follow TCP stream only after you know the stream is relevant.
- Use time display settings that match logs.
- Save filtered packet sets only as derived evidence. Keep the original pcap unchanged.
Cisco IOS/IOS-XE Examples
Use Wireshark display filters after exporting embedded captures from routers, switches, firewalls, or wireless controllers.
monitor capture buffer CAP-BUF export flash:issue.pcap
Typical post-export filters:
ip.addr == 10.0.0.10 and tcp.port == 443
dns.qry.name contains "adjacentnode"
tcp.analysis.retransmission or tcp.analysis.zero_window
Notes:
- Cisco capture filters limit what is captured. Wireshark display filters limit what you see afterward.
- Export the pcap before clearing capture buffers.
- Keep platform time synchronized so packet timestamps line up with logs.
Troubleshooting
| Symptom | Check | Likely Cause |
|---|---|---|
| Filter returns nothing | Field name, protocol decode, capture point | Wrong field or traffic not captured |
| Capture filter works but display filter fails | Syntax language | BPF used in display filter bar |
| TLS hides payload | SNI, cert, IPs, timing | Encryption working as designed |
| DNS name not visible | DoH, DoT, cache, encrypted client | DNS not in plaintext capture |
| TCP errors look severe | Capture point, offload, packet loss | Local capture artifact or real loss |
| Wireless frames missing | Monitor mode, channel, adapter support | Capture setup issue |
Watch Out
- Do not filter away evidence too early.
- Do not confuse
ip.addr == A and ip.addr == Bwith impossible source and destination logic. It means both addresses appear in the packet. - Do not assume HTTP fields exist inside HTTPS.
- Do not rely on display filters to sanitize sensitive data.
- Do not ignore capture location. Client-side, server-side, and SPAN captures tell different stories.