Syntax and switches
The command syntax is
netstat [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-t] [-v] [interval] A brief description of the switches is given in Table I below. Some switches are only in certain Windows versions, as noted in the table..Note that
switches for Netstat use the dash symbol "-" rather than the slash "/".
Applications of Netstat
Netstat is one of a number of command-line tools available to check the functioning of a network. (See this page for discussion of other tools.) It provides a way to check if various aspects of TCP/IP are working and what connections are present. In Windows XP SP2, a new switch "-B" was added that allows the actual executable file that has opened a connection to be displayed. This newer capability provides a chance to catch malware that may be phoning home or using your computer in unwanted ways on the Internet. There are various ways that a system administrator might use the assortment of switches but I will give two examples that might be useful to home PC users.
Checking TCP/IP connectionsTCP and UDP connections and their IP and port addresses can be seen by entering a command combining two switches:
The information that is displayed includes the protocol, the local address, the remote (foreign) address, and the connection state. Note that the various IP addresses include port information as well. An explanation of the different connection states is given in Table II>
Checking for malware by looking at which programs initiate connections
To find out which programs are making connections with the outside world, we can use the command
netstat -b (Note that for Windows Vista/7, this particular switch requires that the command prompt have elevated privileges.) Actually, it is better to check over
a period of time and we can add a number that sets the command to run at fixed intervals. Also, it is best to create a written record of the connections that are made over some period of time. The command can then be written
netstat -b 5 >>
C:\connections.txt Note that as written, this command will run with five-second intervals until stopped by entering "Ctrl+c", which is a general command to exit. (Some reports say that this can be fairly CPU intensive so it may cause a slower, single-core machine to run sluggishly. It was not noticeable on my dual-core machine.) A simple example
of the type of output is shown in Figure 2. Note that the Process ID (PID) is given when using Windows XP. In Windows Vista/7, the switch "o' has to be added to display PIDs. This command can be combined with other tools such as Task Manager to analyze what executable files and processes are active and are trying to
make Internet connections.
Windows XP batch program to check connections and terminate automatically
The previous example of using "netstat -b" to check connections at intervals has the disadvantage that it requires manual termination. It is also possible to use a batch file that runs a specified number of times with a given time interval and then terminates automatically. In Windows XP we can make use of a command from the Windows
2003 Server Tools called "Sleep". A possible batch file is:
@echo off This particular example does 100 iterations of the netstat command at 30 second intervals and writes the results to a file C:\connections.txt. By using different combinations of the switches in Table I, the type of output
can be varied
echo Checking connections
for /L %%X in (1,1,100) do (netstat -b >> C:\connections.txt)&&(sleep 5)
Batch program to check connections in Windows Vista and Windows 7
Windows Vista and Windows 7 do not require installing the "Sleep" file. A command " timeout" has been added to these operating systems that serves a similar purpose. A possible batch file for Windows Vista/7 is:
echo Checking connections
for /L %%X in (1,1,100) do (netstat -b >> "%USERPROFILE%\connections.txt")&&
((timeout /t 5 /nobreak)>nul)
This batch file has to be run with administrator privileges.