Rıza KorkusuzTechnical Support
0 / 12 reviewed
← Back to Portfolio
Study guide · Wireshark + Nmap for IT support

See the packets. Then write the ticket.

A support-focused guide to the two classic network tools: capturing and filtering traffic in Wireshark, reading TCP, DNS, DHCP, ARP and TLS on the wire, checking ports and services with Nmap, and turning what you find into a ticket note the next team can act on.

About this pageStudy and interview-prep material, not a record of professional penetration testing or production work. Lab outputs were generated on an isolated machine against 127.0.0.1 only; everything else is a clearly labelled illustrative example with fictional hosts. Scan and capture only where you are authorized.
12 sections ~54 min read 8 support scenarios 10 animated diagrams 7 interactive toggles 12-question quiz
Layer by layerLink, address, name, transport, TLS, application. Stop at the first layer that fails.
Evidence, not opinionsEvery check ends with a timestamp, a frame number or a saved scan file.
Permission firstOnly your own systems or written scope. Captures are private data; handle them that way.
1

Why support engineers use Wireshark and Nmap

ORIENTATION · ~2 min

Most tickets arrive as a feeling: “it’s slow”, “it won’t connect”. These two tools turn that feeling into evidence with timestamps.

A Tier 1–2 technician spends most of the day between a user who sees a symptom and a team that owns the fix: the network team, the server team, an application vendor. The quality of that hand-off decides how fast the ticket closes. “User can’t reach the portal” bounces around for days. “SYN packets to 10.20.8.15:443 get no reply from three different VLANs since 09:40 PT; the server is up and listening locally” lands on the right desk within the hour.

Wireshark records the packets that actually crossed a network interface and decodes them into something readable. Nmap asks a host, from wherever you are standing, which ports answer and how. One is a microphone, the other a knock on the door. They complement the usual first-line tools (ping, ipconfig, nslookup, Test-NetConnection), they do not replace them.

User laptop10.20.4.57Switch / Wi-Fiaccess layerFirewallpolicy + NATApp server10.20.8.15:443capture here……and here, then compareSupport workstationnmap -p 443,445 …443 open445 closed3389 filteredWireshark answers “what actually crossed this wire, and when?”Nmap answers “from where I stand, what answers on which port?”
Two tools, two questions. Most real tickets need both answers.

When each tool earns its place

Question on the ticketReach forWhy
Is the port reachable from here at all?Nmap (or Test-NetConnection)One probe answers open / closed / filtered in seconds.
Which services is this host exposing after the change?Nmap -sVLists listening ports and guesses what runs on them.
Why is the file copy slow?WiresharkShows retransmissions, window problems and server response times.
Did DNS fail, or did the connection fail after DNS?WiresharkYou see the query, the answer (or silence) and the next packet.
Is the firewall dropping traffic or is the service down?BothNmap gives the verdict; a capture on the far side proves where packets stop.
Why does only one laptop get a 169.254 address?WiresharkShows whether DHCP Discovers leave the laptop and whether any Offer returns.

A layered habit

Walk up the stack and stop at the first layer that fails: link (cable, Wi-Fi, ARP) → addressing (DHCP, IP, gateway) → name (DNS) → transport (TCP handshake, port reachable) → security (TLS) → application (HTTP status, login). Both tools map neatly onto this ladder, and the rest of this page follows it.

How to read the samples on this pageOutputs marked Lab capture were produced on an isolated lab machine against 127.0.0.1 only, using small test services started for this page (Nmap 7.95, TShark 4.4.19). Outputs marked Illustrative are hand-written examples with sample addresses to show a pattern. None of it comes from a production network.
Interview line“Wireshark tells me what actually happened on the wire; Nmap tells me what answers from where I’m standing. I use them to turn a vague complaint into a specific, timestamped finding for the team that owns the fix.”
2

Permission, ethics and privacy come first

NON-NEGOTIABLE · ~3 min

Both tools are completely legitimate and both can get you fired or worse when pointed at the wrong target. Authorization is part of the troubleshooting procedure, not a footnote.

Scanning with Nmap

  • Only scan networks and hosts you own or have explicit written permission to test. “Written” means a ticket, change request or email from someone with authority over that system, naming the targets, the time window and what kind of scan is allowed.
  • Your job title is not permission. A help-desk role normally covers the user’s own device and the specific host in the ticket, not the whole subnet. When in doubt, ask the network or security team first.
  • Tell the security team. A scan looks exactly like early-stage reconnaissance. An unannounced one can trigger the intrusion detection system, an incident and a very awkward meeting.
  • Fragile devices exist. Old printers, building-management controllers, medical and industrial (OT/ICS) equipment can hang or reboot under aggressive scans. Keep to the ports you need and gentle timing, and never scan OT networks without the owner present.
  • Practice target: the Nmap project runs scanme.nmap.org as a host you are allowed to scan for learning. Keep it light (a few scans, no brute-forcing, no floods). Your own home lab or local virtual machines are even better.
  • Skip intrusive scripts (brute, dos, exploit, intrusive, vuln categories) unless a security engagement explicitly authorizes them. Support work rarely needs anything beyond port and service checks.

Capturing with Wireshark

  • Capture only where you are authorized: your own machine, or a company device and network when the ticket and policy allow it. Intercepting other people’s traffic without authority can break the law as well as company policy.
  • Captures contain personal data. Unencrypted protocols expose passwords, cookies, emails, file contents and names. Even encrypted traffic reveals who talked to which site and when.
  • Minimize: use a capture filter for the host and port in question, capture for minutes not hours, and consider a small snapshot length (headers only) when payload is not needed.
  • Handle the file like a password. Store pcaps in the approved, access-controlled location, attach them to the ticket rather than to chat, never post them publicly, and delete them when the ticket closes per retention policy.
  • Ask before decrypting. TLS key-log files decrypt sessions. Use them only on test systems or with explicit approval, and destroy them afterwards.
Interview line“Before I scan or capture, I confirm scope in writing, keep it to the host and ports in the ticket, and treat the capture file as sensitive data with a retention date.”
3

Wireshark: capturing the right traffic

WIRESHARK · ~3 min

A good capture is mostly decided before you press Start: which machine, which interface, which filter, and for how long.

Install and first launch

  • Windows: the installer bundles Npcap, the driver that lets Wireshark read packets. Without it you get an empty interface list. On managed laptops the install usually needs IT approval.
  • macOS / Linux: capturing needs elevated rights. On Linux the usual approach is to add your user to the wireshark group so only the small dumpcap helper runs privileged, rather than running the whole GUI as root.
  • No install allowed? Windows 10/11 ships pktmon, which can capture and convert its output to pcapng for Wireshark on another machine.

Choosing the interface

The start screen lists interfaces with a small live traffic sparkline. Pick the one that carries the traffic you care about: the Wi-Fi adapter or Ethernet adapter, not a virtual one. VPN clients often add their own adapter: traffic to the corporate app goes through it, so capturing on Wi-Fi only shows encrypted tunnel packets. Loopback is for traffic a machine sends to itself.

Where to capture matters more than how

  • On the client: shows what the user’s machine sent and received. Easiest and least invasive.
  • On the server (with approval): proves whether the client’s packets actually arrived.
  • Both ends at once: the strongest evidence. A SYN that leaves the client but never reaches the server has been dropped somewhere in between, and you have the timestamps to show it.
  • SPAN / mirror port or a network TAP: for devices you cannot install software on (printers, phones, appliances). That is network-team territory.

Promiscuous mode asks the network card to keep frames not addressed to it. On a modern switched network you still mostly see your own traffic plus broadcasts, which is why mirror ports exist. On Wi-Fi, capturing other clients needs monitor mode, which most Windows adapters do not support.

NICwire Capture filterBPF · before saving Capture file.pcapng on disk Display filterview only Packet listwhat you see dropped forever hidden, still saved (none)(none)6 packets6 shownudp port 53(none)2 packets2 shown(none)dns6 packets2 shown, 4 hiddenDNSHTTPARPTLS
A capture filter is a one-way door: what it rejects was never recorded. A display filter is a lens: clear it and everything comes back.

Capture filters vs display filters

