netstat命令详解

Netstat命令用于显示协议统计数据和当前TCP/IP网络的连接相关信息。
很多时候我们需要查看自己的电脑某些网络端口是否被正常打开或者是否已经成功与别的机器建立连接,或者想看一些连接、协议的统计数据,就需要用netstat命令来查看。
命令后面带个问号就能查看到帮助了,我的是英文系统,听说中文系统下可以查到中文的帮助,我没条件测试,所以不知道,希望知道的朋友帮我核实再告诉我。

C:\>netstat ?

Displays protocol statistics and current TCP/IP network connections.

NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-x] [-t] [interval]

  -a            Displays all connections and listening ports.
  -b            Displays the executable involved in creating each connection or
                listening port. In some cases well-known executables host
                multiple independent components, and in these cases the
                sequence of components involved in creating the connection
                or listening port is displayed. In this case the executable
                name is in [] at the bottom, on top is the component it called,
                and so forth until TCP/IP was reached. Note that this option
                can be time-consuming and will fail unless you have sufficient
                permissions.
  -e            Displays Ethernet statistics. This may be combined with the -s
                option.
  -f            Displays Fully Qualified Domain Names (FQDN) for foreign
                addresses.
  -n            Displays addresses and port numbers in numerical form.
  -o            Displays the owning process ID associated with each connection.
  -p proto      Shows connections for the protocol specified by proto; proto
                may be any of: TCP, UDP, TCPv6, or UDPv6.  If used with the -s
                option to display per-protocol statistics, proto may be any of:
                IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP, or UDPv6.
  -q            Displays all connections, listening ports, and bound
                nonlistening TCP ports. Bound nonlistening ports may or may not
                be associated with an active connection.
  -r            Displays the routing table.
  -s            Displays per-protocol statistics.  By default, statistics are
                shown for IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP, and UDPv6;
                the -p option may be used to specify a subset of the default.
  -t            Displays the current connection offload state.
  -x            Displays NetworkDirect connections, listeners, and shared
                endpoints.
  -y            Displays the TCP connection template for all connections.
                Cannot be combined with the other options.
  interval      Redisplays selected statistics, pausing interval seconds
                between each display.  Press CTRL+C to stop redisplaying
                statistics.  If omitted, netstat will print the current
                configuration information once.

先来人肉翻译一下各个选项所代表的意思吧:

选项 描述
-a 显示所有网络连接和监听的所有端口。
-b 显示创建每个连接或者监听商品的相关可执行程序。有时候有些已知的可执行程序拥有多个独立组件,在这种情况下会按一定顺序显示创建连接或者端口的组件。netstat会将可执行程序的名称显示在底下的方括号[]中,而顶部显示的是其调用的组件,只有在TCP/IP连接上后才会继续继续下一步。注意这种操作可能很耗时且在你没有足够权限的情况下可能会失败(笔者注:所以最好以管理员权限执行该命令)。
-e 显示以太网统计数据。这个参数往往与-s组合使用。
-f 显示外部地址的FQDN名称(完全限定域名)。
-n 以数字形式显示地址和端口。
-o 显示每个连接相关的所属进程的ID。
-p proto 显示通过proto值指定的协议的连接;proto可以是下列中的任一个:TCP、UDP、TCPv6、UDP或者UDPv6。如果使用-s选项来显示每个协议的统计数据,proto可以是以下的任意一个:IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP或UDPv6。
-q 显示所有的连接、监听端口及绑定非监听TCP端口。绑定非监听端口可能有或者没有与一个活动连接相关联。
-r 显示路由表。(笔者注:跟route print命令一样的效果。)
s 显示每个协议的统计数据。默认情况下,统计数据显示如下协议:IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP和UDPv6;-p选项可以用来指定一个上述协议的子集。(笔者注:就是用户可以通过-p选项来指定只显示哪个的意思。)
-t 显示当前连接的卸载状态。(笔者注:卸载状态是指的TCP Chimney Offload,这是一种网络技术,它可以帮助在网络数据传输期间将工作负载从CPU传输到网络适配器。)
-x 显示NetworkDirect连接、监听器和共享终端。
-y 显示所有连接的TCP连接模板。此选项不能与其它选项组合使用。
interval 每次刷新显示的统计数据之间的以秒钟为单位的间隔时长。可以按CTRL+C中止统计数据的刷新。如果这个选项被省略,netstat只显示一次当前的配置。

