netstat命令网络状态查看

2025-04发布7次浏览

netstat命令网络状态查看

一、netstat命令简介

netstat 是一个网络统计工具,它可以显示网络连接、路由表、接口统计、伪装连接和多播成员。通过使用 netstat 命令,管理员可以查看当前的网络连接情况,包括连接的状态、协议类型、本地地址、外部地址等信息。

在现代Linux系统中,netstat 已经逐渐被 ss(Socket Statistics)命令所取代,但仍然有很多场景下会用到 netstat


二、常用选项与功能

以下是 netstat 常用的一些选项及其功能:

  1. 查看所有活动连接

    netstat -a
    

    参数 -a 表示显示所有活动的连接。

  2. 查看TCP连接

    netstat -at
    

    参数 -t 表示仅显示TCP连接。

  3. 查看UDP连接

    netstat -au
    

    参数 -u 表示仅显示UDP连接。

  4. 以数字形式显示地址和端口

    netstat -an
    

    参数 -n 表示以数字形式显示地址和端口号,而不是尝试解析主机名和服务名。

  5. 显示监听的端口

    netstat -l
    

    参数 -l 表示显示处于监听状态的端口。

  6. 显示程序对应的PID和名称

    netstat -p
    

    参数 -p 表示显示与每个连接关联的进程ID(PID)和程序名称。

  7. 显示统计信息

    netstat -s
    

    参数 -s 表示显示每个协议的统计信息。

  8. 显示路由表

    netstat -r
    

    参数 -r 表示显示内核路由表。

  9. 结合多个选项

    netstat -tulnp
    

    上述命令表示显示所有监听的TCP端口,并显示对应的进程信息。


三、实践步骤与代码示例

1. 查看所有活动的TCP和UDP连接

运行以下命令:

netstat -a

输出示例:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 localhost:3306          *:*                     LISTEN     
tcp        0      0 localhost:631           *:*                     LISTEN     
udp        0      0 *:bootpc                *:*                                

解释:

  • Proto:协议类型(如TCP或UDP)。
  • Recv-QSend-Q:接收队列和发送队列中的数据包数量。
  • Local Address:本地地址和端口。
  • Foreign Address:远程地址和端口。
  • State:连接状态(如LISTEN、ESTABLISHED等)。
2. 查找监听的端口及对应程序

运行以下命令:

netstat -tulnp

输出示例:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      123/sshd            
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      456/mysqld          
udp        0      0 0.0.0.0:68              0.0.0.0:*                           789/dhclient        

解释:

  • PID/Program name 列出了监听端口的进程ID和程序名称。
3. 查看路由表

运行以下命令:

netstat -r

输出示例:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         _gateway        0.0.0.0         UG        0 0          0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

解释:

  • Destination:目标网络。
  • Gateway:网关地址。
  • Genmask:子网掩码。
  • Flags:标志位(如U表示可达,G表示网关)。
  • Iface:接口名称。

四、相关知识扩展

  1. 替代工具:ss 命令 在现代Linux系统中,ss(Socket Statistics)命令被认为是 netstat 的替代品,因为它性能更高且功能更强大。例如:

    ss -tuln
    

    功能与 netstat -tuln 类似。

  2. 常见网络状态

    • LISTEN:等待传入连接。
    • ESTABLISHED:已建立连接。
    • TIME_WAIT:连接关闭后等待一段时间以确保数据包清理完成。
    • CLOSE_WAIT:被动关闭状态,等待应用程序关闭连接。
  3. 排查网络问题 使用 netstatss 可以帮助排查网络连接问题,例如检查是否有异常的监听端口或未关闭的连接。