They look similar and are not. A capture filter uses the BPF syntax shared with tcpdump and is applied before packets are saved; anything it rejects is gone. A display filter uses Wireshark’s own field-based language and only hides packets in a capture you already have. Use a capture filter to keep files small and private on busy links; use display filters for the actual analysis.

GoalCapture filter (BPF)Display filter
One hosthost 10.20.8.15ip.addr == 10.20.8.15
One TCP porttcp port 443tcp.port == 443
DNS onlyudp port 53dns
DHCP onlyudp port 67 or udp port 68dhcp
A subnetnet 10.20.4.0/22ip.addr == 10.20.4.0/22
Hide my own RDP sessionnot tcp port 3389!(tcp.port == 3389)
Common trapTyping tcp.port == 443 into the capture filter box (or tcp port 443 into the display bar) fails. The bar turns red when the syntax is wrong for that box; green means valid, not necessarily useful.

Settings worth changing once

  • Time format: View → Time Display Format. “Seconds since previous displayed packet” makes gaps jump out; “UTC date and time” or local time of day makes it easy to match the user’s “it froze at 2:14”.
  • Ring buffer for intermittent problems: capture to several fixed-size files that rotate, so you can leave it running until the fault reappears without filling the disk.
  • Name resolution: resolving IP addresses to host names is off by default; leave it that way on large captures, because looking up every address slows the GUI and adds your own DNS queries to the traffic.
  • Reproduce on purpose: start the capture, then have the user repeat the failing action, and write down the clock time. A short, focused capture beats an hour of noise.
Interview line“I pick the capture point first: client for most tickets, both ends when I need to prove where packets stop. Capture filters keep the file small and private; display filters do the analysis.”
4

Display filters that answer support questions

WIRESHARK · ~3 min

You do not need hundreds of filters. Around twenty, plus the habit of right-clicking a field and choosing “Apply as Filter”, covers most tickets.

Syntax in one minute

  • Filters name a protocol or a field: dns, tcp.port, http.response.code.
  • Compare with ==, !=, >, <, contains, matches (regular expression), and combine with &&, ||, ! and parentheses.
  • ip.addr matches source or destination. To exclude a host, write !(ip.addr == 10.20.4.57). Older Wireshark versions read ip.addr != … as “either address differs”, which matched nearly everything; the !( … ) form means the same thing in every version.
  • Click any field in the packet details pane and the status bar shows its filter name. Right-click → Apply as Filter or Prepare as Filter builds it for you.

The support short list

FilterShowsUse it when
ip.addr == 10.20.8.15Everything to or from one hostFirst narrowing step on almost every ticket
tcp.port == 443One TCP port, either directionIsolating one application
tcp.flags.syn == 1 && tcp.flags.ack == 0Connection attempts onlyCounting attempts, spotting scans, finding unanswered SYNs
tcp.flags.reset == 1Resets“Connection refused” or apps dropping mid-session
tcp.analysis.flagsEvery TCP problem Wireshark noticedQuick health check of a slow transfer
tcp.analysis.retransmissionResent segmentsSuspected packet loss
tcp.analysis.zero_windowReceiver buffer fullSlow transfers where the network looks clean
dnsQueries and responsesAny “can’t find the site” ticket
dns.flags.rcode != 0DNS errors only (NXDOMAIN, SERVFAIL, REFUSED…)Hunting failing lookups in a busy capture
dns.time > 0.5Answers that took over half a second“Everything feels slow to start”
http.request / http.response.code >= 400Plain-HTTP requests / error responsesInternal web apps, proxies, printers’ web pages
tls.handshake.type == 1TLS ClientHello messages (with SNI)Which HTTPS sites the client tried to reach
tls.alert_messageTLS alertsHTTPS failures, certificate or version problems
arpARP requests and repliesPrinter and gateway reachability, IP conflicts
arp.duplicate-address-detectedConflicting ARP answersSuspected duplicate IP
dhcpDORA and renewals (bootp on very old versions)169.254 addresses, wrong scope, lease failures
icmpPing, unreachable, TTL exceededPing tests and “port unreachable” replies
frame.time_delta_displayed > 1Gaps over one second between shown packetsFinding where a session “hung”

Habits that save time

  • Narrow in steps: host → port → the protocol → the problem flag. Save useful ones as filter buttons (the “+” on the filter toolbar).
  • Exclude your own noise: if you are remoted into the machine, add !(tcp.port == 3389) or the remote tool’s port, or your own session floods the capture.
  • Coloring rules paint TCP problems black with red text by default. A wall of black rows is a hint before you have typed anything.
  • Mark and note: Ctrl+M marks a packet; add a packet comment with the finding. Frame numbers make the ticket note precise (“frames 112–118”).
Interview line“I narrow in steps: host, then port, then protocol, then the problem flag, for example tcp.analysis.flags. And I quote frame numbers in the ticket so anyone can find the same packets.”
5

Reading TCP: handshakes, resets, retransmissions, windows

WIRESHARK · ~3 min

Most “can’t connect” and “it’s slow” tickets are decided by a few TCP packets. Learn the five shapes below and you can read most of them at a glance.

Every TCP connection starts with a three-way handshake: the client sends SYN, the server answers SYN/ACK, the client confirms with ACK. After that both sides number their bytes (sequence numbers) and acknowledge what they received. Each side also advertises a window, how much more data it can accept right now. Toggle the cases below and watch how each failure looks different on the wire.

Client10.20.4.57Server10.20.8.15 : 443firewall dropsSYN seq=0 win=64240 MSS=1460t=0SYN, ACK seq=0 ack=1+12 msACK ack=1Data: request (len=412)ACK + response dataHealthy: three packets open the connection, then data flows. The gap between SYN and SYN/ACKis roughly one network round trip, a free latency measurement.SYN dst port 8443t=0RST, ACK+11 msAn instant reset: the host (or a device speaking for it) is reachable but nothing acceptsthat port. Think service stopped, wrong port, or the app bound to 127.0.0.1 only.SYNt=0SYN [TCP Retransmission]+1 sSYN [TCP Retransmission]+3 sSYN [TCP Retransmission]+7 sSilence, then the client retries with growing gaps and gives up. Something is dropping theSYN on the way: firewall, ACL, wrong route, or the host is off. Exact retry count and timingdepend on the OS.seq=1 len=1460seq=1461 len=1460 (lost)seq=2921 len=1460ACK=1461 [TCP Dup ACK]ACK=1461 [TCP Dup ACK] SACKseq=1461 [TCP Fast Retransmission]ACK=4381 (gap filled)One segment is lost, the receiver keeps asking for it with duplicate ACKs, the senderresends. A handful is normal; a steady stream means real loss on the path (Wi-Fi, bad cable,duplex mismatch, congested link).Data len=65535ACK win=0 [TCP ZeroWindow][TCP ZeroWindowProbe]+0.3 sACK win=0 [TCP ZeroWindowProbeAck]win=16384 [TCP Window Update]+2.1 sData resumesThe receiver says “my buffer is full, stop”. The network is fine; the receiving applicationis not reading fast enough (busy disk, CPU, antivirus scanning, a slow app). Look at thathost, not the switch.
Sample sequence numbers and timings. Square-bracket labels are the kind of notes Wireshark’s TCP analysis adds in the Info column.

What each shape usually means

You seeMost likelyNext step
SYN → SYN/ACK → ACK, then dataNetwork path and port are fineLook higher: TLS, HTTP status, application errors
SYN → immediate RSTPort closed: service down, wrong port, bound to localhostCheck the service on the server; confirm the port number
SYN, retransmitted SYNs, nothing backDropped by a firewall/ACL, wrong route, or host downCapture on the server side; test from another subnet
Handshake OK, then RST mid-sessionApp crashed or closed abruptly, idle timeout on a firewall, or a security device killing itNote who sent the RST and after how long idle
Many retransmissions and duplicate ACKsPacket loss on the pathWi-Fi quality, cabling, interface errors, congested WAN
Zero window / window fullReceiver cannot keep upCPU, disk, antivirus or the app on the receiving host
Large gap after a request, no retransmissionsServer is slow to answer (application time)Compare network RTT (handshake) with response time

Network time vs server time

The handshake gives you the network round trip for free: time from SYN to SYN/ACK as seen from the client. If that is 12 ms but the first byte of the response arrives 4 seconds after the request, the network is not the bottleneck; the server or application is. That one comparison prevents a lot of “the network is slow” tickets from bouncing to the wrong team.

