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 read8 support scenarios10 animated diagrams7 interactive toggles12-question quiz
Pick any stop, or scroll in order. Progress is saved only in this browser.
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.
← swipe the diagram →
Two tools, two questions. Most real tickets need both answers.
When each tool earns its place
Question on the ticket
Reach for
Why
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 -sV
Lists listening ports and guesses what runs on them.
Why is the file copy slow?
Wireshark
Shows retransmissions, window problems and server response times.
Did DNS fail, or did the connection fail after DNS?
Wireshark
You see the query, the answer (or silence) and the next packet.
Is the firewall dropping traffic or is the service down?
Both
Nmap gives the verdict; a capture on the far side proves where packets stop.
Why does only one laptop get a 169.254 address?
Wireshark
Shows 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.”
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.”
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.
← swipe the diagram →
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.
Goal
Capture filter (BPF)
Display filter
One host
host 10.20.8.15
ip.addr == 10.20.8.15
One TCP port
tcp port 443
tcp.port == 443
DNS only
udp port 53
dns
DHCP only
udp port 67 or udp port 68
dhcp
A subnet
net 10.20.4.0/22
ip.addr == 10.20.4.0/22
Hide my own RDP session
not 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.”
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.
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.”
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.
← swipe the diagram →
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 see
Most likely
Next step
SYN → SYN/ACK → ACK, then data
Network path and port are fine
Look higher: TLS, HTTP status, application errors
SYN → immediate RST
Port closed: service down, wrong port, bound to localhost
Check the service on the server; confirm the port number
SYN, retransmitted SYNs, nothing back
Dropped by a firewall/ACL, wrong route, or host down
Capture on the server side; test from another subnet
Handshake OK, then RST mid-session
App crashed or closed abruptly, idle timeout on a firewall, or a security device killing it
Note who sent the RST and after how long idle
Many retransmissions and duplicate ACKs
Packet loss on the path
Wi-Fi quality, cabling, interface errors, congested WAN
Zero window / window full
Receiver cannot keep up
CPU, disk, antivirus or the app on the receiving host
Large gap after a request, no retransmissions
Server 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
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.”
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
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).
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.
← swipe the diagram →
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.”
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.
← swipe the diagram →
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
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.
← swipe the diagram →
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
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.”
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
State
What Nmap saw
Support translation
open
A service accepted the probe (SYN/ACK, or a UDP reply)
Something is listening and reachable from here
closed
An explicit refusal (TCP RST)
Host reachable, nothing listening on that port
filtered
No reply, or an ICMP “prohibited/unreachable”
A firewall or ACL is in the way; the service may or may not exist
unfiltered
Reachable, but open/closed unknown (ACK scan only)
Firewall-rule mapping; rare in support
open|filtered
No reply where open ports often stay silent (UDP)
Common in UDP scans; needs a protocol-specific check
closed|filtered
Could not tell which (idle scan only)
You will rarely meet it
← swipe the diagram →
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
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.”
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
|_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:
Category
Examples of what it does
In support work
safe
Read banners, titles, certificate details
Fine on in-scope hosts
default (-sC)
A curated set, mostly safe and quick
OK with care; some scripts connect to services
discovery
Ask services for extra information
Usually fine, check first
version
Helpers for -sV
Runs automatically with -sV
intrusive, vuln
May crash services or look like attacks
Only with security approval
brute, dos, exploit
Password guessing, stress, exploitation
Not 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 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.”
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.
← swipe the diagram →
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
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?”
Start a capture on the server (approved, filtered to the client’s IP and the port).
From the client, run nmap -Pn -p 8443 --reason 10.20.8.15 or Test-NetConnection 10.20.8.15 -Port 8443.
SYN never shows up on the server → it was dropped before the host: network firewall, ACL, routing, or the wrong IP.
SYN arrives, server sends RST → nothing listening: service down or wrong port. Nmap said closed.
SYN arrives, nothing goes back → the host firewall on the server is dropping it. Nmap said filtered.
SYN/ACK goes back but the client never sees it → return path problem: asymmetric routing or a stateful device on the way back.
← swipe the diagram →
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.”
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
Reproduce while capturing on the user’s laptop, filtered to DNS plus the app’s IP.
Check the DNS answer: right IP? Compare with a colleague’s laptop (VPN and office can get different answers).
Check the TCP handshake to that IP on 443: completed, reset, or unanswered?
If TCP completes, look at the TLS handshake: alert? which number?
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 find
It points to
NXDOMAIN or wrong IP
DNS: stale record, hosts-file entry, wrong DNS server from VPN
SYN, no reply
Path/firewall issue for this client’s subnet or VPN pool
TLS alert 48 / 42
Certificate trust on this device (proxy root CA missing, clock wrong)
HTTP 401/403/500
Application 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
Time the problem: copy a known large file and note start/end time.
Capture on the client during the copy, filter tcp.port == 445.
Run Analyze → Expert Information and the display filter tcp.analysis.flags.
Open Statistics → I/O Graphs; add a line for tcp.analysis.retransmission.
Compare: handshake round-trip vs. SMB response times (smb2.time).
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 find
It points to
Many retransmissions / dup ACKs
Loss: Wi-Fi quality, bad cable or port, duplex mismatch, congested uplink
Zero windows from the client
The PC cannot keep up (antivirus scanning each file, disk)
Zero windows from the server
Server storage or CPU struggling
Clean TCP, slow smb2.time
Server-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
Read the printer’s IP from its front panel or configuration page.
From a PC: ping it, then check arp -a for that IP. Does the MAC match the label on the printer?
Port-check the print ports it should expose.
Capture while sending a test print, filter on the printer’s IP: see ARP, the TCP handshake to 9100 or 631, any resets.
Check the queue’s port configuration on the print server (IP or hostname, protocol).
Printer on a different VLAN/IP than the queue expects (DHCP gave it a new address)
9100 closed, 631 open
Queue uses raw printing but only IPP is enabled (or the reverse)
All ports filtered
Firewall 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
On an affected laptop, capture with udp port 67 or udp port 68, then release and renew.
Look for Discover leaving the laptop; any Offer coming back?
If Offers come back, check that the client Requests and gets an Ack (or a NAK).
If no Offer, check from the network side: switch-port VLAN, DHCP relay on the room’s VLAN, scope usage on the server.
Check for unexpected Offers from a second server (rogue DHCP).
VLAN/relay misconfiguration or DHCP server/scope down
Offers from an unknown IP
Rogue DHCP server (home router plugged in)
NAK after Request
Client asking for an address from another network or scope mismatch
Offer, Request, then silence
Server-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
From the app server, test the port with --reason.
Ask the server owner to confirm the service is running and listening on 8443 (not just 127.0.0.1).
If filtered: capture on the reporting server (approved) while repeating the test.
Decide using the two-ended test: SYN missing, SYN unanswered, or RST.
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 find
It points to
Nmap: closed (reset)
Service stopped, crashed or moved to another port
Nmap: filtered; SYN never reaches server
Network firewall rule changed during maintenance
Nmap: filtered; SYN reaches server, no reply
Windows Firewall / host firewall rule on the server
Listening only on 127.0.0.1
Service 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
Confirm it is real: rescan just that port from the same place, with -sV.
Compare with the saved baseline scan.
Ask the owner to identify the listening process on the server.
Check the change log for a matching approved change.
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 find
It points to
Port 5985 = WinRM (HTTP), matches an approved change
Document and update the baseline
Unknown process or no change record
Treat as a potential security incident: escalate, preserve evidence
Port only open from one subnet
Firewall 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
Check the laptop’s date, time and time zone first.
Capture one failing visit with tls.handshake || tls.alert_message.
Which side sends the alert, and which number?
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 find
It points to
Laptop clock months off
Certificates appear not yet valid / expired: fix time sync
Issuer is the proxy’s CA, client sends alert 48
Proxy root certificate missing on this device
Server sends alert 70
Client 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
Capture on a branch PC with udp port 53 or tcp port 53 while opening two sites.
Look for queries without responses and for responses with large dns.time.
Check which DNS servers DHCP hands out (ipconfig /all).
Every first query to server A times out, then server B answers
Primary DNS unreachable from branch: client waits before failover
Answers slow from both servers
Upstream forwarders or WAN latency
Fast DNS, slow TCP connect
Not 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.”
tshark -D · tshark -i N -f "…" -a duration:60 -w f.pcapng
pktmon on Windows without Wireshark
Nmap flags at a glance
Nmap flag
Meaning
Note
-sn
Host discovery only, no port scan
ARP on the local subnet when privileged
-Pn
Skip discovery, treat host as up
For hosts that block ping
-sS / -sT / -sU
SYN / connect / UDP scan
-sS and -sU need admin/root
-p 22,443 · -p- · -F
Port list · all ports · top 100
Default: top 1,000
-sV
Service and version detection
Makes real connections
-O
OS guess
Admin needed; a guess, not a fact
-A
-O -sV -sC --traceroute
Heavy; lab use, not casual production use
-sC / --script
Default scripts / named scripts or categories
Stick to safe category
-T0…-T5
Timing template (T3 default)
T4 on healthy LAN; avoid T5
--reason · --open · -n
Show why · only open · no DNS
Good defaults for tickets
-oN / -oX / -oG / -oA
Normal / XML / grepable / all three
XML 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?
Closed means a TCP RST came back, so the host is up and reachable, but no application accepts that port. Silence would have produced “filtered”.
2You run a port test and see SYN, then retransmitted SYNs, and nothing comes back. What is the most likely explanation?
Unanswered SYNs point to filtering, routing or a host that is down. A crash mid-session shows as a reset; a full buffer shows as zero window.
3What is the key difference between a capture filter and a display filter?
Capture filters (BPF syntax) are applied before writing to disk, so rejected packets are gone. Display filters can be changed or cleared at any time.
4Which display filter shows every TCP problem that Wireshark’s analysis detected?
tcp.analysis.flags matches packets Wireshark marked with any analysis note: retransmissions, duplicate ACKs, zero windows, out-of-order segments and so on.
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?
Discovers leaving with no reply means the broadcast never reaches a working server: wrong VLAN, missing relay (IP helper), or the server/scope is down or full.
6During a slow file copy the capture shows repeated “TCP ZeroWindow” packets sent by the client PC. What does that suggest?
A zero window is the receiver saying its buffer is full. The network delivered the data fine; the receiving host is the bottleneck.
7Why is “nmap -A” a poor default choice for a quick support check on a production server?
-A bundles several intrusive-feeling features. Targeted flags like -sV -p 443 --reason answer the ticket with far less traffic and less risk.
8Which Nmap output option produces files that ndiff can compare to show what changed between two scans?
ndiff compares Nmap XML results. -oA writes normal, XML and grepable output together, which makes it a good habit for ticket evidence.
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?
The handshake reached the certificate stage, so the network path works. The client rejected the issuer, which is a trust-store or certificate-chain problem.
10In an ARP capture, two different MAC addresses reply for the same IP address. What is the likely problem?
Two devices claiming one IP is a duplicate address conflict, often a static IP inside a DHCP range. Wireshark flags it in Expert Info.
11Before scanning a colleague’s department subnet to troubleshoot a printer, what should you have?
Scans look like reconnaissance and can disrupt fragile devices. Scope should be authorized in writing and security should know, even inside your own company.
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?
If the SYN arrived, the network delivered it. Silence from the host that received it means the host’s own firewall dropped it. A missing SYN would point to the network.
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.”