Linux netstat 命令详解
简介
netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况
TCP连接状态详解
LISTEN: 侦听来自远方的TCP端口的连接请求
SYN-SENT: 再发送连接请求后等待匹配的连接请求
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED: 代表一个打开的连接
FIN-WAIT-1: 等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2: 从远程TCP等待连接中断请求
CLOSE-WAIT: 等待从本地用户发来的连接中断请求
CLOSING: 等待远程TCP对连接中断的确认
LAST-ACK: 等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT: 等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED: 没有任何连接状态
命令选项
常用
-a或–all:显示所有连线中的Socket;
-t或–tcp:显示TCP传输协议的连线状况;
-u或–udp:显示UDP传输协议的连线状况;
-p或–programs:显示正在使用Socket的程序识别码和程序名称;
-l或–listening:显示监控中的服务器的Socket;
-r或–route:显示Routing Table;
-e或–extend:显示网络其他相关信息;
-s或–statistice:显示网络工作信息统计表;
-c或–continuous:持续列出网络状态;
-n或–numeric:直接使用ip地址,而不通过域名服务器;
-A<网络类型>或–<网络类型>:列出该网络类型连线中的相关地址;
-C或–cache:显示路由器配置的快取信息;
-F或–fib:显示FIB;
-g或–groups:显示多重广播功能群组组员名单;
-h或–help:在线帮助;
-i或–interfaces:显示网络界面信息表单;
-M或–masquerade:显示伪装的网络连线;
-N或–netlink或–symbolic:显示网络硬件外围设备的符号连接名称;
-o或–timers:显示计时器;
-v或–verbose:显示指令执行过程;
-V或–version:显示版本信息;
-w或–raw:显示RAW传输协议的连线状况;
-x或–unix:此参数的效果和指定"-A unix"参数相同;
–ip或–inet:此参数的效果和指定"-A inet"参数相同
常用组合命令
查看所有监听状态的 TCP 相关信息
我们一般使用此命令来查找主机上哪个程序占用哪个端口;或者是否服务正常启动,正常监听端口。
Local Address 列中,如果 IP 是 0.0.0.0 则表示监听所有的 IP 地址,如果是监听 127.0.0.1 则表示此端口只能在本地访问。
netstat -nltp
查看端口是否被占用,也可以用lsof
lsof -i:端口号
找程序运行的端口
netstat -tunlp | grep ssh
找出运行在指定端口的进程
netstat -an | grep ":9998"
通过端口找进程ID
netstat -tunlp | grep 9998 | awk '{print $7}' | cut -d/ -f1
统计TCP各种状态列表
netstat -n | awk '/^tcp/{++S[$NF]}END{for(i in S) print i,S[i]}'