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只显示一次当前的配置。 |
上表清楚地显示了所有参数的意义,上面的各大参数除了特别说明外,都可以组合使用,而且只需要偷懒只打一个杠,下面来举几个例:
- 最基本的了,显示所有的网络连接和监听端口信息:
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
- 上面的命令有点慢,如果我们让它只以数字的形式显示地址和端口的话,就快多了,刷地一下就完了(注意命令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
- 想看是各路神仙都开了哪些端口:
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])