「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。
netstat 常用来查看监听端口和网络连接的情况。
参数
- -a:显示所有连接
- -b:显示可执行程序
- -n:显示IP地址和端口号(默认显示主机名和协议名)
- -o:显示进程PID
- -p:指定协议(TCP、UDP、IP、IPv6、ICMP、ICMPv6、TCPv6 或 UDPv6)
- -t:显示连接的卸载状态
- -q:显示所有连接,监听端口不一定与连接相关
- -r:显示核心路由表
- -f:显示外部地址的完整域名
- -e:以太网统计,配合-s
- -s:每个协议的统计
- -x:活动 NetworkDirect 连接、侦听器和共享端点
- -y:显示所有连接的 TCP 连接模板
netstat
- 1、字段含义
- 2、状态类型
- 2.1、TCP建立连接的5种状态
- 2.2、TCP关闭连接的6种状态
- 2.3、故障排查3种状态
- 3、常用参数和过滤
- 4、定时刷新
- 5、查看丢包
1、字段含义
netstat -bo
显示完整的字段,
字段解释:
- 协议(Proto):TCP或UDP协议。
- 本地地址(local Address):本机使用的IP地址和端口号
- 外部地址(foreign Address):连接到远程IP地址和端口
- 状态(State):TCP连接状态
- PID(-o参数):进程ID
- 可执行程序(-b参数):发起TCP连接的进程。一个进程可以打开多个端口,一个端口只能对应一个程序。
2、状态类型
状态一栏对应着TCP连接状态。因为UDP是无状态协议,不建立连接,所以状态这一栏总是空的。
2.1、TCP建立连接的5种状态
- CLOSED:关闭状态,TCP连接的初始状态。
- LISTEN:监听状态,服务端监听客户端的TCP连接请求。
- SYN-SENT:主动建立连接状态,「第一次握手」客户端发送建立连接请求后,等待服务端的响应。
- SYN-RCVD:等待连接状态,「第二次握手」服务端接受连接请求后,等待客户端确认。
- ESTABLISHED:数据传输状态,「第三次握手」TCP连接建立成功。
TCP三次握手与连接状态的对应关系。
2.2、TCP关闭连接的6种状态
- ESTABLISHED:数据传输状态。
- FIN-WAIT-1:主动关闭状态,「第一次挥手」客户端主动发送关闭连接的请求,等待服务器确认。
- CLOSE-WAIT:等待关闭状态,「第二次挥手」服务端收到关闭连接请求后,等待本地用户关闭连接。
- FIN-WAIT-2:等待关闭状态,等待服务端发送关闭连接的请求。
- LAST-ACK:等待关闭状态,「第三次挥手」服务端发送关闭连接的请求后,等待客户端确认。
- TIME-WAIT:确认关闭状态,「第四次挥手」客户端确认关闭连接后,等待一段时间后自动关闭连接,目的是保证所有数据包都被对方接收。
- CLOSED:关闭状态,TCP连接断开,回到初始状态。
TCP四次挥手与连接状态的对应关系。
2.3、故障排查3种状态
LISTEN是监听状态,当遇到故障时,可以观察服务对应的端口有没有被监听,定位到具体的服务进程,缩小排查范围。
SYN-RCVD是中间状态,正常情况下很少见到,如果发现大量SYN-RCVD,则很有可能是遇到了SYN Flood攻击。
ESTABLISHED是数据传输状态,排查外联情况时,可以把ESTABLISHED状态的外部地址,放到威胁情报平台,如果IP报了恶意,就根据PID找到进程,做进一步排查。
3、常用参数和过滤
平时用的最多的参数是 netstat -ano
,以数字形式显示所有连接。
netstat -ano | findstr ESTABLISHED
根据状态过滤
netstat -ano | findstr 20.198.162.76
或者根据IP地址过滤
4、定时刷新
参数后面加上数字,可以间隔刷新。
比如 5秒刷新一次,就会每5秒重新打印一次最新的网络情况,Ctrl + c
停止命令
常配合其他参数使用,比如 netstat -ano 5
5、查看丢包
netstat -e
查看接口收发包情况,检查是否丢包。