A real handshake from the lab

Below is a plain HTTP request from curl to a small test web server on the same machine. Real loopback traffic, so the timings are microseconds rather than the milliseconds you would see across a network.

tshark · plain HTTP on loopback (columns trimmed, two ACK rows omitted)Lab capture · 127.0.0.1 only
$ tshark -r web.pcapng
1 0.000000 127.0.0.1 → 127.0.0.1 TCP 50026 → 18080 [SYN] Seq=0 Win=65495 MSS=65495
2 0.000017 127.0.0.1 → 127.0.0.1 TCP 18080 → 50026 [SYN, ACK] Seq=0 Ack=1
3 0.000027 127.0.0.1 → 127.0.0.1 TCP 50026 → 18080 [ACK] Seq=1 Ack=1
4 0.000070 127.0.0.1 → 127.0.0.1 HTTP GET / HTTP/1.1
5 0.000074 127.0.0.1 → 127.0.0.1 TCP 18080 → 50026 [ACK] Seq=1 Ack=80
6 0.001905 127.0.0.1 → 127.0.0.1 TCP HTTP/1.0 200 OK
8 0.001953 127.0.0.1 → 127.0.0.1 HTTP HTTP/1.0 200 OK (text/html)
10 0.001995 127.0.0.1 → 127.0.0.1 TCP 18080 → 50026 [FIN, ACK]
11 0.002152 127.0.0.1 → 127.0.0.1 TCP 50026 → 18080 [FIN, ACK]
12 0.002165 127.0.0.1 → 127.0.0.1 TCP 18080 → 50026 [ACK]

Read it as: handshake (1–3), request (4), server acknowledges and answers in about 1.8 ms (5–8), both sides close politely with FIN (10–12). A RST instead of FINs at the end would be worth a second look.

Interview line“I separate network time from server time: SYN to SYN/ACK is the round trip, request to first response byte is the server. A reset means something answered and refused; silence means something dropped it.”
6

DNS, DHCP and ARP on the wire

WIRESHARK · ~4 min

Before any application packet leaves, a client needs an address (DHCP), a name answered (DNS) and the next hop’s hardware address (ARP). Each fails in recognizable ways.

DNS: the answer, the error, or the silence

Filter on dns and look at pairs: a query and its response share a transaction ID, and Wireshark links them (“response in frame 214”). Three outcomes matter:

  • Answer with records: DNS worked. If the app still fails, check that the returned IP is the right one (stale record, split DNS, hosts file, VPN vs office answer).
  • Error code: NXDOMAIN (rcode 3, name does not exist: typo, missing record, wrong search suffix), SERVFAIL (rcode 2, the server could not resolve: often a broken forwarder or DNSSEC problem), REFUSED (rcode 5, that server will not answer this client).
  • No response: the query left and nothing came back. The client retries and may switch to its secondary DNS server, adding seconds of delay. Firewall rules or an unreachable DNS server are the usual suspects.
tshark · DNS fields (sample data)Illustrative example
$ tshark -r helpdesk.pcapng -Y "dns" -T fields -e frame.number -e dns.qry.name -e dns.flags.rcode -e dns.time
41 intranet.corp.example
42 intranet.corp.example 0 0.004
57 hrportal.corp.example
63 hrportal.corp.example
64 hrportal.corp.example 3 2.011 # NXDOMAIN, and slow: asked twice
88 sharepoint.example.test
# no response to frame 88 within 5 s → client retried against secondary DNS

Columns: frame, query name, response code (0 = no error, 3 = NXDOMAIN), response time in seconds. Rows without an rcode are the queries themselves.

DHCP: DORA

A client without an address broadcasts a Discover, servers reply with an Offer, the client broadcasts a Request for one offer and the chosen server confirms with an Acknowledge. Renewals later skip straight to Request/Ack, sent directly to the server. Capture on the client with the filter udp port 67 or udp port 68, then run ipconfig /release and ipconfig /renew (with the user’s consent: it drops their connection briefly).

Laptopno IP yet · MAC …:4e:91DHCP server10.20.0.2DISCOVER 0.0.0.0 → 255.255.255.255t=0OFFER 10.20.4.57/22 · gw .1 · DNS 10.20.0.10+4 msREQUEST “I accept 10.20.4.57” (broadcast)ACK lease 8 hARP probe: anyone using .57?Discover, Offer, Request, Acknowledge. Early messages are broadcasts because the client hasno address yet. Many clients then check with ARP that nobody else is using the offeredaddress.DISCOVERt=0DISCOVER (retry)+4 sDISCOVER (retry)+12 sgives up → 169.254.x.x (APIPA)Discovers leave the client but nothing comes back. Typical causes: wrong VLAN on the switchport, missing DHCP relay (IP helper) on the router, port security, or the server/scope isdown. A 169.254 address is the client admitting defeat.REQUEST 192.168.1.44 (old home lease)t=0NAK “not valid on this network”DISCOVER (start over)OFFER 10.20.4.61REQUEST 10.20.4.61ACK lease 8 hThe laptop tries to renew an address from another network. The server refuses with a NAK andthe client restarts DORA. One NAK is harmless; repeated NAKs or two servers answering pointto a rogue or misconfigured DHCP server.
Sample addresses. Display filter: dhcp (older Wireshark versions call it bootp).
  • Discovers leave, no Offer: the broadcast never reaches a server. Check the switch-port VLAN, the DHCP relay (IP helper) on the router for that VLAN, and the server’s scope status.
  • Offer arrives, client never Requests: rare; suspect the client (driver, security software) or a malformed offer.
  • Offers from two different servers: a rogue DHCP server, often a home router plugged into an office port. Every client that takes its offer gets a wrong gateway.
  • Scope exhausted: the server stays silent or logs “no free leases”. Common on guest Wi-Fi with long lease times.

ARP: who owns this IP?

To send a packet to a host on the same subnet (or to the default gateway), a machine broadcasts “who has 10.20.4.30?” and the owner replies with its MAC address. ARP problems are rare but nasty because everything above them breaks at once.

Switchone VLANPC A10.20.4.57 (asking)Printer10.20.4.30PC C10.20.4.88Laptop D10.20.4.11210.20.4.30 (static)1 · Who has 10.20.4.30? Tell 10.20.4.57 (broadcast to everyone)2 · 10.20.4.30 is at 00:1b:a9:10:22:33 (printer, unicast)3 · 10.20.4.30 is at 8c:16:45:aa:bb:cc ← a second answer!
Sample MAC and IP addresses. Two different MACs answering for one IP is the classic “printer works, then doesn’t” pattern. Display filter: arp; Wireshark also flags the conflict in Expert Info.
  • Requests with no reply: the target is off, on another VLAN, or the IP is simply wrong.
  • Two MACs answering for one IP: duplicate address, usually a device with a static IP inside the DHCP range. Symptoms come and go as caches update.
  • The gateway’s MAC suddenly changes: could be a failover pair (normal) or ARP spoofing (not normal: involve security).
  • Gratuitous ARP: a host announcing its own IP, normal at boot or failover. Many in a row from one host after a cable plug-in are expected.

On the client side, arp -a (Windows) or ip neigh (Linux) shows the cached MAC for an IP. Comparing that MAC with the label on the printer is a two-minute check that finds duplicate IPs.

Interview line“For a no-network ticket I check the lower services in order: did DHCP finish DORA, does ARP resolve the gateway, does DNS answer with the right IP. A 169.254 address tells me DHCP never completed.”
7

TLS failures and Wireshark’s analysis tools

WIRESHARK · ~5 min

HTTPS hides the content, not the handshake. And Wireshark’s built-in statistics often find the problem before you read a single packet.

TLS handshake failures

Filter with tls.handshake or tls.alert_message. The ClientHello is always readable: it shows the server name the client asked for (SNI), the TLS versions it offers and its cipher suites. If the connection dies right after it, the server’s reply (an alert, a reset, or silence) tells you which side objected.

