Jump to content

Netstat: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Importing Wikidata short description: "Command line tool" (Shortdesc helper)
Neither the 4.2BSD man page nor the 4.2BSD source indicate in any fashion that it stands for "network statistics". Remove the claim that it does, as per a talk page comment.
 
(31 intermediate revisions by 14 users not shown)
Line 1: Line 1:
{{Short description|Command line tool}}
{{Short description|Command line network statistics tool}}
{{more citations needed|date=August 2012}}
{{more citations needed|date=August 2012}}
{{lowercase}}
{{lowercase title}}
{{Infobox software
{{Infobox software
| name = netstat
| name = netstat
Line 13: Line 13:
| latest release version =
| latest release version =
| latest release date =
| latest release date =
| programming language = Plan 9: [[C (programming language)|C]]
| operating system = [[Unix]], [[Unix-like]], [[Plan 9 from Bell Labs|Plan 9]], [[Inferno (operating system)|Inferno]], [[OS/2]], [[Microsoft Windows]], [[ReactOS]]
| operating system = [[Unix]], [[Unix-like]], [[Plan 9 from Bell Labs|Plan 9]], [[Inferno (operating system)|Inferno]], [[OS/2]], [[Microsoft Windows]], [[ReactOS]]
| platform = [[Cross-platform]]
| platform = [[Cross-platform]]
| genre = [[Command (computing)|Command]]
| genre = [[Command (computing)|Command]]
| license = OS/2, Windows: [[Proprietary software|Proprietary]] [[commercial software]]<br />net-tools, ReactOS: [[GPLv2]]
| license = OS/2, Windows: [[Proprietary software|Proprietary]] [[commercial software]]<br />net-tools, ReactOS: [[GPLv2]]<br />Plan 9: [[MIT License]]
| website =
| website =
}}
}}
In [[computing]], '''<code>netstat</code>''' ('''''net'''work '''stat'''istics'') is a [[Command-line interface|command-line]] [[network utility]] that displays network connections for [[Transmission Control Protocol]] (both incoming and outgoing), [[routing table]]s, and a number of network interface ([[network interface controller]] or [[Virtual Interface|software-defined network interface]]) and network protocol statistics. It is available on [[Unix]], [[Plan 9 from Bell Labs|Plan 9]], [[Inferno (operating system)|Inferno]], and [[Unix-like]] [[operating systems]] including [[macOS]], [[Linux]], [[Solaris (operating system)|Solaris]] and [[BSD]]. It is also 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]].
In [[computing]], '''<code>netstat</code>''' is a [[Command-line interface|command-line]] [[network utility]] that displays open network sockets, [[routing table]]s, and a number of network interface ([[network interface controller]] or [[Virtual Interface|software-defined network interface]]) and network protocol statistics. It is available on [[Unix]], [[Plan 9 from Bell Labs|Plan 9]], [[Inferno (operating system)|Inferno]], and [[Unix-like]] [[operating systems]] including [[macOS]], [[Linux]], [[Solaris (operating system)|Solaris]] and [[BSD]]. It is also 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.<ref>{{cite web|url=http://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/com.ibm.aix.prftungd/doc/prftungd/netstat.htm|title=IBM Systems Information Center|work=ibm.com}}</ref> On Linux this program is mostly obsolete, although still included in many distributions.
It is used for finding problems in the network and to determine the amount of traffic on the network as a performance measurement.<ref>{{cite web|url=http://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/com.ibm.aix.prftungd/doc/prftungd/netstat.htm|title=IBM Systems Information Center|work=ibm.com|date=8 May 2007}}</ref> On Linux this program is mostly obsolete, although still included in many distributions.


On Linux, <code>netstat</code> (part of "net-tools") is superseded by <code>ss</code> (part of [[iproute2]]). The replacement for <code>netstat -r</code> is <code>ip route</code>, the replacement for <code>netstat -i</code> is <code>ip -s link</code>, and the replacement for <code>netstat -g</code> is <code>ip maddr</code>, all of which are recommended instead.<ref>{{cite web|url=http://www.linuxfoundation.org/collaborate/workgroups/networking/net-tools|title=net-tools|work=linuxfoundation.org}}</ref><ref>{{cite web|url=https://www.archlinux.org/news/deprecation-of-net-tools/|title=Arch Linux|date=8 June 2011|work=archlinux.org}}</ref><ref>{{cite web|url=http://dougvitale.wordpress.com/2011/12/21/deprecated-linux-networking-commands-and-their-replacements/|title=Deprecated Linux networking commands and their replacements|work=Doug Vitale Tech Blog}}</ref><ref>{{cite web|title=netstat man page (notes section)|url=http://net-tools.sourceforge.net/man/netstat.8.html|access-date=2 August 2014|quote=This program is obsolete. Replacement for netstat is ss. Replacement for netstat -r is ip route. Replacement for netstat -i is ip -s link. Replacement for netstat -g is ip maddr.}}</ref>
On Linux, <code>netstat</code> (part of "net-tools") is superseded by <code>ss</code> (part of [[iproute2]]). The replacement for <code>netstat -r</code> is <code>ip route</code>, the replacement for <code>netstat -i</code> is <code>ip -s link</code>, and the replacement for <code>netstat -g</code> is <code>ip maddr</code>, all of which are recommended instead.<ref>{{cite web|url=http://www.linuxfoundation.org/collaborate/workgroups/networking/net-tools|title=net-tools|work=linuxfoundation.org|access-date=2014-08-02|archive-date=2016-06-11|archive-url=https://web.archive.org/web/20160611020419/http://www.linuxfoundation.org/collaborate/workgroups/networking/net-tools|url-status=dead}}</ref><ref>{{cite web|url=https://www.archlinux.org/news/deprecation-of-net-tools/|title=Arch Linux|date=8 June 2011|work=archlinux.org}}</ref><ref>{{cite web|url=http://dougvitale.wordpress.com/2011/12/21/deprecated-linux-networking-commands-and-their-replacements/|title=Deprecated Linux networking commands and their replacements|work=Doug Vitale Tech Blog|date=21 December 2011}}</ref><ref>{{cite web|title=netstat man page (notes section)|url=http://net-tools.sourceforge.net/man/netstat.8.html|access-date=2 August 2014|quote=This program is obsolete. Replacement for netstat is ss. Replacement for netstat -r is ip route. Replacement for netstat -i is ip -s link. Replacement for netstat -g is ip maddr.}}</ref>


==Statistics provided==
==Statistics provided==

[[File:ReactOS-0.4.13 netstat command 667x626.png|thumb|The [[ReactOS]] <code>netstat</code> command]]
'''Netstat''' provides statistics for the following:
'''Netstat''' provides statistics for the following:


* Proto – The name of the protocol ([[Transmission Control Protocol|TCP]] or [[User Datagram Protocol|UDP]]).
* Proto – The name of the protocol ([[Transmission Control Protocol|TCP]], [[User Datagram Protocol|UDP]], etc.). On some systems, the protocol name may be followed by "4" or "6", depending on whether the protocol is running over [[IPv4]] or [[IPv6]].
* Local Address – The [[Internet Protocol|IP]] address of the local computer and the port number being used. The name of the local computer that corresponds to the [[Internet Protocol|IP]] address and the name of the port is shown unless the '''-n''' parameter is specified. An asterisk (*) is shown for the host if the server is listening on all interfaces. If the port is not yet established, the port number is shown as an asterisk.
* Local Address – The [[Internet Protocol|IP]] address of the local computer and the port number being used. The name of the local computer that corresponds to the IP address and the name of the port is shown unless the {{code|-n}} parameter is specified. An asterisk (*) is shown for the host if the server is listening on all interfaces. If the port is not yet established, the port number is shown as an asterisk.
* Foreign Address – The [[Internet Protocol|IP]] address and port number of the remote computer to which the socket is connected. The names that corresponds to the [[Internet Protocol|IP]] address and the port are shown unless the '''-n''' parameter is specified. If the port is not yet established, the port number is shown as an asterisk (*).
* Foreign Address – The IP address and port number of the remote computer to which the socket is connected. The names that corresponds to the IP address and the port are shown unless the {{code|-n}} parameter is specified. If the port is not yet established, the port number is shown as an asterisk (*).
* State – Indicates the state of a [[Transmission Control Protocol|TCP]] connection. The possible states are as follows: CLOSE_WAIT, CLOSED, ESTABLISHED, FIN_WAIT_1, FIN_WAIT_2, LAST_ACK, LISTEN, SYN_RECEIVED, SYN_SEND, and TIME_WAIT. For more information about the states of a TCP connection, see {{IETF RFC|793}}.
* State – Indicates the state of a TCP connection. The possible states are as follows: {{mono|CLOSE_WAIT, CLOSED, ESTABLISHED, FIN_WAIT_1, FIN_WAIT_2, LAST_ACK, LISTEN, SYN_RECEIVED, SYN_SEND}}, and {{mono|TIME_WAIT}}. For more information about the states of a TCP connection, see {{IETF RFC|793}}.


==Parameters==
==Parameters==
Parameters used with this command must be prefixed with a hyphen (-) rather than a slash ('''/'''). Some parameters are not supported on all platforms.
Parameters used with this command must be prefixed with a hyphen ({{mono|-}}) rather than a slash ({{mono|/}}). Some parameters are not supported on all platforms.
{| class="wikitable" border="6"
{| class="wikitable sortable" border="6"
! Name
! Name
! Description
! Description
Line 49: Line 50:
! [[OS/2]]
! [[OS/2]]
|-
|-
! scope="row" | {{mono|-a}}
| '''-a'''
| Displays '''a'''ll active connections and the TCP and UDP [[port (computer networking)|port]]s on which the computer is listening.
| Displays '''a'''ll active connections and the TCP and UDP [[port (computer networking)|port]]s on which the computer is listening.
| {{Yes}}
| {{Yes}}
| {{Yes}}
|
|
| {{Yes}}
|
| {{Yes}}
|
| {{Yes}}
|
| {{Yes}}
| {{Yes}}
| {{Yes}}
|
|
|
|
|-
|-
! scope="row" | {{mono|-b}}
| '''-b'''
| Displays the '''b'''inary (executable) program's name involved in creating each connection or listening port. ([[Windows XP]], [[Windows Server 2003]] and newer Windows operating systems; not Microsoft [[Windows 2000]] or older).
| Displays the '''b'''inary (executable) program's name involved in creating each connection or listening port. ([[Windows XP]], [[Windows Server 2003]] and newer Windows operating systems; not Microsoft [[Windows 2000]] or older).
| {{Yes}}
| {{Yes}}
Line 73: Line 74:
| {{No}}
| {{No}}
|-
|-
! scope="row" | {{mono|-b}}
| '''-b'''
| Causes '''-i''' to report the total number of '''b'''ytes of traffic.
| Causes {{mono|-i}} to report the total number of '''b'''ytes of traffic.
|
|
| {{No}}
| {{No}}
Line 85: Line 86:
| {{No}}
| {{No}}
|-
|-
! scope="row" | {{mono|-e}}
| '''-e'''
| Displays [[ethernet|'''e'''thernet]] statistics, such as the number of [[byte]]s and packets sent and received. This parameter can be combined with '''-s'''.
| Displays [[ethernet|'''e'''thernet]] statistics, such as the number of [[byte]]s and packets sent and received. This parameter can be combined with {{mono|-s}}.
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
Line 97: Line 98:
| {{No}}
| {{No}}
|-
|-
! scope="row" | {{mono|-f}}
| '''-f'''
| Displays '''f'''ully qualified domain names <[[FQDN]]> for foreign addresses (only available on [[Windows Vista]] and newer operating systems).
| Displays '''f'''ully qualified domain names <[[FQDN]]> for foreign addresses (only available on [[Windows Vista]] and newer operating systems).
| {{Yes}}
| {{Yes}}
Line 109: Line 110:
| {{No}}
| {{No}}
|-
|-
| '''-f''' ''Address Family''
! scope="row" | {{mono|-f}} ''Address Family''
| Limits display to a particular socket address family, '''unix''', '''inet''', '''inet6'''
| Limits display to a particular socket address family, '''unix''', '''inet''', '''inet6'''
|
|
Line 121: Line 122:
| {{No}}
| {{No}}
|-
|-
! scope="row" | {{mono|-g}}
| '''-g'''
| Displays multicast '''g'''roup membership information for both IPv4 and IPv6 (may only be available on newer operating systems)
| Displays multicast '''g'''roup membership information for both IPv4 and IPv6 (may only be available on newer operating systems)
| {{No}}
| {{No}}
Line 133: Line 134:
|
|
|-
|-
! scope="row" | {{mono|-i}}
| '''-i'''
| Displays network '''i'''nterfaces and their statistics
| Displays network '''i'''nterfaces and their statistics
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{Yes}}
|
| {{Yes}}
|
| {{Yes}}
|
| {{Yes}}
|
| {{Yes}}
| {{Yes}}
|
|
|
|
|-
|-
! scope="row" | {{mono|-m}}
| '''-m'''
| Displays the '''m'''emory statistics for the networking code (STREAMS statistics on Solaris).
| Displays the '''m'''emory statistics for the networking code (STREAMS statistics on Solaris).
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
|
|
| {{Yes}}
|
|
|
|
|
|
|
|-
|-
! scope="row" | {{mono|-n}}
| '''-n'''
| Displays active TCP connections, however, addresses and port numbers are expressed numerically and no attempt is made to determine names.
| Displays active TCP connections, however, addresses and port numbers are expressed numerically and no attempt is made to determine names.
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
|
|
|
|
| {{Yes}}
| {{Yes}}
| {{Yes}}
|
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
|
|
|-
|-
! scope="row" | {{mono|-o}}
| '''-o'''
| Displays active TCP connections and includes the process id (PID) 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.<ref>http://support.microsoft.com/kb/907980</ref>
| Displays active TCP connections and includes the process id (PID) 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 {{mono|-a, -n,}} and {{mono|-p}}. This parameter is available on Microsoft [[Windows XP]], [[Windows Server 2003]], and [[Windows 2000]] if a hotfix is applied.<ref>{{cite web|url=http://support.microsoft.com/kb/907980|title=The netstat command can now display process IDs that correspond to active TCP or UDP connections in Windows 2000|archive-url=https://web.archive.org/web/20070824185558/http://support.microsoft.com/kb/907980|archivedate=24 August 2007}}</ref>
| {{Yes}}
| {{Yes}}
| {{No}}
| {{No}}
Line 181: Line 182:
| {{No}}
| {{No}}
|-
|-
| '''-p''' ''protocol''
! scope="row" | {{mono|-p}} ''protocol''
| Shows connections for the '''p'''rotocol 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'''.
| Shows connections for the '''p'''rotocol specified by ''protocol''. In this case, ''protocol'' can be '''tcp, udp, tcpv6, or udpv6'''. If this parameter is used with {{mono|-s}} to display statistics by protocol, ''protocol'' can be '''tcp, udp, icmp, ip, tcpv6, udpv6, icmpv6,''' or '''ipv6'''.
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
|
| {{Yes}}
| {{Yes}}
|
|
|
|
|
|
|
|
|-
|-
! scope="row" | {{mono|-p}}
| '''-p'''
| Show which '''p'''rocesses are using which sockets (similar to -b under Windows) (you must be root to do this)
| Show which '''p'''rocesses are using which sockets (similar to -b under Windows) (you must be root to do this)
| {{No}}
| {{No}}
Line 205: Line 206:
|
|
|-
|-
| '''-P''' ''protocol''
! scope="row" | {{mono|-P}} ''protocol''
| Shows connections for the '''p'''rotocol specified by ''protocol''. In this case, ''protocol'' can be '''ip, ipv6, icmp, icmpv6, igmp, udp, tcp,''' or ''' rawip'''.
| Shows connections for the '''p'''rotocol specified by ''protocol''. In this case, ''protocol'' can be '''ip, ipv6, icmp, icmpv6, igmp, udp, tcp,''' or ''' rawip'''.
| {{No}}
| {{No}}
Line 217: Line 218:
|
|
|-
|-
! scope="row" | {{mono|-r}}
| '''-r'''
| Displays the contents of the [[routing table|IP '''r'''outing table]]. (This is equivalent to the '''route print''' command under Windows.)
| Displays the contents of the [[routing table|IP '''r'''outing table]]. (This is equivalent to the '''route print''' command under Windows.)
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
|
|
|
|
| {{Yes}}
| {{Yes}}
| {{Yes}}
|
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
|-
|-
! scope="row" | {{mono|-s}}
| '''-s'''
| Displays '''s'''tatistics by protocol. By default, statistics are shown for the [[Transmission Control Protocol|TCP]], [[User Datagram Protocol|UDP]], [[Internet Control Message Protocol|ICMP]], and [[Internet Protocol|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.
| Displays '''s'''tatistics by protocol. By default, statistics are shown for the [[Transmission Control Protocol|TCP]], [[User Datagram Protocol|UDP]], [[Internet Control Message Protocol|ICMP]], and [[Internet Protocol|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 {{mono|-p}} parameter can be used to specify a set of protocols.
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
|
|
|
|
| {{Yes}}
| {{Yes}}
|
|
|
|-
|-
! scope="row" | {{mono|-t}}
| '''-t'''
| Display only TCP connections.
| Display only TCP connections.
|
|
Line 253: Line 254:
| {{Yes}}
| {{Yes}}
|-
|-
! scope="row" | {{mono|-u}}
|'''-u'''
| Display only UDP connections.
| Display only UDP connections.
| {{No}}
| {{No}}
Line 265: Line 266:
| {{Yes}}
| {{Yes}}
|-
|-
! scope="row" | {{mono|-W}}
| '''-W'''
| Display wide output - doesn't truncate hostnames or IPv6 addresses
| Display wide output - doesn't truncate hostnames or IPv6 addresses
| {{No}}
| {{No}}
Line 277: Line 278:
| {{No}}
| {{No}}
|-
|-
! scope="row" | {{mono|-x}}
| '''-x'''
| Displays NetworkDirect connections, listeners, and shared endpoints.
| Displays NetworkDirect connections, listeners, and shared endpoints.
| {{Yes}}
| {{Yes}}
Line 289: Line 290:
|
|
|-
|-
! scope="row" | {{mono|-y}}
| '''-y'''
| Displays the TCP connection template for all connections.Cannot be combined with the other options.
| Displays the TCP connection template for all connections.Cannot be combined with the other options.
| {{Yes}}
| {{Yes}}
Line 301: Line 302:
|
|
|-
|-
! scope="row" | {{mono|-v}}
| '''-v'''
| When used in conjunction with '''-b''' it will display the sequence of components involved in creating the connection or listening port for all executables.
| When used in conjunction with {{mono|-b}} it will display the sequence of components involved in creating the connection or listening port for all executables.
| {{Yes}}
| {{Yes}}
| {{No}}
| {{No}}
Line 313: Line 314:
| {{No}}
| {{No}}
|-
|-
| '''Interval'''
! scope="row" | {{mono|Interval}}
| Redisplays 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.
| Redisplays 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.
| {{Yes}}
| {{Yes}}
Line 325: Line 326:
| {{No}}
| {{No}}
|-
|-
! scope="row" | {{mono|-h}}
| '''-h'''
| Displays help at the command prompt.
| Displays help at the command prompt.
| {{Yes}}
| {{Yes}}
Line 337: Line 338:
| {{No}}
| {{No}}
|-
|-
! scope="row" | {{mono|-?}}
| '''-?'''
| Displays help at the command prompt.
| Displays help at the command prompt.
| {{Yes}}
| {{Yes}}
Line 349: Line 350:
| {{Yes}}
| {{Yes}}
|-
|-
! scope="row" | {{mono|/?}}
| '''/?'''
| Displays help at the command prompt.
| Displays help at the command prompt.
| {{Yes}}
| {{Yes}}
Line 398: Line 399:
! Command !! Explanation
! Command !! Explanation
|-
|-
| <code>netstat -a</code> || Shows all sockets , both listening and non-listening, all protocols like TCP, UDP etc.
| <code>netstat -a</code> || Shows all sockets, both listening and non-listening, all protocols like TCP, UDP etc.
|-
|-
| <code>netstat -at</code> || Shows only TCP connections (-au shows only UDP connections)
| <code>netstat -at</code> || Shows only TCP connections (-au shows only UDP connections)
Line 408: Line 409:
| <code>netstat -aep</code> || Also show PID and to which program each socket belongs, e adds extra info like the user. Run as root to see all PIDs.
| <code>netstat -aep</code> || Also show PID and to which program each socket belongs, e adds extra info like the user. Run as root to see all PIDs.
|-
|-
| <code>netstat -s > file2.txt</code> || Shows network statistics.
| <code>netstat -s</code> || Shows network statistics.
|-
|-
| <code>netstat -r</code> || Shows kernel routing information. This is the same output as route -e.
| <code>netstat -r</code> || Shows kernel routing information. This is the same output as route -e.
Line 428: Line 429:


===Wildcards===
===Wildcards===
Netstat uses a asterisk * as a wildcard which means "any". An example would be
Netstat uses an asterisk * as a wildcard which means "any". An example would be


Example output:
Example output:
<syntaxhighlight lang="output">

<syntaxhighlight lang="bash">
....Local Address Foreign Address State
....Local Address Foreign Address State
... *:smtp *:* LISTEN
... *:smtp *:* LISTEN
Line 444: Line 444:


==Platform specific remarks==
==Platform specific remarks==
[[File:ReactOS-0.4.13 netstat command 667x626.png|thumb|The [[ReactOS]] <code>netstat</code> command]]
[[File:Mac netstat.png|thumb|The [[macOS]] <code>netstat</code> command]]
[[File:Mac netstat.png|thumb|The [[macOS]] <code>netstat</code> command]]
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, <code>netstat -i</code>, until such time as the problem is corrected.{{Citation needed|date=September 2010}}
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, <code>netstat -i</code>, until such time as the problem is corrected.{{Citation needed|date=September 2010}}
Line 472: Line 473:
*{{man|8|netstat|Linux}}
*{{man|8|netstat|Linux}}
*{{man|1|netstat|FreeBSD}}
*{{man|1|netstat|FreeBSD}}
*{{man|1m|netstat|Solaris}}
*{{man|8|netstat|Solaris}}
*{{man|1|netstat|Inferno}}
*{{man|1|netstat|Inferno}}
*[https://technet.microsoft.com/en-us/library/bb490947.aspx Microsoft TechNet: Netstat] – documentation for the Windows netstat.exe command-line program
*[https://technet.microsoft.com/en-us/library/bb490947.aspx Microsoft TechNet: Netstat] – documentation for the Windows netstat.exe command-line program
*[http://sourceforge.net/projects/net-tools/ net-tools] project page on SourceForge
*[http://sourceforge.net/projects/net-tools/ net-tools] project page on SourceForge
*[https://windowscmd.com/netstat/ Netstat Command]: [https://windowscmd.com/ WindowsCMD.com] {{Webarchive|url=https://web.archive.org/web/20220111180551/https://windowscmd.com/ |date=2022-01-11 }}


{{Unix commands}}
{{Unix commands}}
{{Plan 9 commands}}
{{Windows commands}}
{{Windows commands}}



Latest revision as of 05:26, 15 October 2024

netstat
Developer(s)Various open-source and commercial developers
Initial release1983; 41 years ago (1983)
Written inPlan 9: C
Operating systemUnix, Unix-like, Plan 9, Inferno, OS/2, Microsoft Windows, ReactOS
PlatformCross-platform
TypeCommand
LicenseOS/2, Windows: Proprietary commercial software
net-tools, ReactOS: GPLv2
Plan 9: MIT License

In computing, netstat is a command-line network utility that displays open network sockets, routing tables, and a number of network interface (network interface controller or software-defined network interface) and network protocol statistics. It is available on Unix, Plan 9, Inferno, and Unix-like operating systems including macOS, Linux, Solaris and BSD. It is also 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.[1] On Linux this program is mostly obsolete, although still included in many distributions.

On Linux, netstat (part of "net-tools") is superseded by ss (part of iproute2). 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.[2][3][4][5]

Statistics provided

[edit]

Netstat provides statistics for the following:

  • Proto – The name of the protocol (TCP, UDP, etc.). On some systems, the protocol name may be followed by "4" or "6", depending on whether the protocol is running over IPv4 or IPv6.
  • Local Address – The IP address of the local computer and the port number being used. The name of the local computer that corresponds to the IP address and the name of the port is shown unless the -n parameter is specified. An asterisk (*) is shown for the host if the server is listening on all interfaces. If the port is not yet established, the port number is shown as an asterisk.
  • Foreign Address – The IP address and port number of the remote computer to which the socket is connected. The names that corresponds to the IP address and the port are shown unless the -n parameter is specified. If the port is not yet established, the port number is shown as an asterisk (*).
  • State – Indicates the state of a TCP connection. The possible states are as follows: CLOSE_WAIT, CLOSED, ESTABLISHED, FIN_WAIT_1, FIN_WAIT_2, LAST_ACK, LISTEN, SYN_RECEIVED, SYN_SEND, and TIME_WAIT. For more information about the states of a TCP connection, see RFC 793.

Parameters

[edit]

Parameters used with this command must be prefixed with a hyphen (-) rather than a slash (/). Some parameters are not supported on all platforms.

Name Description Windows ReactOS macOS BSD NetBSD FreeBSD Linux Solaris OS/2
-a Displays all active connections and the TCP and UDP ports on which the computer is listening. Yes Yes Yes Yes Yes Yes
-b Displays the binary (executable) program's name involved in creating each connection or listening port. (Windows XP, Windows Server 2003 and newer Windows operating systems; not Microsoft Windows 2000 or older). Yes No No
-b Causes -i to report the total number of bytes of traffic. No Yes Yes No
-e Displays ethernet statistics, such as the number of bytes and packets sent and received. This parameter can be combined with -s. Yes Yes No
-f Displays fully qualified domain names <FQDN> for foreign addresses (only available on Windows Vista and newer operating systems). Yes No No
-f Address Family Limits display to a particular socket address family, unix, inet, inet6 No Yes No
-g Displays multicast group membership information for both IPv4 and IPv6 (may only be available on newer operating systems) No No Yes
-i Displays network interfaces and their statistics No No Yes Yes Yes Yes Yes
-m Displays the memory statistics for the networking code (STREAMS statistics on Solaris). No No Yes Yes Yes Yes Yes
-n Displays active TCP connections, however, addresses and port numbers are expressed numerically and no attempt is made to determine names. Yes Yes Yes Yes Yes Yes Yes Yes
-o Displays active TCP connections and includes the process id (PID) 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.[6] Yes No No
-p protocol Shows 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. Yes Yes Yes Yes Yes Yes
-p Show which processes are using which sockets (similar to -b under Windows) (you must be root to do this) No No Yes
-P protocol Shows connections for the protocol specified by protocol. In this case, protocol can be ip, ipv6, icmp, icmpv6, igmp, udp, tcp, or rawip. No No Yes
-r Displays the contents of the IP routing table. (This is equivalent to the route print command under Windows.) Yes Yes Yes Yes Yes Yes Yes Yes Yes
-s Displays 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. Yes Yes Yes Yes Yes Yes Yes Yes
-t Display only TCP connections. No Yes Yes
-u Display only UDP connections. No No Yes Yes
-W Display wide output - doesn't truncate hostnames or IPv6 addresses No No Yes No
-x Displays NetworkDirect connections, listeners, and shared endpoints. Yes
-y Displays the TCP connection template for all connections.Cannot be combined with the other options. Yes
-v When used in conjunction with -b it will display the sequence of components involved in creating the connection or listening port for all executables. Yes No No
Interval Redisplays 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. Yes Yes No
-h Displays help at the command prompt. Yes No Yes Yes Yes Yes Yes Yes No
-? Displays help at the command prompt. Yes No No No No No No No Yes
/? Displays help at the command prompt. Yes Yes No No No No No No No

Examples

[edit]

Cross platform

[edit]

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

[edit]

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

[edit]

On Microsoft Windows:

To display active TCP connections and the process IDs every 5 seconds, type the following command (works on NT based systems only, or Windows 2000 with hotfix):

netstat -o 5

To display active TCP connections and the process IDs using numerical form, type the following command (works on NT based systems only, or Windows 2000 with hotfix):

netstat -no

*nix

[edit]
Command Explanation
netstat -a Shows all sockets, both listening and non-listening, all protocols like TCP, UDP etc.
netstat -at Shows only TCP connections (-au shows only UDP connections)
netstat -ant Shows all TCP connections with no DNS resolution (show IP addresses instead).
netstat -al Shows only listening sockets.
netstat -aep Also 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 Shows network statistics.
netstat -r Shows kernel routing information. This is the same output as route -e.
netstat -i Displays a table of all network interfaces. Add -e to get output similar to ifconfig.
netstat -ct Displays TCP connections continuously.
netstat -g Display multicast group membership information for IPv4 and IPv6.
netstat -lntu Display all services listening for TCP and UDP, all free open ports on the local machine.
netstat -atnp | grep ESTA Displays all currently "established" TCP connections.

Wildcards

[edit]

Netstat uses an 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 (see /etc/services for service resolution). 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

[edit]

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

[edit]
The ReactOS netstat command
The macOS netstat command

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.[citation needed]

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 (for GetTcpTable) 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 (TCP/IP) protocol is installed as a component in the properties of a network adapter in Network Connections.

On the Windows platform running Remote Desktop Services (formerly Terminal Services) it will only show connections for the current user, not for the whole computer.

On macOS, the /System/Library/CoreServices/Applications folder (or /Applications/Utilities in OS X Mountain Lion and earlier) contains a network GUI utility called Network Utility, the Netstat tab of which runs the netstat command and displays its output in the tab.

See also

[edit]

References

[edit]
  1. ^ "IBM Systems Information Center". ibm.com. 8 May 2007.
  2. ^ "net-tools". linuxfoundation.org. Archived from the original on 2016-06-11. Retrieved 2014-08-02.
  3. ^ "Arch Linux". archlinux.org. 8 June 2011.
  4. ^ "Deprecated Linux networking commands and their replacements". Doug Vitale Tech Blog. 21 December 2011.
  5. ^ "netstat man page (notes section)". Retrieved 2 August 2014. This program is obsolete. Replacement for netstat is ss. Replacement for netstat -r is ip route. Replacement for netstat -i is ip -s link. Replacement for netstat -g is ip maddr.
  6. ^ "The netstat command can now display process IDs that correspond to active TCP or UDP connections in Windows 2000". Archived from the original on 24 August 2007.

Further reading

[edit]
[edit]