简介

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