Browser / client10.20.4.57Web serverportal.example.test:443ClientHello SNI=portal.example.test TLS 1.2–1.3t=0ServerHello TLS 1.3 chosen+18 ms{Certificate, CertVerify, Finished} encrypted{Finished}Application Data (HTTP inside)In TLS 1.3 the certificate travels encrypted, so Wireshark shows “Application Data” afterServerHello. The ClientHello (SNI, offered versions) is still readable and is often enoughto diagnose.ClientHello max TLS 1.2t=0Alert (Fatal): Protocol Version [70]+0.2 msFIN, ACKThe server only speaks newer TLS than the client offers. This exact pattern is in the labcapture below: an old client or a hardened server, one side needs updating.ClientHello TLS 1.2 onlyt=0ServerHelloCertificate (issuer: Corp-Inspect-CA)Alert (Fatal): Unknown CA [48]RSTHere the client rejects the server&rsquo;s certificate. Common support causes: an SSL-inspection proxy whose root CA was never pushed to this device, a missing intermediatecertificate, or a wrong system clock.
Simplified. Alert numbers are the standard TLS alert codes shown by Wireshark (70 = protocol version, 48 = unknown CA).
tshark · TLS 1.3-only test server vs. a TLS 1.2-only clientLab capture · 127.0.0.1 only
$ tshark -r tls.pcapng -Y "tcp.stream == 0"
1 0.000000 TCP 34152 → 18443 [SYN]
2 0.000020 TCP 18443 → 34152 [SYN, ACK]
3 0.000033 TCP 34152 → 18443 [ACK]
4 0.000190 TLSv1 Client Hello
6 0.000362 TLSv1.2 Alert (Level: Fatal, Description: Protocol Version)
8 0.000419 TCP 18443 → 34152 [FIN, ACK]
 
$ tshark -r tls.pcapng -Y "tls.alert_message" -T fields -e frame.number -e tls.alert_message.desc
6 70
 
$ tshark -r tls.pcapng -Y "tls.handshake.type == 1" -T fields -e frame.number -e tls.handshake.extensions_server_name
4 # first client offered TLS 1.2 only, no SNI → rejected
14 lab.internal.test # second client offered TLS 1.3 with SNI → handshake completed

Lab setup: a throwaway test server that accepts TLS 1.3 only, contacted once by a client limited to TLS 1.2 (rejected with alert 70) and once normally (succeeds). Columns trimmed; plain ACK rows omitted.

Usual support causes behind TLS errors

  • Protocol version: an old client, embedded device or legacy app after a server was hardened (or the reverse).
  • Unknown CA / bad certificate: missing intermediate on the server, an SSL-inspection proxy whose root certificate is not deployed on this device, or a self-signed certificate.
  • Certificate expired or “not yet valid”: check the server certificate dates and the client clock. A laptop with a dead CMOS battery fails every HTTPS site.
  • Name mismatch: the user typed an IP or short name that the certificate does not cover. Compare SNI with the certificate’s names.
  • Reset right after ClientHello: often a security device or proxy blocking that destination by SNI.

A useful cross-check outside Wireshark: openssl s_client -connect host:443 -servername host prints the chain and the negotiated version, and browsers show the certificate in the padlock menu.

Follow TCP Stream

Right-click any packet → Follow → TCP Stream. Wireshark rebuilds the whole conversation as text, client in one color, server in another, and applies a tcp.stream == N filter. For plain HTTP, SMTP, FTP or a printer’s web page you can read the request and the error message directly. For TLS you see ciphertext, which still shows who stopped talking first. Mind the privacy rules: this is where passwords and personal data become readable.

Statistics menu: the 30-second overview

Conversations

Every pair of endpoints with packets, bytes and duration. Sort by bytes to find the transfer that is eating the link, or spot one client talking to an unexpected IP.

Protocol Hierarchy

What share of the capture each protocol uses. A “slow network” that is 70% backup traffic or video is a very different ticket.

I/O Graphs

Packets or bytes over time, with your own filter lines. Plot tcp.analysis.retransmission on top of total traffic and line it up with the user’s complaint.

Expert Information

(Analyze menu) Everything Wireshark found unusual, grouped by severity: errors, warnings, notes, chats. Start here on any unfamiliar capture.

Endpoints

Per-host totals. Handy to confirm which IPs and MACs were present at all.

Flow Graph

A ladder diagram of the selected packets, like the diagrams on this page. Good for screenshots in tickets.

user says “it froze” 0s10s20s30s40s50s60sMbit/s (sample)all traffic in this conversationtcp.analysis.retransmission (count)
Illustrative shape, not a real capture. When the throughput dip and the retransmission spike line up with the user’s complaint, you have a timestamped, defensible finding.

The same statistics are available from the command line, which is handy on servers without a GUI or for pasting into a ticket:

tshark statistics (output trimmed for width)Lab capture · 127.0.0.1 only
$ tshark -r web.pcapng -q -z conv,tcp
TCP Conversations
| <- Frames Bytes | | -> Frames Bytes | | Total Frames Bytes | Duration
127.0.0.1:50026 <-> 127.0.0.1:18080 6 607 bytes 6 483 bytes 12 1090 bytes 0.0022
 
$ tshark -r tls.pcapng -q -z io,phs
Protocol Hierarchy Statistics
eth frames:26 bytes:6607
ip frames:26 bytes:6607
tcp frames:26 bytes:6607
tls frames:10 bytes:5519
 
$ tshark -r scan.pcapng -q -z expert
Warns (3) Sequence TCP Connection reset (RST)
Notes (7) Protocol TCP The SYN packet does not contain a SACK PERM option

The Expert note on the scan capture is a nice detail: Nmap’s probes are hand-built minimal SYNs without the options a normal operating system adds, and Wireshark notices.

tshark and dumpcap basics

dumpcap is the small capture engine Wireshark itself uses; tshark is the full dissector on the command line. Use them on servers, over SSH, for long ring-buffer captures, or to pull specific fields into a CSV.

Command-line capture and analysis. Interface numbers differ per machine; check with tshark -D.

tshark -D                                   # list interfaces with numbers
tshark -i 2 -f "host 10.20.8.15" -a duration:120 -w case1234.pcapng
dumpcap -i 2 -f "tcp port 445" -b filesize:100000 -b files:10 -w smb.pcapng   # ring buffer: 10 x ~100 MB
tshark -r case1234.pcapng -Y "tcp.analysis.flags"          # read a file with a display filter
tshark -r case1234.pcapng -Y "dns.flags.rcode != 0" -T fields -e frame.time -e dns.qry.name -e dns.flags.rcode
tshark -r case1234.pcapng -q -z conv,tcp                   # conversations
tshark -r case1234.pcapng -q -z io,phs                     # protocol hierarchy
tshark -r case1234.pcapng -q -z expert                     # expert info summary

Related helpers ship in the same package: editcap trims or splits files (for example to send only the five relevant minutes), mergecap combines client and server captures, capinfos prints a file’s time range and packet count for the ticket.

Interview line“For HTTPS problems I read the handshake, not the content: SNI, offered versions and any alert number. Then Expert Info and Conversations give me the overview before I go packet by packet.”
8

Nmap basics: discovery, port states, scan types

NMAP · ~3 min

Nmap answers a narrow question very precisely: from this machine, right now, which hosts respond and what do their ports say?

Host discovery: -sn

nmap -sn 10.20.4.0/24 checks which addresses respond without scanning any ports (older docs call it a “ping scan”). On the local subnet with admin rights Nmap uses ARP, which firewalls cannot hide; across routers it combines ICMP echo, TCP probes to common ports and ICMP timestamp requests. A host that blocks all of these looks “down” even when it is not; -Pn skips discovery and scans anyway.

nmap -sn · host discoveryLab capture · 127.0.0.1 only
$ nmap -sn 127.0.0.1
Starting Nmap 7.95 ( https://nmap.org )
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00015s latency).
Nmap done: 1 IP address (1 host up) scanned in 0.00 seconds

The port states

