0%

netstat命令

一、常用用法

netstat -anp

二、含义与选项

2.1、含义

打印处于所有状态的Socket连接的信息。

2.2、选项

1、“-a”
不加“-a”选项,表示不打印处于“LISTEN/LISTENING”状态的Socket连接的信息;加了“-a”选项,表示打印处于所有状态的Socket连接的信息,包括处于“LISTEN/LISTENING”状态的Socket连接。
2、“-n”
在打印“网络地址”,“端口”时,不需要解析成字符串形式,只需要以数字形式打印即可。
3、“-p”
加上该选项,表示打印拥有该Socket连接的本地进程的进程ID和进程名称。需要注意的是,只有当前执行“netstat”命令的用户拥有对相关进程的相关权限时,进程ID和进程名称才会被打印出来。

三、其他

3.1、Socket连接与“address family”

“address family”包括有“inet,unix,ipx,ax25,netrom,ddp”等。“inet”这个“address family”中包括有“TCP,UDP,RAW”这3种协议。
一个Socket连接使用不同“address family”下的不同协议。

3.2、Socket连接的状态

当Socket连接使用“inet“这个“address family”时,Socket连接的状态有:“ESTABLISHED,SYN_SENT,SYN_RECV,FIN_WAIT1,FIN_WAIT2,TIME_WAIT,CLOSE,CLOSE_WAIT,LAST_ACK,LISTEN,CLOSING,UNKNOWN”。
当Socket连接使用“unix”这个“address family”时,Socket连接的状态有:“FREE,LISTENING,CONNECTING,CONNECTED,DISCONNECTING,空白,UNKNOWN”。

要注意跟TCP连接状态的区分。

备注:
一个处于“LISTEN/LISTENING”状态的Socket连接准确来说,其实不能被称为“连接”,因为还没有建立“Socket连接”。

3.3、打印格式

打印信息根据Socket连接使用的“address family”的不同而进行分类,常见的两个类别为:Active Internet connections(对应于“inet”这个“address family”)和Active UNIX domain Sockets(对应于“unix”这个“address family”)。

3.3.1、Active Internet connections

本类别下,打印信息分为7列展示,介绍如表1所示。

表1

列名 含义
Proto Socket连接所使用的协议,即“tcp,udp,raw”这3种的其中一种
Recv-Q Socket连接关联的本地进程(也即拥有该Socket连接的本地进程)未处理的字节数量
Send-Q Socket连接关联的远端进程未确认是否处理完成的字节数量
Local Address Socket连接关联的本地端的网络地址和端口号
Remote Address Socket连接关联的远端的网络地址和端口号
State Socket连接状态,可取值有:ESTABLISHED,SYN_SENT,SYN_RECV,FIN_WAIT1,FIN_WAIT2,TIME_WAIT,CLOSE,CLOSE_WAIT,LAST_ACK,LISTEN,CLOSING,UNKNOWN
PID/Program name Socket连接关联的本地进程(也即拥有该Socket连接的本地进程)的进程ID和进程名称

3.3.2、Active UNIX domain Sockets

本类别下,打印信息分为8列,介绍如表2所示。

表2

列名 含义
Proto 一般为“unix”
RefCnt 跟该Socket连接关联的进程的数量
Flags 可取值为:ACC,W,N
Type Socket连接类型,可取值有:SOCK_DGRAM,SOCK_STREAM,SOCK_RAW,SOCK_RDM,SOCK_SEQPACKET,SOCK_PACKET,UNKNOWN
State Socket连接状态,可取值有:FREE,LISTENING,CONNECTING,CONNECTED,DISCONNECTING,空白,UNKNOWN
I-Node Socket连接相对应文件的Inode
PID/Program name 拥有该Socket连接的本地进程的进程ID和进程名称
Path Socket连接关联的进程对应的程序的路径

参考文献

[1]man netstat

您的支持将鼓励我继续分享!