netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。
![9a797c0cb341ae056e92cc2e7607dbb4.png](https://i-blog.csdnimg.cn/blog_migrate/739730a185bb09a0a2379d0f545ec10a.jpeg)
Active Internet connections :被称为有源TCP链接,Recv-Q 和Send-Q分别代表 接受和发送的队列,数字一般为0。
Active UNIX domain sockets:称为有源Unix域套接口,和socket通信一样 ,可用于本机通信,性能强
Proto :显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名
套接口类型:
-t :TCP-u :UDP-raw :RAW类型--unix :UNIX域类型--ax25 :AX25类型--ipx :ipx类型--netrom :netrom类型
状态说明:
LISTEN:侦听来自远方的TCP端口的连接请求SYN-SENT:再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了)SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood攻击了)ESTABLISHED:代表一个打开的连接FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认FIN-WAIT-2:从远程TCP等待连接中断请求CLOSE-WAIT:等待从本地用户发来的连接中断请求CLOSING:等待远程TCP对连接中断的确认LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认(不是什么好东西,此项出现,检查是否被攻击)TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认CLOSED:没有任何连接状态
常用命令
1、列出所有端口 #netstat -a2、列出所有 tcp 端口 #netstat -at3、列出所有 udp 端口 #netstat -au4、只显示监听端口 #netstat -l5、只列出所有监听 tcp 端口 #netstat -lt6、只列出所有监听 udp 端口 #netstat -lu7、列出所有监听 UNIX 端口 #netstat -lx8、显示所有端口的统计信息 #netstat -s9、显示 TCP 或 UDP 端口的统计信息 #netstat -st 或 -su10、 输出中显示 PID 和进程名称 #netstat -p11、netstat 输出中不显示主机,端口和用户名 (host, port or user)当你不想让主机,端口和用户名显示,使用 netstat -n。将会使用数字代替那些名称。同样可以加速输出,因为不用进行比对查询。#netstat -an如果只是不想让这三个名称中的一个被显示,使用以下命令# netsat -a --numeric-ports# netsat -a --numeric-hosts# netsat -a --numeric-users12、持续输出 netstat 信息 #netstat -c13、找出程序运行的端口 #netstat -ap | grep ':80'14、查看连接某服务端口最多的的IP地址(前20个)#netstat -nat | grep "10.1.62.23:443" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -2015、TCP各种状态列表 #netstat -nat |awk '{print $6}'统计数量#netstat -nat |awk '{print $6}'|sort|uniq -c排序#netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn#netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'16、直接统计tcp数量监听的数量#netstat -ant | wc -l参考文献:https://www.cnblogs.com/ggjucheng/p/2316661.htmlhttps://www.cnblogs.com/jackhub/p/3782598.html
显示网卡列表
![dcd4774a868d5d963bbe0acc986491d0.png](https://i-blog.csdnimg.cn/blog_migrate/d9be38a6411d65f261c722ca511af339.jpeg)
只显示监听端口 netstat -i
显示网络统计
![9bce530075d074e4e6d288eeee275115.png](https://i-blog.csdnimg.cn/blog_migrate/97f4eaefc23696277cd6217d7534bfdb.jpeg)
netstat -s
显示TCP传输协议的连线状况
![a71fe582c183cc7c3f8bc6015b2e4798.png](https://i-blog.csdnimg.cn/blog_migrate/eb19e17b0183a0d82181a46f013e3668.jpeg)
netstat -t
![187c61da9e942a1e6fd8e0eccb9e5bde.png](https://i-blog.csdnimg.cn/blog_migrate/d6a552365c26aa0c40a0161066d828dd.jpeg)
直接使用IP地址,而不通过域名服务器 netstat -tn
显示正在使用Socket的程序识别码和程序名称 netstat -p
![d10c1220a92cbcdb8df77035449d2b99.png](https://i-blog.csdnimg.cn/blog_migrate/cb4e4d16521f37bbcbcd17236bf0216f.jpeg)
netstat -npt
这样就可以统计出正在连接的设备了,使用awk 分割打印#
#分割第四个字段以22结尾的值,wc命令统计 netstat -tnp | awk '$4~/.*:22$/' | wc -l
![0d0bc2e32382aa4db116fe7e32726957.png](https://i-blog.csdnimg.cn/blog_migrate/0b9fa5c7220f09d2db7f97c3ec9e3903.jpeg)
![4dece303d18b86102921d5999601fc69.png](https://i-blog.csdnimg.cn/blog_migrate/1a008f75d2193e26265adae1a4d1519b.jpeg)