找回密码
 立即注册
首页 业界区 安全 理解 netstat

理解 netstat

系味 5 小时前
分享学习和经验,欢迎指正。
含 AI 告知信息。
简单描述一下 netstat,就是可以查看本机网络服务状况,如监听哪些网络端口、端口向哪些网络开放、与其他设备的通信连接状态等等。
笔者平时调试一般都是用到 netstat -nap,所以基于此列举和简单解析。

  • -n:直接输出 IP 地址而不通过域名服务器。
  • -a:输出所有连接中的 Socket。
  • -p:输出正在使用 Socket 的程序识别码和程序名称。
了解更多命令选型:https://www.runoob.com/linux/linux-comm-netstat.html
netstat -nap 部分打印
  1. $ netstat -nap
  2. Active Internet connections (servers and established)
  3. Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
  4. tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -
  5. tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      -
  6. tcp        0      0 10.255.255.254:53       0.0.0.0:*               LISTEN      -
  7. tcp        0      0 172.20.227.242:2222     172.20.224.1:58938      ESTABLISHED -
  8. tcp6       0      0 :::445                  :::*                    LISTEN      -
  9. udp        0      0 0.0.0.0:49017           0.0.0.0:*                           -
  10. udp        0      0 127.0.0.53:53           0.0.0.0:*                           -
  11. udp        0      0 10.255.255.254:53       0.0.0.0:*                           -
  12. udp6       0      0 :::111                  :::*                                -
  13. udp6       0      0 ::1:323                 :::*                                -
  14. Active UNIX domain sockets (servers and established)
  15. Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
  16. unix  2      [ ]         DGRAM      CONNECTED     7438     -
  17. unix  2      [ ]         DGRAM                    27       -                    /var/run/chrony/chronyd.sock
  18. unix  2      [ ACC ]     STREAM     LISTENING     1412     -                    /mnt/wslg/PulseAudioRDPSink
  19. unix  3      [ ]         STREAM     CONNECTED     1404     -
  20. unix  2      [ ]         DGRAM      CONNECTED     12335    -
  21. unix  2      [ ]         DGRAM                    9394     697/systemd          /run/user/1000/systemd/notify
复制代码
输出主要分为两部分:Active Internet connections 和 Active UNIX domain sockets,分别管理着不同类型的通信渠道。

  • Active Internet connections 活跃网络连接。
    这部分显示的是通过网络服务进行的连接,既包括与其他计算机的通信,也包括本机内部通过环回地址(如127.0.0.1)的连接。
    Active Internet connections 相关输出
    1. Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    2. tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -
    3. tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      -
    4. tcp        0      0 172.20.227.242:2222     172.20.224.1:58938      ESTABLISHED -
    5. tcp6       0      0 :::445                  :::*                    LISTEN      -
    6. udp        0      0 0.0.0.0:49017           0.0.0.0:*                           -
    7. udp        0      0 127.0.0.53:53           0.0.0.0:*                           -
    8. udp6       0      0 ::1:323                 :::*                                -
    复制代码

    • Proto:通信连接使用的协议。
      有 tcp/tcp6/udp/udp6 这四种,后缀 6 的区别就是基于 IPv4 或 IPv6,通过后面 IP 地址的格式也能看出来。
    • Recv-Q​ 与 Send-Q:表示接收和发送队列的字节数。
      这两个数字通常应为0。如果不是,则表明可能有数据包在队列中堆积,是性能或连接问题的潜在信号。
    • Local Address:本地套接字绑定的 IP 地址和端口号。

      • 0.0.0.0: 或 ::: 表示使用 port 端口提供的服务允许任意 IP 地址访问。
      • 127.0.0.53: 或 ::1: 表示服务只允许本机回环地址的 IP 访问。

    • Foreign Address:远程对端套接字的 IP 地址和端口号,建立连接后会显示具体 IP 和端口,监听时通常显示 *:*。
    • State:连接状态。

      • LISTEN:监听中,等待连接请求。
      • ESTABLISHED:连接已经成功建立,正在进行数据通信。这是正常的活跃连接状态。
      • TIME_WAIT:表示连接正在等待关闭以处理网络中残留的数据包。短时间内出现大量此状态可能需要注意。
      • ...

    • PID/Program name:使用套接字的程序识别码和程序名称。
    补充一下回环地址的概念:
    任何支持 TCP/IP 协议栈的设备,其操作系统内部都预设了一个虚拟的“回环接口”和对应的 IP 地址范围,这使得设备天生就是回环地址的一员。
    此外,一个设备要“算作”回环地址的一员,通常具备以下一个或多个核心特征:
    (1)拥有虚拟回环接口:这是最根本的特征。无论是操作系统自动创建的 lo,还是网络设备上手动配置的 Loopback0,它们都是纯软件实现的虚拟接口,不依赖任何物理硬件。只要设备操作系统在运行,这个接口的状态就永远是活跃的(UP)。
    (2)使用特定的 IP 地址段:在 IPv4 中,整个 127.0.0.0/8​ 网段(从 127.0.0.1 到 127.255.255.254)都被保留用于回环测试。发送到这些地址的数据包会立刻被操作系统“环回”给本机,绝不会通过物理网卡进入外部网络。IPv6的回环地址固定为 ::1。
    (3)数据流向为内部环回:这是判断的关键。发送到回环地址的数据,其流转路径完全在设备内部的网络协议栈中完成,不经过物理网络接口。这也是“环回”(Loopback)一词的由来。

  • Active UNIX domain sockets 活跃 UNIX 域套接字。
    这部分显示的是通过 UNIX 域套接字进行的本机进程间通信,数据不经过网络协议栈,因此效率更高。
    Active UNIX domain sockets 相关输出
    1. Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
    2. unix  2      [ ]         DGRAM      CONNECTED     7438     -
    3. unix  2      [ ]         DGRAM                    27       -                    /var/run/chrony/chronyd.sock
    4. unix  2      [ ACC ]     STREAM     LISTENING     1412     -                    /mnt/wslg/PulseAudioRDPSink
    复制代码

    • Proto:协议,此处始终是 unix。
    • RefCnt:引用计数,表示通过此套接字连接的进程数量。
    • Flags:套接字标志。常见的 ACC 表示套接字处于监听状态并接受连接。
    • Type:套接字类型。主要是 STREAM(面向连接,类似 TCP)和 DGRAM(无连接,类似 UDP)。
    • State:当前状态。如 LISTENING(监听)、CONNECTED(已连接)、DISCONNECTING(断开中)等。
    • PID/Program name:进程标识符​和程序名称。例如 32762/java,表示 PID 为 32762 的 Java 程序正在使用此套接字。
    • Path:最关键的一列,表示套接字在文件系统中的路径名。许多重要服务和守护进程(如 Docker、D-Bus)通过特定的 socket 文件进行通信。


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册