Linux 命令 | netstat
netstat 通常用来检查各端口的网络连接情况。
可以显示 IP、TCP、UDP、ICMP 协议相关数据。
最常用方式
netstat -tlunp
,显示结果如下:
第二行的列名说明了每一列的内容
结果含义
-
Proto
协议名称 -
Recv-Q
网络接收队列,表示还有多少没被进程取走的数据,通常为 0 -
Send-Q
网络发送队列,表示远程没有收到的数据量,通常为 0 -
Local Address
本地地址-
127.0.0.1:port
表示只能本机访问 -
::1:port
对应 IPv6,本机访问 -
0.0.0.0:port
表示对外开放的 IPv4 -
:::port
表示对外开放的 IPv6 端口
-
-
Foreign Address
外部地址,格式和本地地址一样 -
State
链路状态 -
PID/Program name
进程号/应用名称
TCP 连接状态
上图中倒数第二列 State
显示了 tcp 的连接状态,有以下几种状态
-
LISTEN
,监听外部 TCP 端口连接请求 -
ESTABLISHED
,已建立连接 -
CLOSE-WAIT
,等待从本地用户发来的连接中断请求 -
CLOSING
,等待远程 TCP 对连接中断的确认 -
TIME-WAIT
,等待足够的时间以确保远程TCP接收到连接中断请求的确认 -
CLOSED
,连接关闭 -
SYN-SENT
,发送连接请求后等待匹配 -
SYN-RECEIVED
,收到和发送一个连接请求后等待对方确认 -
FIN-WAIT-1
,等待远程 TCP 连接中断请求,或先前的连接中断请求的确认 -
FIN-WAIT-2
,从远程 TCP 等待连接中断请求 -
LAST-ACK
,等待原来的发向远程 TCP 的连接中断请求的确认
常用命令
根据需求,用命令参数自由组合,获取需要的信息
-
netstat -at
所有 TCP 端口连接 -
netstat -lt
所有处于监听状态的 TCP 端口连接 -
netstat -st
所有 TCP 端口连接的统计信息 -
netstat -pt
所有 TCP 端口连接并显示 PID 和进程名称 -
netstat -tlunp
所有处于监听状态的 TCP/UDP 连接信息,以 IP 形式显示,并显示 PID 和进程名称 -
netstat -tlunp | grep 80 | wc -l
查询 80 端口的连接个数
命令参数
-
-a(–all)
显示所有连接 -
-A<网络类型>(–<网络类型>)
显示该网络类型连接信息,例:-A unix
-
-c(–continuous)
持续列出网络连接 -
-C(–cache)
显示路由器配置的快取信息 -
-e(–extend)
显示网络其他相关信息 -
-F(–fib)
显示FIB -
-g(–groups)
显示 IPV4 以及 IPV6 的多播组信息 -
-h(–help)
帮助文档 -
-i(–interfaces)
显示网卡信息 -
-l(–listening)
显示监听中的连接信息,不与 a 连用,因为 a 会输出所有连接 -
-M(–masquerade)
显示伪装的网络连接 -
-n(–numeric)
直接输出数字,不执行反向查询,结果输出会快很多。 -
-N(–netlink或–symbolic)
显示网络硬件外围设备的符号连接名称 -
-o(–timers)
显示计时器 -
-p(–programs)
显示正在使用连接的 PID 和程序名称 -
-r(–route)
显示核心路由信息 -
-s(–statistice)
显示所有连接的统计信息,包括接收/发送的包数量 -
-t(–tcp)
显示 TCP 协议的连接 -
-u(–udp)
显示 UDP 协议的连接 -
-v(–verbose)
显示指令执行过程 -
-V(–version)
显示版本信息 -
-w(–raw)
显示 RAW 协议的连接 -
-x(–unix)
显示 unix 连接信息,同-A unix
-
–ip(–inet)
显示 inet 连接信息,同-A inet