netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。
netstat [选项]
选项 | 描述 |
---|---|
-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、最基本的,显示所有的网络连接和监听端口信息的netstat命令:
2、上面的命令有点慢,如果我们让它只以数字的形式显示地址和端口的话,就快多了,刷地一下就完了(注意命令netstat -na与netstat -n -a的意义是一样的):
3、想看是各路神仙都开了哪些端口的netstat命令:
对照上面中文的选项表,使用上应该不会有什么问题,下面附一个可能出现的名词对照吧:
英文名词 | 中文名词 |
---|---|
Proto | 协议 |
Local Address | 本机地址 |
Foreign Address | 远程地址 |
State | 状态 |
LISTENING | 监听中 |
ESTABLISHED | 已连接 |
SYN_SENT | 发送了连接建立请求(准备建立连接) |
CLOSE_WAIT | 等待本地用户发连接中断请求中(这是准备关闭连接的一个步骤,意味着这个连接正在关闭) |
TIME_WAIT | 发了ACK进入等待状态确保远端正常关闭(这是准备关闭连接的一个步骤,意味着这个连接正在关闭) |
LAST_ACK | 等待对方回应一个ACK(这是准备关闭连接的一个步骤,意味着这个连接正在关闭) |
对于几种状态的说明:state
1.LISTENING:(Listening for a connection.)侦听来自远方的TCP端口的连接请求
2.SYN-SENT:(Active; sent SYN. Waiting for a matching connection request after having sent a connection request.)发送连接请求后等待匹配的连接请求,既向远程主机发送连接请求
3.SYN-RECEIVED:(Sent and received SYN. Waiting for a confirming connection request acknowledgment after having both received and sent connection requests.)再收到和发送一个连接请求后等待对方对连接请求的确认,对方发送回来的确认连接信息
4.ESTABLISHED:(Connection established.)代表一个打开的连接
5.FIN-WAIT-1:(Closed; sent FIN.)等待远程TCP连接中断请求,或先前的连接中断请求的确认
6.FIN-WAIT-2:(Closed; FIN is acknowledged; awaiting FIN.)从远程TCP等待连接中断请求
7.CLOSE-WAIT:(Received FIN; waiting to receive CLOSE.)等待从本地用户发来的连接中断请求
8.CLOSING:(Closed; exchanged FIN; waiting for FIN.)等待远程TCP对连接中断的确认
9.LAST-ACK:(Received FIN and CLOSE; waiting for FIN ACK.)等待原来的发向远程TCP的连接中断请求的确认
10.TIME-WAIT:(In 2 MSL (twice the maximum segment length) quiet wait after close. )等待足够的时间以确保远程TCP接收到连接中断请求的确认
11.CLOSED:(Connection is closed.)没有任何连接状态
在命令提示符中比较常见,能够捕获到的状态通常有LISTENING、ESTABLISHED、SYN-SENT、FIN-WAIT-1、LAST-ACK、TIME-WAIT、CLOSED