简介
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 | 端口占用 | 更全面的文件和端口信息 |