上表清楚地显示了所有参数的意义,上面的各大参数除了特别说明外,都可以组合使用,而且只需要偷懒只打一个杠,下面来举几个例:

  1. 最基本的了,显示所有的网络连接和监听端口信息:
C:\>netstat -a

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:135            DARWINWS01:0              LISTENING
  TCP    0.0.0.0:445            DARWINWS01:0              LISTENING
  TCP    0.0.0.0:2179           DARWINWS01:0              LISTENING
  TCP    0.0.0.0:3389           DARWINWS01:0              LISTENING
  TCP    0.0.0.0:5040           DARWINWS01:0              LISTENING
  TCP    0.0.0.0:5900           DARWINWS01:0              LISTENING
  TCP    0.0.0.0:6045           DARWINWS01:0              LISTENING
  1. 上面的命令有点慢,如果我们让它只以数字的形式显示地址和端口的话,就快多了,刷地一下就完了(注意命令netstat -na与netstat -n -a的意义是一样的):
C:\>netstat -na

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:2179           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:5040           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:5900           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:6045           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:6772           0.0.0.0:0              LISTENING
  1. 想看是各路神仙都开了哪些端口:
C:\>netstat -n -b

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    127.0.0.1:5354         127.0.0.1:49670        ESTABLISHED
 [mDNSResponder.exe]
  TCP    127.0.0.1:5354         127.0.0.1:49672        ESTABLISHED
 [mDNSResponder.exe]
  TCP    127.0.0.1:5354         127.0.0.1:49680        ESTABLISHED
 [mDNSResponder.exe]
  TCP    127.0.0.1:7330         127.0.0.1:59371        ESTABLISHED
 [iVMS-4200.DeviceManagement.S.exe]
  TCP    127.0.0.1:27015        127.0.0.1:59257        ESTABLISHED
 [AppleMobileDeviceService.exe]
  TCP    127.0.0.1:49670        127.0.0.1:5354         ESTABLISHED
 [AppleMobileDeviceService.exe]
  TCP    127.0.0.1:49672        127.0.0.1:5354         ESTABLISHED
 [AppleMobileDeviceService.exe]
  TCP    127.0.0.1:49680        127.0.0.1:5354         ESTABLISHED
 [vncserver.exe]
  TCP    127.0.0.1:50395        127.0.0.1:50396        ESTABLISHED
 [firefox.exe]
  TCP    127.0.0.1:50396        127.0.0.1:50395        ESTABLISHED
 [firefox.exe]
  TCP    127.0.0.1:50397        127.0.0.1:50398        ESTABLISHED

对照上面中文的选项表,使用上应该不会有什么问题,下面附一个可能出现的名词对照吧:

英文名词 中文名词
Proto 协议
Local Address 本机地址
Foreign Address 远程地址
State 状态
LISTENING 监听中
ESTABLISHED 已连接
SYN_SENT 发送了连接建立请求(准备建立连接)
CLOSE_WAIT 等待本地用户发连接中断请求中(这是准备关闭连接的一个步骤,意味着这个连接正在关闭)
TIME_WAIT 发了ACK进入等待状态确保远端正常关闭(这是准备关闭连接的一个步骤,意味着这个连接正在关闭)
LAST_ACK 等待对方回应一个ACK(这是准备关闭连接的一个步骤,意味着这个连接正在关闭)

达叔傻乐([email protected])

你可能感兴趣的:(netstat命令详解)