As a network administrator or power user, having deep knowledge of the netstat command is an invaluable skill for monitoring and diagnosing network issues on Windows. While simple on the surface, netstat packs a ton of useful functionality under the hood.
In this comprehensive, 4500+ word guide, I‘ll share my insights and experience using netstat on Windows to shed light on your network connections and traffic. Consider this your complete masterclass on harnessing the full power of this utility.
A Quick Intro to Netstat
For those new to netstat, it‘s a command-line network information tool included in Windows for viewing active connections, monitoring statistics, and troubleshooting network issues.
Netstat has been around for decades and remains widely used today. As networks and systems become more complex, netstat remains a go-to tool in every sysadmin‘s toolkit.
Here‘s a quick overview of what netstat can do:
- List open ports and connections on your PC
- Identify the application communicating over each connection
- Monitor network usage and statistics by protocol
- View routing tables and interface information
- Diagnose connectivity and latency issues
With the right filters and commands, you can zero in on the exact network information you need.
Now let‘s dive into some practical examples and pro tips for using netstat like a pro.
1. View All Active Connections
The most common way to use netstat is displaying all current TCP and UDP connections and listening ports. This provides a comprehensive snapshot of all network activity on your PC.
To see all connections, use the -a
flag:
netstat -a
Here‘s a sample of the output:
Proto Local Address Foreign Address State
TCP 192.168.1.101:5012 74.125.24.121:80 ESTABLISHED
TCP 192.168.1.101:5013 151.101.130.69:443 ESTABLISHED
TCP 127.0.0.1:28015 127.0.0.1:1494 ESTABLISHED
UDP 192.168.1.101:123 *:*
UDP 192.168.1.101:50001 *:*
This gives you a bird‘s eye view of all the network connections from your system. Let‘s break down what we‘re seeing:
- Protocol – Either TCP or UDP. Useful for determining if a UDP connection is causing issues.
- Local Address – Your computer‘s IP and port number. This is the local endpoint of the connection.
- Foreign Address – The remote or destination IP and port. This is the other end of the connection.
- State – The state of the TCP connection, e.g. ESTABLISHED, LISTENING, CLOSE_WAIT. More on this later.
With a single command, you can visualize all the inbound and outbound connections together in one place – invaluable when troubleshooting mysteries like high bandwidth usage.
Filtering for Specific States
Viewing all connections together provides a useful summary, but can be noisy. Netstat supports filtering to hone in on connections of interest.
For example, to only show ESTABLISHED
connections:
netstat -a | findstr ESTABLISHED
This filters out listening ports, closed connections, etc.Focusing only on active data flows.
Other useful filters include:
LISTENING
– Just listening ports waiting for incoming connections.CLOSE_WAIT
– Connections waiting to finish closing.TIME_WAIT
– Closed connections still completing final steps.
Filtering by state makes it easy to zoom in on exactly the connections you care about.
2. Identify the Process Owning Each Connection
When troubleshooting connectivity issues or suspicious network activity, it‘s useful to know exactly which process initiated a connection.
Netstat can link connections to the associated Process ID (PID) using the -o
parameter:
netstat -o
This adds a PID column to the output:
Proto Local Address Foreign Address State PID
TCP 127.0.0.1:30606 127.0.0.1:3101 ESTABLISHED 3044
TCP 127.0.0.1:3101 127.0.0.1:30606 ESTABLISHED 1768
With the PID, you can cross-reference against Task Manager or tasklist
to resolve the process name. This reveals precisely which app or service created each connection.
If you see unfamiliar connections, this technique can expose the culprit process. I‘ve found mystery bandwidth hogs this way from P2P apps or malware making unwanted connections.
3. Monitor Traffic Statistics by Protocol
So far we‘ve focused on active connections. Netstat also provides visibility into overall network usage statistics.
The -s
parameter displays comprehensive traffic counters for different network protocols:
netstat -s
Here‘s a snippet of the output:
IPv4 Statistics
Received: 2897 total
Errors: 0 discarded, 0 header errors
Sent: 3402 total
TCP Statistics for IPv4
Active Connections: 32
Segments Received: 9324 total
Segments Sent: 9538 total
Segments Retransmitted: 240 total
This breaks down total bytes sent/received, errors, discards, active connections, retransmits and more. All segmented by IP, TCP, UDP and other protocols.
Monitoring these high-level network metrics over time provides valuable insight into bandwidth usage trends and potential issues like high retransmissions.
For example, if you suddenly see a spike in UDP discards, that could indicate an issue with packet loss for VoIP/video chat applications.
Isolating Specific Stats
When examining statistics, it helps to isolate just the relevant numbers.
For example, to see only error counters, pipe to findstr
:
netstat -s | findstr Error
This filters out the noise, displaying only error-related statistics across all protocols.
Get notified quickly if errors start creeping up.
4. Understanding Your Network Routes
Netstat also provides visibility into the current routing table used to determine where packets get forwarded.
Think of this as the roadmap for how your PC navigates network traffic to its destination.
View the routing table with -r
:
netstat -r
Here‘s some example output:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.101 25
127.0.0.0 255.0.0.0 On-link 127.0.0.1 331
127.0.0.1 255.255.255.255 On-link 127.0.0.1 331
This shows overall routes, gateways, metrics and the interface traffic will use when communicating with a given network range.
Examining the routing table helps identify:
- Missing routes to unreachable networks.
- Incorrect gateways sending traffic out the wrong interface.
- Metrics and preference assigned to each route.
Problems here can lead to general connectivity issues or inefficient routing.
5. Viewing Traffic by Interface
Netstat also reports byte/packet counters for each interface using the -e
flag:
netstat -e
Here‘s some sample output:
Interface Statistics
Received Sent
Ethernet0 12327812 82817355
Loopback 6 6
Tunnel0 0 0
Monitoring per-interface metrics highlights abnormally high traffic on a particular interface that might indicate an issue.
For example, if you suddenly see spikes on your Ethernet interface, but low usage on Wi-Fi, that points to a potential wired device behaving badly.
6. Decoding Cryptic IP Addresses
By default netstat prints cryptic IP addresses for each connection. This can make it hard to interpret at a glance.
The -f
parameter resolves IPs to hostnames when possible for readability:
netstat -f
For example:
Proto Local Address Foreign Address State
TCP host1.local:80 windows-pc.local:49812 ESTABLISHED
This more clearly highlights the two endpoints of the connection.
Some additional name resolution occurs on the back-end that further improves readability:
- Private IP ranges resolve to hostnames (e.g. 192.168.x.x)
- Internal and external hostnames display (e.g. server01.local)
- Well-known ports resolve to service names (e.g. :http, :netbios-ssn)
Little touches like this really aid in parsing netstat output at a glance.
7. Netstat Pro Tips and Tricks
With the basics covered, here are some additional professional tips for mastering netstat:
Combine Filters for Laser Focus
You can combine filtering parameters like state, PID, and text pattern matching to zero in on very specific connections.
For example, to show only ESTABLISHED connections for a particular process:
netstat -o | findstr chrome.exe | findstr ESTABLISHED
This filters out everything except Chrome‘s active connections.
Get creative with stacking filters to answer very targeted questions about your connections.
Output to a File
To capture a snapshot of connections over time, save netstat output to a file:
netstat -o > netstat.txt
You can also automate this with scheduled tasks to build historical network activity reports.
Lookup Connections by Process
To see connections for a particular process, query by its PID:
netstat -o | findstr <PID>
This reveals all connections, listening ports, etc. for that specific process. Useful for drilling into bandwidth usage.
Spot High Port Usage
Check for processes making connections from lots of different high ports:
netstat -o | findstr :64000
This could indicate malware or p2p software operating on high ports to fly under the radar.
Analyze Traffic in Wireshark
Export netstat output to CSV and open in Wireshark for deeper protocol analysis:
netstat -n -a -o > file.csv
Wireshark provides additional insight like observing traffic patterns, content details and decrypting TLS.
Log Changes Over Time
Use PowerShell to log netstat snapshots every 60 seconds:
While ($True) {
netstat -n -a -o >> netstat_log.txt
Start-Sleep 60
}
Analyze patterns to catch brief spikes in connections from hit-and-run malware.
Real-World Examples
To better illustrate practical usage, here are some real-world examples of leveraging netstat to troubleshoot network issues:
Suspicious Outbound Connections
netstat -n -a -o | findstr :80
Noticed unknown ephemeral connections from high port numbers to remote HTTP servers. Used PID lookup and tasklist to reveal malware calling home.
Remote Desktop Disconnections
netstat -s | findstr Segments
Saw TCP retransmits and lost connections spike when users reported RDP issues. Helped identify wider network packet loss.
Web Server Connection Flood
netstat -n -a | findstr :443 | findstr SYN_RECV
Saw tons of incoming connections in SYN_RECV state overwhelming web server. Confirmed DDoS attack.
Unidentified Network Traffic
netstat -e -f
Noticed tons of bandwidth consumed on virtual interface by unfamiliar hostnames. Found P2P app transcoding large videos to remote hosts.
Conclusion: Netstat as an Invaluable Diagnostic Tool
Like any powerful tool, netstat capabilities require some knowledge and practice to wield effectively. But ultimately it enables invaluable visibility into your network activity with minimal overhead.
I hope this guide provided you a comprehensive overview and real-world examples to add netstat to your troubleshooting arsenal. Mastering netstat unlocks new diagnostic superpowers on Windows.
Here are some key takeaways:
- View connections by state to isolate issues.
- Identify mystery processes with PID lookup.
- Monitor overall traffic stats for trends.
- Examine routing tables and interface metrics.
- Combine filters for pinpoint focus.
- Automate and collect netstat data over time.
The next time you need to dive deep into networking activity on Windows, keep netstat top of mind. Properly utilized, it can provide an x-ray view into the inner workings of your connections.