# Cheatsheet & Examples: netstat

netstat is a command-line tool used to display network connections, routing tables, interface statistics, and more. It helps monitor and troubleshoot network-related issues on a system.

## Display all active network connections and their states  
Example Usage:  
`netstat -a`  

What it does:  
Shows all active network connections, including those in listening, established, and other states, along with their local and remote addresses.  

Command-line Arguments Explained:  
- `-a`: Displays all connections (both listening and non-listening).  
- `--all`: Same as `-a`, but less commonly used.  

## Show listening ports and their associated process IDs  
Example Usage:  
`sudo netstat -tulnp`  

What it does:  
Lists TCP and UDP ports that are in a listening state, along with the process ID (PID) and program name using each port.  

Command-line Arguments Explained:  
- `-t`: Show TCP connections.  
- `-u`: Show UDP connections.  
- `-l`: Display only listening ports.  
- `-n`: Show numerical addresses and port numbers instead of resolving them.  
- `-p`: Display the process ID (PID) and name associated with each connection.  

## Display network connections in numerical format  
Example Usage:  
`netstat -n`  

What it does:  
Shows connection addresses and port numbers in numerical form instead of resolving them to hostnames or service names.  

Command-line Arguments Explained:  
- `-n`: Prevents DNS lookups and displays addresses and ports as numbers.  
- `--numeric`: Equivalent to `-n`.  

## Display protocol statistics  
Example Usage:  
`netstat -s`  

What it does:  
Provides detailed statistics for each network protocol (e.g., TCP, UDP, IP, ICMP) in use.  

Command-line Arguments Explained:  
- `-s`: Displays protocol statistics (e.g., packets sent/received, errors).  

## Display the routing table  
Example Usage:  
`netstat -r`  

What it does:  
Shows the kernel's routing table, including the destination, gateway, netmask, and other routing information.  

Command-line Arguments Explained:  
- `-r`: Displays the routing table.  
- `--route`: Same as `-r`.  

## Show interface statistics  
Example Usage:  
`netstat -i`  

What it does:  
Lists statistics for each network interface (e.g., packets transmitted/received, errors, collisions).  

Command-line Arguments Explained:  
- `-i`: Displays interface statistics.  
- `--interfaces`: Same as `-i`.  

## Display detailed connection information  
Example Usage:  
`netstat -e`  

What it does:  
Shows extended information such as the user ID, PID, and other details for each connection.  

Command-line Arguments Explained:  
- `-e`: Displays extended information.  
- `--extend`: Same as `-e`.  

## Show TCP connections only  
Example Usage:  
`netstat -t`  

What it does:  
Lists only TCP (Transmission Control Protocol) connections, including their states.  

Command-line Arguments Explained:  
- `-t`: Filters to show only TCP connections.  

## Show UDP connections only  
Example Usage:  
`netstat -u`  

What it does:  
Lists only UDP (User Datagram Protocol) connections, which are connectionless and often used for streaming or broadcasting.  

Command-line Arguments Explained:  
- `-u`: Filters to show only UDP connections.  

## Show connections with timestamps  
Example Usage:  
`netstat -atv`  

What it does:  
Displays active TCP connections along with timestamps for each connection, useful for analyzing idle or established connections.  

Command-line Arguments Explained:  
- `-t`: TCP connections.  
- `-a`: All connections.  
- `-v`: Verbose output, including additional details.  

## Count established connections  
Example Usage:  
`netstat -ant | grep ESTABLISHED | wc -l`  

What it does:  
Counts the number of established TCP connections by filtering the output of `netstat -ant` (all TCP connections) for the "ESTABLISHED" state and piping to `wc -l`.  

Command-line Arguments Explained:  
- `-t`: TCP connections.  
- `-a`: All connections.  
- `-n`: Numerical addressing.  

## Display all connections in a human-readable format  
Example Usage:  
`netstat -atop`  

What it does:  
Lists active TCP connections with process and port information, making it easier to interpret without numeric conversion.  

Command-line Arguments Explained:  
- `-t`: TCP connections.  
- `-a`: All connections.  
- `-o`: Shows timers for each connection.  
- `-p`: Displays process information.  

## Show connections to a specific port (e.g., port 80)  
Example Usage:  
`netstat -an | grep :80`  

What it does:  
Filters and displays connections involving port 80 (HTTP) in numerical format.  

Command-line Arguments Explained:  
- `-a`: All connections.  
- `-n`: Numerical addressing.  
- `grep`: A separate utility used to filter output by the port number.  

## Monitor network activity in real time  
Example Usage:  
`netstat -antp --interval=1`  

What it does:  
Updates network connection information every second, useful for real-time monitoring of active connections.  

Command-line Arguments Explained:  
- `-t`: TCP connections.  
- `-a`: All connections.  
- `-n`: Numerical addressing.  
- `-p`: Process information.  
- `--interval=1`: Refreshes the output every 1 second.  

## Display connections with symbolic names  
Example Usage:  
`netstat -a -p`  

What it does:  
Shows connections with hostnames and service names resolved (if possible), which is the opposite of `-n` (numeric form).  

Command-line Arguments Explained:  
- `-a`: All connections.  
- `-p`: Show process information.  
- `--symbolic`: Resolves hostnames and service names instead of using numeric values.
