服务器测评网
我们一直在努力

linux netstat命令详解,如何查看网络连接状态?

Linux netstat 命令是网络管理中不可或缺的工具,主要用于显示网络连接、路由表、接口状态等信息,它能够帮助系统管理员和开发者快速诊断网络问题、监控网络连接状态,是 Linux 系统运维的必备技能之一,本文将详细介绍 netstat 命令的常用选项、输出字段含义及实际应用场景。

linux netstat命令详解,如何查看网络连接状态?

netstat 命令基础概述

netstat 命令的全称为 “network statistics”,即网络统计信息,它通过读取内核中的网络协议栈数据,生成当前系统的网络连接状态报告,在早期 Linux 版本中,netstat 是默认安装的工具,但近年来部分发行版(如 Ubuntu 18.04+、CentOS 7)已将其弃用,推荐使用 ss 命令替代,由于 netstat 的广泛使用和良好的兼容性,许多场景下仍需掌握其用法。

基本语法格式为:
netstat [选项] [参数]

常用选项包括 -t(TCP 协议)、-u(UDP 协议)、-l(仅显示监听端口)、-n(以数字形式显示地址和端口)、-p(显示进程 ID 和名称)、-a(显示所有连接)等。

核心选项详解与输出解析

常用选项组合

  • netstat -tuln:显示所有 TCP(-t)和 UDP(-u)监听(-l)端口,并以数字形式(-n)展示地址和端口,避免 DNS 解析延迟。
    输出示例:

    Active Internet connections (only servers)  
    Proto Recv-Q Send-Q Local Address           Foreign Address         State      
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
    tcp6       0      0 :::80                   :::*                    LISTEN     
    udp        0      0 127.0.0.53:53           0.0.0.0:*                          
  • netstat -anp:显示所有(-a)网络连接,以数字形式(-n)展示信息,并关联进程(-p),通过 grep 过滤特定端口或进程,可快速定位问题进程。
  • netstat -i:显示网络接口统计信息,包括接收(RX)和发送(TX)的数据包数量、错误数等,用于排查网络接口故障。
  • netstat -s:按协议显示详细的网络统计信息,如 TCP 重传次数、UDP 校验和错误等,适用于深度网络性能分析。

输出字段解析

netstat -tuln 为例,关键字段含义如下:
| 字段名 | 说明 |
|————–|———————————————————————-|
| Proto | 协议类型,如 tcp、udp、tcp6、unix 等 |
| Recv-Q | 接收队列中等待处理的数据包大小(单位:字节),通常为 0 表示正常 |
| Send-Q | 发送队列中已发送但未确认的数据包大小,若持续较大可能存在网络拥塞 |
| Local Address| 本地地址和端口,0.0.0 表示监听所有 IPv4 地址, 表示 IPv6 |
| Foreign Address| 远程地址和端口, 表示未连接(仅监听状态) |
| State | 连接状态,如 LISTEN(监听)、ESTABLISHED(已建立)、TIME_WAIT(等待关闭)|

实际应用场景

检查端口占用

当某个服务无法启动时,可能是端口被占用,检查 80 端口是否被占用:

linux netstat命令详解,如何查看网络连接状态?

netstat -tuln | grep 80

若输出包含 LISTEN,说明端口被占用;可通过 -p 选项查看占用进程的 PID,结合 kill 命令终止进程。

监控网络连接状态

查看当前系统的活跃连接数及远程 IP:

netstat -an | grep ESTABLISHED | wc -l  # 统计已建立的连接数
netstat -an | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr  # 按连接数排序远程 IP

此命令可帮助识别异常连接,如 DDoS 攻击时的单一 IP 大量连接。

分析网络协议统计

通过 netstat -s 查看 TCP 协议的重传次数和错误数:

netstat -s | grep -i "tcp"

若重传次数(segments retransmitted)过高,可能表明网络质量差或配置不当。

linux netstat命令详解,如何查看网络连接状态?

查看路由表

虽然 routeip route 是查看路由表的专用命令,但 netstat -rn 也可实现相同功能,-r 表示显示路由表,-n 避免 DNS 解析。

注意事项与替代方案

注意事项

  • 权限要求:部分选项(如 -p)需要 root 权限才能显示进程信息。
  • 性能影响netstat 需要遍历内核中的网络数据结构,在连接数较多的系统上执行可能较慢,建议结合 grep 过滤。
  • IPv6 支持:通过 tcp6udp6 等字段可区分 IPv4 和 IPv6 连接,需确保系统已启用 IPv6。

替代命令:ss

现代 Linux 发行版推荐使用 ss 命令,它是 iproute2 包的一部分,性能优于 netstat,能更快地输出结果。

ss -tuln  # 功能等同于 netstat -tuln

ss 的输出格式更简洁,且支持更多高级过滤选项,建议新用户优先学习 ss

尽管 netstat 逐渐被 ss 替代,但在许多遗留系统和传统运维场景中,它仍然是快速排查网络问题的利器,掌握 netstat 的核心选项和输出解析,能够有效提升网络故障排查效率,在实际使用中,可根据需求灵活组合选项,并结合 grepawk 等工具进行数据过滤,从而精准定位网络连接、端口占用及协议状态等问题,对于追求更高性能的用户,建议逐步过渡到 ss 命令,以适应现代网络管理需求。

赞(0)
未经允许不得转载:好主机测评网 » linux netstat命令详解,如何查看网络连接状态?