StateWhat Nmap sawSupport translation
openA service accepted the probe (SYN/ACK, or a UDP reply)Something is listening and reachable from here
closedAn explicit refusal (TCP RST)Host reachable, nothing listening on that port
filteredNo reply, or an ICMP “prohibited/unreachable”A firewall or ACL is in the way; the service may or may not exist
unfilteredReachable, but open/closed unknown (ACK scan only)Firewall-rule mapping; rare in support
open|filteredNo reply where open ports often stay silent (UDP)Common in UDP scans; needs a protocol-specific check
closed|filteredCould not tell which (idle scan only)You will rarely meet it
Nmap hostsupport workstationTarget10.20.8.15firewall dropsSYN → port 443t=0SYN, ACKRST (Nmap never completes it)Nmap verdict: open · reason syn-ack. A SYN scan (-sS, needs admin/root) sends the resetitself instead of finishing the handshake, so the application usually never sees a fullconnection.SYN → port 445t=0RST, ACKNmap verdict: closed · reason reset. The host is up and reachable on the network; nothing islistening on that port.SYN → port 3389t=0SYN (Nmap retry)+1 sNmap verdict: filtered · reason no-response (or an ICMP “administratively prohibited”). Afirewall or ACL is in the way, so Nmap cannot tell whether a service is behind it.SYNt=0SYN, ACKACK (full handshake)RSTA connect scan (-sT) asks the operating system to make a real connection, so no specialprivileges are needed, but the target application and its logs will see it.
Reasons in the note match what --reason prints. Diagram for study; the lab output further down shows the same three states for real on 127.0.0.1.

Scan types you will actually use

  • -sS SYN scan (default with admin/root): sends SYN, reads the answer, never completes the handshake. Fast and quiet for the target application, still very visible to firewalls and IDS.
  • -sT connect scan (default without privileges): uses the operating system’s normal connect call. Full handshake, so the application may log it.
  • -sU UDP scan: needed for DNS (53), DHCP (67), SNMP (161), syslog (514), NTP (123). Slow, because silence is ambiguous and many systems rate-limit ICMP replies. Scan only the UDP ports you care about.

Choosing ports: -p

Without -p, Nmap scans the 1,000 most common ports for each protocol you select.

nmap -p 443 10.20.8.15                 # one port
nmap -p 80,443,8080-8090 10.20.8.15    # list and range
nmap -p U:53,T:53,443 -sU -sS 10.20.0.10   # UDP and TCP together (needs admin)
nmap -F 10.20.8.15                     # 100 most common ports
nmap --top-ports 20 10.20.8.15         # the 20 most common
nmap -p- 10.20.8.15                    # all 65,535 TCP ports (slow, only with a reason)

A real scan with all three states

For the lab, one port had a small web server, one had a TLS test server, one had nothing listening, and one was blocked by a local firewall rule that silently drops packets. --reason prints the evidence behind each verdict:

nmap -sS --reason · open, closed and filteredLab capture · 127.0.0.1 only
$ sudo nmap -sS -p 18080,18389,18443,18445 --reason 127.0.0.1
Nmap scan report for localhost (127.0.0.1)
Host is up, received localhost-response (0.000073s latency).
 
PORT STATE SERVICE REASON
18080/tcp open unknown syn-ack ttl 127
18389/tcp filtered unknown no-response
18443/tcp open unknown syn-ack ttl 127
18445/tcp closed unknown reset ttl 127
 
Nmap done: 1 IP address (1 host up) scanned in 1.30 seconds

“unknown” in the SERVICE column just means these high lab ports are not in Nmap’s list of well-known ports; -sV (next section) actually asks the service.

Timing: -T0 to -T5

Templates trade speed for gentleness: -T3 is the default, -T4 is reasonable on a healthy LAN, -T2 or lower suits fragile devices and slow WAN links. -T5 can drop probes and report false “filtered” results, which is the opposite of what a troubleshooter wants. For finer control, --max-rate caps packets per second.

Interview line“Open means something answered, closed means the host refused with a reset, filtered means nothing came back, usually a firewall. I scan only the ports in the ticket and add --reason so the verdict comes with evidence.”
9

Service detection, OS guesses, NSE and output

NMAP · ~3 min

Knowing a port is open is step one. Knowing what is listening, and saving the result in a form someone else can use, is what makes it ticket evidence.

Service and version detection: -sV

-sV connects to open ports and compares the replies with Nmap’s database of service fingerprints. It answers “is that really a web server on 8080, and which one?” It takes longer, completes real connections (applications log them) and is not always right, so treat versions as a strong hint, not proof.

nmap -sV with one safe NSE scriptLab capture · 127.0.0.1 only
$ nmap -sT -sV -p 18080 --script http-title 127.0.0.1
PORT STATE SERVICE VERSION
18080/tcp open http SimpleHTTPServer 0.6 (Python 3.13.5)
|_http-server-header: SimpleHTTP/0.6 Python/3.13.5
|_http-title: Site doesn't have a title (text/html).
 
Service detection performed.
Nmap done: 1 IP address (1 host up) scanned in 6.22 seconds

A quick test page served by Python’s built-in web server, correctly identified, plus two safe scripts reading the server header and page title. Against the TLS test port, -sV only reported ssl/unknown and printed a raw fingerprint: a good reminder that unusual services are not always named.

OS detection -O and the -A shortcut

  • -O guesses the operating system from subtle TCP/IP behavior. It needs admin rights and works best when the target has at least one open and one closed port. Results are a ranked guess; firewalls and virtualization blur them.
  • -A switches on OS detection, version detection, default scripts and traceroute together. Convenient in a lab, heavy and noisy on a production network: many probes, many connections, scripts that log in to services anonymously. In support work, prefer to ask for exactly what you need (-sV -p …).

Nmap Scripting Engine (NSE), safely

Scripts extend Nmap with protocol-specific checks. They are grouped into categories, and the category is your safety label:

CategoryExamples of what it doesIn support work
safeRead banners, titles, certificate detailsFine on in-scope hosts
default (-sC)A curated set, mostly safe and quickOK with care; some scripts connect to services
discoveryAsk services for extra informationUsually fine, check first
versionHelpers for -sVRuns automatically with -sV
intrusive, vulnMay crash services or look like attacksOnly with security approval
brute, dos, exploitPassword guessing, stress, exploitationNot support work. Do not run.

Safe-category scripts useful for support checks. Run only against hosts in the ticket.

nmap -p 443 --script ssl-cert 10.20.8.15            # who issued the cert, valid dates, names it covers
nmap -p 443 --script ssl-enum-ciphers 10.20.8.15    # TLS versions/ciphers offered (helps with version alerts)
nmap -p 80,8080 --script http-title,http-headers 10.20.8.15
nmap -p 445 --script smb-protocols 10.20.8.30        # which SMB dialects the file server speaks
nmap --script-help ssl-cert                          # read what a script does before running it

Saving results: -oN, -oX, -oG, -oA

  • -oN file.txt: normal human-readable output, ideal to attach to a ticket.
  • -oX file.xml: XML for tools and for comparing scans over time (the ndiff utility highlights what changed between two XML results).
  • -oG file.gnmap: “grepable”, one line per host, easy to filter with grep or findstr. Older format, still handy.
  • -oA basename: all three at once. A good default habit: -oA ticket-48213-before.
grepable output (-oG - prints it to the screen)Lab capture · 127.0.0.1 only
$ nmap -sT -p 18080,18389,18443,18445 -oG - 127.0.0.1
# Nmap 7.95 scan initiated … as: nmap -sT -p 18080,18389,18443,18445 -oG - 127.0.0.1
Host: 127.0.0.1 (localhost) Status: Up
Host: 127.0.0.1 (localhost) Ports: 18080/open/tcp/////, 18389/filtered/tcp/////, 18443/open/tcp/////, 18445/closed/tcp/////
# Nmap done … 1 IP address (1 host up) scanned in 1.23 seconds

Other flags that keep output useful: --open (show only open ports), -n (no reverse DNS, faster and avoids noise), -v (progress as it goes), and --packet-trace (print every probe, a great way to learn what a scan really sends).

Interview line“I prefer targeted flags over -A: -sV on the ports in question, a safe script like ssl-cert when the ticket is about certificates, and -oA so the evidence is saved and can be compared after the change.”
10

Nmap on the wire: using both tools together

LAB · ~3 min

Running Wireshark while Nmap scans is the fastest way to understand both. It also teaches you what a scan looks like to the security team.

Start a capture filtered to the target, run a small scan, stop the capture. Every verdict in the Nmap output now has packets behind it. The animation shows the general pattern; the lab capture underneath shows the exact packets behind the four-port scan from the previous sections.

