Skip to content

netstat 命令:网络统计工具

1. 命令简介

netstat(network statistics)是一个用于显示网络连接、路由表、接口统计等网络相关信息的命令行工具。它能够显示 TCP 和 UDP 端口的使用情况,以及各种网络协议的统计信息。

注意:在较新的 Linux 系统中,netstat 命令已被 ss 命令取代,但由于其广泛使用和易读性,仍然值得学习。

2. 基本语法

bash
netstat [选项]

3. 常用选项

  • -t:显示 TCP 连接
  • -u:显示 UDP 连接
  • -l:只显示监听中的连接
  • -p:显示进程 ID 和进程名称
  • -n:不解析名称,以数字形式显示地址和端口号
  • -a:显示所有连接,包括 LISTEN 状态
  • -r:显示路由表
  • -i:显示网络接口信息
  • -s:显示各种协议的统计信息

4. 基础使用示例

  1. 显示所有活动的连接:

    bash
    netstat -a
  2. 显示所有 TCP 连接:

    bash
    netstat -at
  3. 显示监听中的 TCP 端口:

    bash
    netstat -lt
  4. 显示进程 ID 和程序名:

    bash
    sudo netstat -tp

5. 进阶使用技巧

  1. 显示特定端口的连接:

    bash
    netstat -an | grep :80
  2. 显示路由表:

    bash
    netstat -r
  3. 显示网络接口统计信息:

    bash
    netstat -i
  4. 显示 TCP、UDP 等协议的统计信息:

    bash
    netstat -s

6. 实用示例

  1. 查找占用特定端口的进程:

    bash
    sudo netstat -tulnp | grep :443
  2. 统计连接状态:

    bash
    netstat -ant | awk '{print $6}' | sort | uniq -c | sort -n
  3. 查看连接到特定 IP 的连接:

    bash
    netstat -an | grep 192.168.1.100
  4. 显示 IPv6 连接:

    bash
    netstat -A inet6

7. 注意事项

  • 某些选项(如 -p)需要 root 权限才能执行。
  • 在大型系统上,netstat 可能会消耗较多资源,影响系统性能。
  • 在新版 Linux 系统中,推荐使用 ss 命令代替 netstat

8. 相关命令

  • ss:更新和更高效的套接字统计工具
  • lsof:列出打开的文件,可用于查看网络连接
  • tcpdump:网络数据包分析工具
  • nmap:网络扫描和安全审计工具

9. 技巧与建议

  1. 使用 watch 命令实时监控网络连接:

    bash
    watch -n 1 'netstat -an | grep :80'
  2. 结合 grepawk 提取特定信息:

    bash
    netstat -ant | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
  3. 使用 netstat -p 查找占用端口的应用程序:

    bash
    sudo netstat -tulnp
  4. 使用 netstat -s 诊断网络问题,如丢包、重传等:

    bash
    netstat -s | grep -i retransmitted

netstat 是一个强大的网络诊断工具,它可以帮助系统管理员和网络工程师了解系统的网络状态、识别网络问题、监控网络流量等。尽管在较新的系统中它正在被 ss 命令取代,但由于其广泛的可用性和易读的输出,它仍然是一个值得掌握的重要工具。理解和熟练使用 netstat 可以大大提高网络问题的诊断和解决能力。