Netstat


In computing, netstat is a command-line network utility that displays network connections for Transmission Control Protocol, routing tables, and a number of network interface and network protocol statistics. It is available on Unix-like operating systems including macOS, Linux, Solaris and BSD, and is available on IBM OS/2 and on Microsoft Windows NT-based operating systems including Windows XP, Windows Vista, Windows 7, Windows 8 and Windows 10.
It is used for finding problems in the network and to determine the amount of traffic on the network as a performance measurement. On Linux this program is mostly obsolete, although still included in many distributions.
On Linux, netstat is superseded by ss. The replacement for netstat -r is ip route, the replacement for netstat -i is ip -s link, and the replacement for netstat -g is ip maddr, all of which are recommended instead.

Statistics provided

Netstat provides statistics for the following:
Parameters used with this command must be prefixed with a hyphen rather than a slash. Some parameters are not supported on all platforms.
NameDescriptionWindowsReactOSmacOSBSDNetBSDFreeBSDLinuxSolarisOS/2
-aDisplays all active connections and the TCP and UDP ports on which the computer is listening.
-bDisplays the binary program's name involved in creating each connection or listening port..
-bCauses -i to report the total number of bytes of traffic.
-eDisplays ethernet statistics, such as the number of bytes and packets sent and received. This parameter can be combined with -s.
-fDisplays fully qualified domain names for foreign addresses.
-f Address FamilyLimits display to a particular socket address family, unix, inet, inet6
-gDisplays multicast group membership information for both IPv4 and IPv6
-iDisplays network interfaces and their statistics
-mDisplays the memory statistics for the networking code.
-nDisplays active TCP connections, however, addresses and port numbers are expressed numerically and no attempt is made to determine names.
-oDisplays active TCP connections and includes the process id for each connection. You can find the application based on the PID in the Processes tab in Windows Task Manager. This parameter can be combined with -a, -n, and -p. This parameter is available on Microsoft Windows XP, Windows Server 2003, and Windows 2000 if a hotfix is applied.
-p protocolShows connections for the protocol specified by protocol. In this case, protocol can be tcp, udp, tcpv6, or udpv6. If this parameter is used with -s to display statistics by protocol, protocol can be tcp, udp, icmp, ip, tcpv6, udpv6, icmpv6, or ipv6.
-pShow which processes are using which sockets
-P protocolShows connections for the protocol specified by protocol. In this case, protocol can be ip, ipv6, icmp, icmpv6, igmp, udp, tcp, or rawip.
-rDisplays the contents of the IP routing table.
-sDisplays statistics by protocol. By default, statistics are shown for the TCP, UDP, ICMP, and IP protocols. If the IPv6 protocol for Windows XP is installed, statistics are shown for the TCP over IPv6, UDP over IPv6, ICMPv6, and IPv6 protocols. The -p parameter can be used to specify a set of protocols.
-tDisplay only TCP connections.
-uDisplay only UDP connections.
-WDisplay wide output - doesn't truncate hostnames or IPv6 addresses
-xDisplays NetworkDirect connections, listeners, and shared endpoints.
-yDisplays the TCP connection template for all connections.Cannot be combined with the other options.
-vWhen used in conjunction with -b it will display the sequence of components involved in creating the connection or listening port for all executables.
IntervalRedisplays the selected information every Interval seconds. Press CTRL+C to stop the redisplay. If this parameter is omitted, netstat prints the selected information only once.
-hDisplays help at the command prompt.
-?Displays help at the command prompt.
/?Displays help at the command prompt.

Examples

Cross platform

On macOS, BSD systems, Linux distributions, and Microsoft Windows:
To display the statistics for only the TCP or UDP protocols, type one of the following commands:
netstat -sp tcp

netstat -sp udp

Unix-like

On Unix-like systems:
To display all ports open by a process with id pid:
netstat -aop | grep "pid"

To continuously display open TCP and UDP connections numerically and also which program is using them on Linux:
netstat -nutpacw

Windows

On Microsoft Windows:
To display active TCP connections and the process IDs every 5 seconds, type the following command :
netstat -o 5

To display active TCP connections and the process IDs using numerical form, type the following command :
netstat -no

*nix

CommandExplanation
netstat -aShows all sockets, both listening and non-listening, all protocols like TCP, UDP etc.
netstat -atShows only TCP connections
netstat -antShows all TCP connections with no DNS resolution.
netstat -alShows only listening sockets.
netstat -aepAlso show PID and to which program each socket belongs, e adds extra info like the user. Run as root to see all PIDs.
netstat -s > file2.txtShows network statistics.
netstat -rShows kernel routing information. This is the same output as route -e.
netstat -iDisplays a table of all network interfaces. Add -e to get output similar to ifconfig.
netstat -ctDisplays TCP connections continuously.
netstat -gDisplay multicast group membership information for IPv4 and IPv6.
netstat -lntuDisplay all services listening for TCP and UDP, all free open ports on the local machine.
netstat -atnp | grep ESTADisplays all currently "established" TCP connections.

Wildcards

Netstat uses a asterisk * as a wildcard which means "any". An example would be
Example output:

....Local Address Foreign Address State
... *:smtp *:* LISTEN

Under "Local Address" *, in *:smtp, means the process is listening on all of the network interfaces the machine has for the port mapped as smtp. This can also be shown as 0.0.0.0.
The first *, in *:*, means connections can come from any IP address, and the second *, in *:*, means the connection can originate from any port on the remote machine.

Caveats

Some versions of netstat lack explicit field delimiters in their printf-generated output, leading to numeric fields running together and thus corrupting the output data.

Platform specific remarks

Under Linux, raw data can often be obtained from the /proc/net/dev to work around the printf output corruption arising in netstat's network interface statistics summary, netstat -i, until such time as the problem is corrected.
On the Windows platform, netstat information can be retrieved by calling the GetTcpTable and GetUdpTable functions in the IP Helper API, or IPHLPAPI.DLL. Information returned includes local and remote IP addresses, local and remote ports, and TCP status codes. In addition to the command-line netstat.exe tool that ships with Windows, GUI-based netstat programs are available.
On the Windows platform, this command is available only if the Internet Protocol protocol is installed as a component in the properties of a network adapter in Network Connections.
On the Windows platform running Remote Desktop Services it will only show connections for the current user, not for the whole computer.
On macOS, the /System/Library/CoreServices/Applications folder contains a network GUI utility called Network Utility, the Netstat tab of which runs the netstat command and displays its output in the tab.