Nmap -sS10.20.4.200Target22/tcpclosed53/tcpclosed80/tcpopen135/tcpfiltered443/tcpopen445/tcpfiltered3389/tcpclosed8080/tcpopenSYN probeSYN/ACK backRST backno dot back = filtered
Sample target. In Wireshark this burst is many SYNs from one source port to many destination ports within milliseconds, which is exactly what intrusion detection systems look for.
what nmap -sS looked like on the wire (127.0.0.1, columns trimmed)Lab capture · 127.0.0.1 only
$ tshark -r scan.pcapng
1 0.000000 63414 → 18443 [SYN] Win=1024 MSS=1460
2 0.000036 18443 → 63414 [SYN, ACK]
3 0.000045 63414 → 18443 [RST] # Nmap tears it down: 18443 = open
4 0.000068 63414 → 18389 [SYN] # no answer …
5 0.000086 63414 → 18080 [SYN]
6 0.000098 18080 → 63414 [SYN, ACK]
7 0.000101 63414 → 18080 [RST] # 18080 = open
8 0.000108 63414 → 18445 [SYN]
9 0.000114 18445 → 63414 [RST, ACK] # 18445 = closed
10 1.100318 63416 → 18389 [SYN] # retry after ~1.1 s, still nothing: filtered

What to notice

  • Port order is shuffled on purpose (18443 before 18389 before 18080). Nmap randomizes it.
  • One source port, tiny window (1024), minimal options: hand-crafted probes, unlike a normal OS SYN. Wireshark’s Expert Info even flags the missing SACK option.
  • The filtered port gets a retry about a second later: Nmap does not trust a single silence.
  • Filter to see only the probes: tcp.flags.syn == 1 && tcp.flags.ack == 0. Nmap’s probes typically advertise a very small window (1024 here), while normal operating-system SYNs offer tens of thousands, so adding && tcp.window_size <= 4096 often separates scan probes from ordinary connections.
  • Statistics → Conversations after a wider scan shows one source talking to hundreds of ports with one or two packets each: the signature that intrusion detection systems alert on.

The two-ended test for “firewall or service?”

  1. Start a capture on the server (approved, filtered to the client’s IP and the port).
  2. From the client, run nmap -Pn -p 8443 --reason 10.20.8.15 or Test-NetConnection 10.20.8.15 -Port 8443.
  3. SYN never shows up on the server → it was dropped before the host: network firewall, ACL, routing, or the wrong IP.
  4. SYN arrives, server sends RST → nothing listening: service down or wrong port. Nmap said closed.
  5. SYN arrives, nothing goes back → the host firewall on the server is dropping it. Nmap said filtered.
  6. SYN/ACK goes back but the client never sees it → return path problem: asymmetric routing or a stateful device on the way back.
Test the port from the user sideTest-NetConnection -Port · nmap -p · curlWhat came back?RST → closedhost up, nobody listeningNothing → filteredtimeouts, repeated SYNsSYN/ACK → openport answers fineService problemstopped? wrong port? localhost only?Capture on the serverdoes the SYN arrive at all?Above TCPTLS alert? HTTP 5xx? app logsFix and re-testthen close or escalateArrives, no replyhost firewall drops itNever arrivesnetwork FW / ACL / routeFollow TCP Streamhand to app owner + evidence
The single most useful question in port tickets: did a reset come back, or nothing at all?
Interview line“When the port test says filtered, I capture on the server side. If the SYN never arrives, it’s the network path; if it arrives and the server stays silent, it’s the host firewall. Either way the ticket goes to the right team with proof.”
11

Support scenarios, step by step

PRACTICE · ~14 min

Each case: the symptom, what to ask, ordered steps, the exact commands and filters, how to read the result, and a sample ticket note. All hosts, names and data are fictional.

Scenario cards 8

Symptom → ask first → steps in order → commands and filters → reading the result → ticket note → escalation.

S1User can’t reach an internal web appDNS → TCP → TLS → HTTP

Symptom

One user reports that https://hrportal.corp.example “doesn’t load”. Colleagues in the same office say it works.

Ask first

  • Exact error text or a screenshot? (DNS error, timeout, certificate warning and HTTP 500 are four different tickets.)
  • Since when, and did anything change: password, VPN, laptop, location?
  • Other sites working? Same app from a phone on the same Wi-Fi?

Steps in order

  1. Reproduce while capturing on the user’s laptop, filtered to DNS plus the app’s IP.
  2. Check the DNS answer: right IP? Compare with a colleague’s laptop (VPN and office can get different answers).
  3. Check the TCP handshake to that IP on 443: completed, reset, or unanswered?
  4. If TCP completes, look at the TLS handshake: alert? which number?
  5. If TLS completes, the problem is in the application: browser developer tools or app logs.

Commands and filters

Resolve-DnsName hrportal.corp.example
Test-NetConnection hrportal.corp.example -Port 443
# Wireshark display filter while the user retries:
dns.qry.name contains "hrportal" || ip.addr == 10.20.8.15

Reading the result

You findIt points to
NXDOMAIN or wrong IPDNS: stale record, hosts-file entry, wrong DNS server from VPN
SYN, no replyPath/firewall issue for this client’s subnet or VPN pool
TLS alert 48 / 42Certificate trust on this device (proxy root CA missing, clock wrong)
HTTP 401/403/500Application or account problem, not the network

How to write it in the ticket sample note · fictional data

Reproduced at 10:42 PT with a capture on the user’s laptop. DNS resolves hrportal.corp.example to 10.20.8.15 (same as working colleague). TCP handshake to 10.20.8.15:443 completes in 14 ms. ClientHello (frame 37) is answered by a fatal TLS alert 48 “unknown CA” sent by the client (frame 41). Certificate is issued by Corp-Inspect-CA, which is not in this laptop’s trusted root store. Other users have it. Likely cause: device missed the certificate policy. Next: re-apply device policy / escalate to endpoint team.

Escalate when

  • Several users or a whole site affected (likely server or network side).
  • The fix needs changes to DNS records, firewall rules or certificates you do not own.
S2Slow file shareretransmissions · windows · server time

Symptom

Accounting says opening spreadsheets from the file share “takes forever” since Monday. Small files are fine; large ones crawl.

Ask first

  • Everyone, or only some users / one floor / Wi-Fi only?
  • All files or only large ones? Only one share/server?
  • Any time pattern (mornings, during backups)?

Steps in order

  1. Time the problem: copy a known large file and note start/end time.
  2. Capture on the client during the copy, filter tcp.port == 445.
  3. Run Analyze → Expert Information and the display filter tcp.analysis.flags.
  4. Open Statistics → I/O Graphs; add a line for tcp.analysis.retransmission.
  5. Compare: handshake round-trip vs. SMB response times (smb2.time).
  6. If possible, repeat from a wired PC next to the server to split network vs. server.

Commands and filters

# Client capture limited to the file server:
tshark -i 2 -f "host 10.20.8.30 and tcp port 445" -a duration:180 -w slowshare.pcapng
# Then, in Wireshark:
tcp.analysis.retransmission || tcp.analysis.duplicate_ack
tcp.analysis.zero_window || tcp.analysis.window_full
smb2.time > 0.2

Reading the result

You findIt points to
Many retransmissions / dup ACKsLoss: Wi-Fi quality, bad cable or port, duplex mismatch, congested uplink
Zero windows from the clientThe PC cannot keep up (antivirus scanning each file, disk)
Zero windows from the serverServer storage or CPU struggling
Clean TCP, slow smb2.timeServer-side delay: storage latency, overloaded file server

How to write it in the ticket sample note · fictional data

Captured a 412 MB copy from \\fs01\finance at 14:05–14:09 PT on PC ACC-07 (wired). 3.8% of segments retransmitted, concentrated at 14:06–14:08 (I/O graph attached). Handshake RTT 1 ms; SMB response times normal outside the loss window. Same copy from a PC on another switch: no retransmissions, 38 s total. Points to the access switch or cabling for floor 2. Next: network team to check interface errors on the floor-2 access switch uplink.

Escalate when

  • Retransmissions point at network hardware (switch ports, uplinks, WAN).
  • Server-side delay: hand to server/storage team with response-time evidence.
S3Printer not respondingARP · ports 9100/631/443

Symptom

The second-floor printer shows as “offline” for several users. It is powered on and its display looks normal.

