netstat是网络状态查看命令,既可以查看到本机开启的端口,也可以查看有哪些客户端连接。在CentOS 7.x中netstat命令默认没有安装,如果需要使用,需要安装net-snmp和net-tools软件包。
功能:输出网络连接、路由表、接口统计、伪装连接和组播成员
常用参数
-a 列出所有网络状态,包括Socket程序 -t (TCP) 显示使用TCP协议端口的连接状况 -u (UDP) 显示使用UDP协议端口的连接状况 -n 使用IP地址和端口号显示,不使用域名与服务名 -l 仅显示监听状态的连接 -p 显示PID和程序名 -r 显示路由表 -e 显示扩展信息,例如uid等 -s 按各个协议进行统计 -c 秒数 指定每隔几秒刷新一次网络状态 查看本机开启的端口 最常用的方式,使用选项“-tuln”。 因为使用了“-l”选项,所以只能看到监听状态的连接,而不能看到已经建立连接状态的连接
这个命令的输出较多。
Proto:网络连接的协议,一般就是TCP协议或者UDP协议。
Recv-Q:表示接收到的数据,已经在本地的缓冲中,但是还没有被进程取走。
Send-Q:表示从本机发送,对方还没有收到的数据,依然在本地的缓冲中,一般是不具备ACK标志的数据包。
Local Address:本机的IP地址和端口号。
Foreign Address:远程主机的IP地址和端口号。
State:状态。常见的状态主要有以下几种。
-LISTEN:监听状态,只有TCP协议需要监听,而UDP协议不需要监听。
-ESTABLISHED:已经建立连接的状态。如果使用“-l”选项, 则看不到已经建立连接的状态。
-SYN_SENT:SYN发起包,就是主动发起连接的数据包。
-SYN_RECV:接收到主动连接的数据包。
- FIN_WAIT1:正在中断的连接。
- FIN_WAIT2:已经中断的连接,但是正在等待对方主机进行确认。
- TIME_WAIT:连接已经中断,但是套接字依然在网络中等待结束。
- CLOSED:套接字没有被使用。
在这些状态中,我们最常用的就是LISTEN和ESTABLISHED状态,一种代表正在监听,另一种代表已经建立连接。
查看本机有哪些程序开启的端口
使用“-p”选项,则可以查看到是哪个程序占用了端口,并且可以知道这个程序的PID
查看所有连接
使用选项“-an”可以查看所有连接,包括监听状态的连接(LISTEN)、已经建立连接状态的连接(ESTABLISHED)、Socket程序连接等。因为连接较多,所以输出的内容有很多。
由于该命令输出内容较多,例子省略。
从“Active UNIX domain sockets”开始,之后的内容就是Socket程序产生的连接,之前的内容都是网络服务产生的连接。我们可以在“-an”选项的 输出中看到各种网络连接状态,而之前的“-tuln”选项则只能看到监听状态