目录
简介
基础用法
连接状态
实用案例
故障排查
现代替代工具
简介
netstat(network statistics)是一个功能强大的网络诊断工具,用于显示网络连接、路由表、接口统计等网络相关信息。本指南将帮助您掌握netstat的使用方法,从基本的端口监控到复杂的网络故障排查。
主要功能:
显示网络连接状态
查看端口占用情况
监控网络接口统计
查看路由表信息
分析网络协议统计
注意:在较新的Linux系统中,推荐使用ss命令替代netstat,性能更好且功能更强大。
基础用法
常用选项
选项
说明
示例
-t
显示TCP连接
netstat -t
-u
显示UDP连接
netstat -u
-l
只显示监听的端口
netstat -l
-n
不解析名字
netstat -n
-p
显示进程信息
netstat -p
基本命令示例
查看所有TCP连接:
netstat -at
查看监听的端口:
netstat -tulpn
查看统计信息:
netstat -s
连接状态
TCP连接状态说明
状态
说明
LISTEN
服务器在监听端口,等待客户端连接
ESTABLISHED
正常数据传输状态
TIME_WAIT
连接已关闭,等待清理
CLOSE_WAIT
等待本地用户关闭连接
SYN_SENT
客户端尝试建立连接
状态监控示例:
查看ESTABLISHED连接数:
netstat -ant | grep ESTABLISHED | wc -l
查看TIME_WAIT连接数:
netstat -ant | grep TIME_WAIT | wc -l
实用案例
端口占用检查
查看特定端口:
netstat -tulpn | grep :80
查看占用端口的进程:
netstat -tulpn | grep LISTEN
连接统计
统计各种状态的连接数:
netstat -ant | awk '{print $6}' | sort | uniq -c | sort -rn
查看连接到特定IP的连接数:
netstat -ant | grep "192.168.1.1" | wc -l
网络接口统计
查看网络接口统计:
netstat -i
查看详细的接口统计:
netstat -ie
故障排查
常见问题分析
排查要点:
大量TIME_WAIT连接可能导致端口耗尽
过多CLOSE_WAIT可能表示应用程序问题
SYN_RECV过多可能是遭受SYN攻击
问题定位脚本
监控连接状态变化:
#!/bin/bash
while true; do
echo "$(date) - Connection States:"
netstat -ant | awk '{print $6}' | sort | uniq -c
sleep 5
done
性能优化建议
优化方向:
调整TCP参数处理TIME_WAIT
优化应用程序的连接处理
合理配置连接超时时间
现代替代工具
ss命令
替代netstat的常用命令:
# 列出所有连接
ss -ta
# 查看监听端口
ss -tulpn
# 查看连接状态统计
ss -s
其他网络工具
工具
用途
优势
nstat
网络统计
更详细的网络计数器
ip
网络配置
替代ifconfig的现代工具
lsof
端口占用
更全面的文件和端口信息