Ask first

  • Did the printer move, get replaced or have its settings reset?
  • Does it print a configuration page? What IP does that page show?
  • Offline for everyone using it, or only some PCs?

Steps in order

  1. Read the printer’s IP from its front panel or configuration page.
  2. From a PC: ping it, then check arp -a for that IP. Does the MAC match the label on the printer?
  3. Port-check the print ports it should expose.
  4. Capture while sending a test print, filter on the printer’s IP: see ARP, the TCP handshake to 9100 or 631, any resets.
  5. Check the queue’s port configuration on the print server (IP or hostname, protocol).

Commands and filters

ping 10.20.6.40
arp -a | findstr 10.20.6.40
nmap -Pn -p 80,443,515,631,9100 --reason 10.20.6.40
# Wireshark: arp || ip.addr == 10.20.6.40

Reading the result

You findIt points to
ARP reply MAC is not the printer’sDuplicate IP: another device took the address
No ARP reply at allPrinter on a different VLAN/IP than the queue expects (DHCP gave it a new address)
9100 closed, 631 openQueue uses raw printing but only IPP is enabled (or the reverse)
All ports filteredFirewall between floors or printer’s own access list

How to write it in the ticket sample note · fictional data

Printer PRN-2F-01 reports IP 10.20.6.40 on its config page. From PC 2F-12, ARP for 10.20.6.40 returns MAC 8c:16:45:aa:bb:cc, but the printer’s label shows 00:1b:a9:10:22:33. Wireshark shows two different ARP replies for 10.20.6.40 (frames 8 and 9, flagged as duplicate address). A laptop with a static IP is using the printer’s address. Next: identify the laptop via switch MAC table (network team), move printer to a DHCP reservation outside the static range.

Escalate when

  • MAC lookup on switches, VLAN or reservation changes (network team).
  • Hardware faults on the printer itself (vendor).
S4DHCP lease failures169.254 · DORA · relay

Symptom

New hires in the training room get “No Internet”. ipconfig shows 169.254.x.x addresses. Office desks work fine.

Ask first

  • All devices in that room, or only some? Wired, Wi-Fi or both?
  • Was the room recently re-cabled or the switch replaced?
  • Does a device that works elsewhere fail in that room?

Steps in order

  1. On an affected laptop, capture with udp port 67 or udp port 68, then release and renew.
  2. Look for Discover leaving the laptop; any Offer coming back?
  3. If Offers come back, check that the client Requests and gets an Ack (or a NAK).
  4. If no Offer, check from the network side: switch-port VLAN, DHCP relay on the room’s VLAN, scope usage on the server.
  5. Check for unexpected Offers from a second server (rogue DHCP).

Commands and filters

ipconfig /all
ipconfig /release
ipconfig /renew
# Wireshark display filters:
dhcp
dhcp.option.dhcp == 1     # Discover messages only
dhcp.option.dhcp == 6     # NAK messages only

Reading the result

You findIt points to
Discovers, no OffersVLAN/relay misconfiguration or DHCP server/scope down
Offers from an unknown IPRogue DHCP server (home router plugged in)
NAK after RequestClient asking for an address from another network or scope mismatch
Offer, Request, then silenceServer-side issue or a security feature (DHCP snooping) blocking replies

How to write it in the ticket sample note · fictional data

Laptop TR-03 (training room, port 3B-14) sends DHCP Discover every few seconds from 09:12 PT (frames 1, 6, 15); no Offer received in 60 s. Same laptop gets a lease at a desk on floor 3. Two other training-room laptops show the same pattern. Suspect the room’s switch ports are in a VLAN without a DHCP relay since last week’s switch replacement. Next: network team to check VLAN assignment and IP helper for ports 3B-01 to 3B-24.

Escalate when

  • VLAN, relay or snooping configuration (network team).
  • Scope exhaustion or server down (server team).
S5Firewall block or service down?closed vs filtered

Symptom

After a weekend maintenance window, the billing app cannot reach its reporting service on 10.20.8.22:8443. The app shows “connection timed out”.

Ask first

  • Did anything change in the maintenance: firewall rules, server patches, service accounts?
  • Can the server reach its own service locally?
  • Any other client able to reach 8443 on that host?

Steps in order

  1. From the app server, test the port with --reason.
  2. Ask the server owner to confirm the service is running and listening on 8443 (not just 127.0.0.1).
  3. If filtered: capture on the reporting server (approved) while repeating the test.
  4. Decide using the two-ended test: SYN missing, SYN unanswered, or RST.
  5. Write up with the evidence and route to the right team.

Commands and filters

nmap -Pn -p 8443 --reason 10.20.8.22
Test-NetConnection 10.20.8.22 -Port 8443
# On the reporting server (owner runs or approves):
netstat -ano | findstr :8443       # Windows: is anything listening? which PID?
ss -ltnp 'sport = :8443'           # Linux equivalent
# Server-side capture filter: host 10.20.8.11 and tcp port 8443

Reading the result

You findIt points to
Nmap: closed (reset)Service stopped, crashed or moved to another port
Nmap: filtered; SYN never reaches serverNetwork firewall rule changed during maintenance
Nmap: filtered; SYN reaches server, no replyWindows Firewall / host firewall rule on the server
Listening only on 127.0.0.1Service config: binding address changed

How to write it in the ticket sample note · fictional data

From 10.20.8.11, nmap reports 10.20.8.22:8443 as filtered (no-response) at 08:15 PT; Test-NetConnection TcpTestSucceeded: False. Server owner confirms the service is running and listening on 0.0.0.0:8443. Capture on 10.20.8.22 during retest shows no packets from 10.20.8.11 at all, while ping and RDP from the same host arrive. Conclusion: traffic to 8443 is dropped between the hosts. Likely firewall rule change in Saturday’s maintenance (CHG-0912). Next: network/firewall team to review rule for 10.20.8.11 → 10.20.8.22 tcp/8443.

Escalate when

  • Any firewall rule change (network/security team).
  • Service crash or config change (application owner).
S6Suspicious open port after a changebaseline · -sV · ownership

Symptom

A routine check shows a new open port 5985 on a file server that did not have it last month. Nobody mentions a change.

Ask first

  • Is there a previous scan or documented baseline to compare with?
  • Any approved changes on this server recently (patches, agents, management tools)?
  • Who owns the server, and has security been told?

Steps in order

  1. Confirm it is real: rescan just that port from the same place, with -sV.
  2. Compare with the saved baseline scan.
  3. Ask the owner to identify the listening process on the server.
  4. Check the change log for a matching approved change.
  5. Report to security if there is no approved explanation. Do not try to “test” the service further yourself.

Commands and filters

nmap -sV -p 5985 --reason -oA fs01-5985-recheck 10.20.8.30
ndiff fs01-baseline.xml fs01-5985-recheck.xml     # what changed since the baseline
# On the server (owner):
Get-NetTCPConnection -LocalPort 5985 -State Listen | Select-Object OwningProcess
Get-Process -Id <PID>

Reading the result

You findIt points to
Port 5985 = WinRM (HTTP), matches an approved changeDocument and update the baseline
Unknown process or no change recordTreat as a potential security incident: escalate, preserve evidence
Port only open from one subnetFirewall scope matters: record where you scanned from

How to write it in the ticket sample note · fictional data

Monthly scan from 10.20.4.200 at 11:30 PT shows 10.20.8.30 tcp/5985 open (syn-ack); not present in baseline from 2026-09-07 (ndiff output attached). -sV identifies Microsoft HTTPAPI (typical for WinRM). No matching change in the change log. No further testing performed. Escalated to security and server owner for verification; scan files attached (fs01-5985-recheck.*).

Escalate when

  • Always to security when an exposure has no approved change behind it.
  • Server owner for confirmation of the process.
S7HTTPS fails for one user onlyTLS alert · clock · proxy

Symptom

One user gets certificate warnings on every HTTPS site; colleagues are fine. Started after the laptop was off for a month.

Ask first

  • Exact warning text? (“Your clock is ahead/behind” is a big hint.)
  • On VPN or office network? Same on home Wi-Fi?
  • Any recent re-image or security-agent update?

Steps in order

  1. Check the laptop’s date, time and time zone first.
  2. Capture one failing visit with tls.handshake || tls.alert_message.
  3. Which side sends the alert, and which number?
  4. Inspect the certificate chain in the browser padlock or with openssl s_client.

