Linux 命令 netstat 详解
今天来学习一个命令[netstat](https://linux.die.net/man/8/netstat),官方文档 https://linux.die.net/man/8/netstat。
简介
netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
参数
输出
[State](https://www.jianshu.com/p/a546cd27f96e) 详解(详细解释戳:https://www.jianshu.com/p/a546cd27f96e):
ESTABLISHED : socket已建立连接 (三次握手中的第三次)
SYN_SENT : TCP主动打开,发送SYN (三次握手中的第一次)
SYN_RECV : 接受到SYN,并且发送SYN,ACK(SYN+1)(三次握手中第二次的状态)
FIN_WAIT1 : 应用主动关闭连接状态 (四次握手第一次的状态 )
FIN_WAIT2 : 对方响应关闭请求后的状态(ACK=FIN+1)四次握手第二次的状态 )
TIME_WAIT : 接收到对方已经关闭连接的响应后进入的状态。(四次握手的第三次)
CLOSED :连接已经关闭
CLOSE_WAIT : 远端接到被动关闭请求,发送ack。
LAST_ACK : 远端传输已经关闭,发送已关闭信息。
LISTEN : socket正在监听传入的连接。这些socket不包括在输出中,除非 --listening (-l) or --all (-a)
CLOSING :连接已经关闭时的状态,但是socket四次握手中的数据还没有发送完。
UNKNOWN : 未知状态。
使用方法
netstat -a 显示所有socket
netstat -t 显示所有tcp
找出运行程序的端口 netstat -ap | grep ssh
查找某个端口是否被占用 netstat -ap | grep ':80'
查看连接80端口最多的的IP地址 netstat -tn | grep '127.0.0.1:80' |awk '{print $5}' |awk -F ':' '{print $1}'| sort | uniq -c | sort -nr | less
查看TCP连接最多状态 netstat -t |awk '{print $6}' | sort | uniq -c | sort -rn
netstat 命令非常的好用,非常适合查看网络连接的状态。为了更好使用这个命令,最好了解一下TCP的三次握手和四次握手。
评论