Commands and filters

w32tm /query /status          # Windows time sync state
w32tm /resync
openssl s_client -connect portal.example.test:443 -servername portal.example.test
# Wireshark: tls.alert_message || tls.handshake.type == 11

Reading the result

You findIt points to
Laptop clock months offCertificates appear not yet valid / expired: fix time sync
Issuer is the proxy’s CA, client sends alert 48Proxy root certificate missing on this device
Server sends alert 70Client stack too old for the server’s TLS policy

How to write it in the ticket sample note · fictional data

Laptop LT-221 clock showed 2026-08-30 (actual 2026-10-05). Capture at 15:20 PT: the client closes each TLS session right after the server’s handshake messages (e.g. frame 12) with no application data, consistent with the browser rejecting the certificate dates locally. After w32tm /resync, the same sites load. Root cause: time sync failed after a month offline. Closed with user confirmation.

Escalate when

  • Time sync fails repeatedly (domain/NTP issue).
  • Proxy certificate deployment missing on several devices.
S8Name resolution is slowDNS timeouts · secondary server

Symptom

Users at a branch say every website and app takes 5–10 seconds to start loading, then is fast.

Ask first

  • All apps or only some? Internal names, external names, or both?
  • Since when? Any change to DNS servers, VPN or DHCP options?
  • Same delay when using an IP address directly?

Steps in order

  1. Capture on a branch PC with udp port 53 or tcp port 53 while opening two sites.
  2. Look for queries without responses and for responses with large dns.time.
  3. Check which DNS servers DHCP hands out (ipconfig /all).
  4. Query each DNS server directly and time it.

Commands and filters

ipconfig /all | findstr /i "DNS"
Resolve-DnsName intranet.corp.example -Server 10.30.0.10
Resolve-DnsName intranet.corp.example -Server 10.20.0.10
# Wireshark: dns.flags.response == 0 && !dns.response_in   (queries never answered)
#            dns.time > 1

Reading the result

You findIt points to
Every first query to server A times out, then server B answersPrimary DNS unreachable from branch: client waits before failover
Answers slow from both serversUpstream forwarders or WAN latency
Fast DNS, slow TCP connectNot DNS: look at TCP/WAN

How to write it in the ticket sample note · fictional data

Branch PC BR2-05 capture at 09:02 PT: every query to 10.30.0.10 (primary DNS from DHCP) goes unanswered (e.g. frames 4, 19, 33); client retries against 10.20.0.10 after ~1 s and gets answers in 30–40 ms. Direct test confirms 10.30.0.10 does not respond from the branch. Next: server/network team to check DNS service on 10.30.0.10 or remove it from the branch DHCP scope option 6.

Escalate when

  • DNS server health or DHCP option changes (server/network team).

Ticket write-up template

The scenarios all end the same way: a short note someone else can act on without calling you. Keep findings factual (what, where, when, which frames), keep the assessment separate and honest about confidence, and name the next owner. Times in the user’s time zone with a label.

TICKET NOTE TEMPLATE
Summary:      <one line: what fails, for whom, since when>
Impact:       <users / sites / services affected; workaround yes/no>
Environment:  <client host + IP, target host + IP:port, wired/Wi-Fi/VPN>
Timeline:     <first report, reproduced at, tests run at (times in PT)>

Tests run:
  1. <command or capture, from where, at what time>
  2. ...
Evidence:     <pcap/scan file names, display filters used, frame numbers>
Findings:     <facts only: "SYN to 10.20.8.22:8443 gets no reply (frames 4, 9, 15)">
Assessment:   <confirmed cause, or most likely cause + confidence>
Next action:  <who / which team, what exactly is requested>
User update:  <what the user was told, in plain words>
Privacy:      <where the capture is stored; delete-by date>
Strong note
  • “SYN to 10.20.8.22:8443 unanswered from 3 subnets since 08:10 PT (frames 4, 9, 15)”
  • Commands and source host listed
  • Evidence files named and stored in the ticket
  • One clear request to one team
Weak note
  • “Network is slow, please check”
  • “Firewall issue?” with no test shown
  • Screenshots without times or IPs
  • Pcap pasted into a chat channel
Interview line“My ticket notes are facts first: what I ran, from where, at what time, and which frames show it. Then my assessment and exactly what I need from the next team.”
12

Cheat sheet and quiz

REVIEW · ~7 min

One table to keep next to the keyboard, the Nmap flags in one place, and twelve questions to check you could explain all of this in an interview.

Cheat sheet

NeedWireshark / tsharkNmap / other
Only one hostip.addr == X · capture host Xnmap X
Is port P reachable?tcp.port == P + look for SYN/ACKnmap -Pn -p P --reason X · Test-NetConnection X -Port P
Connection attemptstcp.flags.syn == 1 && tcp.flags.ack == 0--packet-trace
Refusalstcp.flags.reset == 1state closed · reason reset
Silent dropsSYN + [TCP Retransmission], no replystate filtered · reason no-response
Any TCP troubletcp.analysis.flags—
Slow transfertcp.analysis.retransmission · tcp.analysis.zero_window · I/O Graphs—
DNS problemsdns.flags.rcode != 0 · dns.time > 0.5Resolve-DnsName · nslookup · dig
DHCPdhcp (bootp on old versions)ipconfig /release · /renew · /all
ARP / duplicate IParp · arp.duplicate-address-detectedarp -a · ip neigh · nmap -sn on the local subnet
TLS failuretls.handshake.type == 1 · tls.alert_message--script ssl-cert,ssl-enum-ciphers · openssl s_client
What runs on the portFollow → TCP Stream-sV
Hosts alive—nmap -sn 10.20.4.0/24
Save evidenceFile → Save As (pcapng) · -w file.pcapng-oA ticket-NNNN
OverviewStatistics → Conversations / Protocol Hierarchy · Analyze → Expert Infondiff old.xml new.xml
Command-line capturetshark -D · tshark -i N -f "…" -a duration:60 -w f.pcapngpktmon on Windows without Wireshark

Nmap flags at a glance

Nmap flagMeaningNote
-snHost discovery only, no port scanARP on the local subnet when privileged
-PnSkip discovery, treat host as upFor hosts that block ping
-sS / -sT / -sUSYN / connect / UDP scan-sS and -sU need admin/root
-p 22,443 · -p- · -FPort list · all ports · top 100Default: top 1,000
-sVService and version detectionMakes real connections
-OOS guessAdmin needed; a guess, not a fact
-A-O -sV -sC --tracerouteHeavy; lab use, not casual production use
-sC / --scriptDefault scripts / named scripts or categoriesStick to safe category
-T0…-T5Timing template (T3 default)T4 on healthy LAN; avoid T5
--reason · --open · -nShow why · only open · no DNSGood defaults for tickets
-oN / -oX / -oG / -oANormal / XML / grepable / all threeXML enables ndiff comparisons

Quiz

Answers are saved only in this browser. Each answer shows a short explanation.

0 / 12 correct · 0 answered

1Nmap reports a port as “closed”. What does that tell you?

2You run a port test and see SYN, then retransmitted SYNs, and nothing comes back. What is the most likely explanation?

3What is the key difference between a capture filter and a display filter?

4Which display filter shows every TCP problem that Wireshark’s analysis detected?

5A laptop shows a 169.254.x.x address. In a capture you see DHCP Discover messages but no Offer. Where do you look next?

6During a slow file copy the capture shows repeated “TCP ZeroWindow” packets sent by the client PC. What does that suggest?

7Why is “nmap -A” a poor default choice for a quick support check on a production server?

8Which Nmap output option produces files that ndiff can compare to show what changed between two scans?

9A user can reach an HTTPS site’s IP on port 443, but the browser fails. The capture shows a TLS alert “unknown CA” sent by the client. Most likely cause?

10In an ARP capture, two different MAC addresses reply for the same IP address. What is the likely problem?

11Before scanning a colleague’s department subnet to troubleshoot a printer, what should you have?

12A SYN to port 8443 reaches the server (seen in a server-side capture), but the server sends nothing back and Nmap says “filtered”. Where is the block?

One-line summary“Wireshark shows what happened, Nmap shows what answers; permission and privacy come first, and the ticket gets facts, frame numbers and a clear next owner.”