分享学习和经验,欢迎指正。
含 AI 告知信息。
简单描述一下 netstat,就是可以查看本机网络服务状况,如监听哪些网络端口、端口向哪些网络开放、与其他设备的通信连接状态等等。
笔者平时调试一般都是用到 netstat -nap,所以基于此列举和简单解析。
- -n:直接输出 IP 地址而不通过域名服务器。
- -a:输出所有连接中的 Socket。
- -p:输出正在使用 Socket 的程序识别码和程序名称。
了解更多命令选型:https://www.runoob.com/linux/linux-comm-netstat.html
netstat -nap 部分打印- $ netstat -nap
- Active Internet connections (servers and established)
- Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
- tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
- tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN -
- tcp 0 0 10.255.255.254:53 0.0.0.0:* LISTEN -
- tcp 0 0 172.20.227.242:2222 172.20.224.1:58938 ESTABLISHED -
- tcp6 0 0 :::445 :::* LISTEN -
- udp 0 0 0.0.0.0:49017 0.0.0.0:* -
- udp 0 0 127.0.0.53:53 0.0.0.0:* -
- udp 0 0 10.255.255.254:53 0.0.0.0:* -
- udp6 0 0 :::111 :::* -
- udp6 0 0 ::1:323 :::* -
- Active UNIX domain sockets (servers and established)
- Proto RefCnt Flags Type State I-Node PID/Program name Path
- unix 2 [ ] DGRAM CONNECTED 7438 -
- unix 2 [ ] DGRAM 27 - /var/run/chrony/chronyd.sock
- unix 2 [ ACC ] STREAM LISTENING 1412 - /mnt/wslg/PulseAudioRDPSink
- unix 3 [ ] STREAM CONNECTED 1404 -
- unix 2 [ ] DGRAM CONNECTED 12335 -
- 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 相关输出- Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
- tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
- tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN -
- tcp 0 0 172.20.227.242:2222 172.20.224.1:58938 ESTABLISHED -
- tcp6 0 0 :::445 :::* LISTEN -
- udp 0 0 0.0.0.0:49017 0.0.0.0:* -
- udp 0 0 127.0.0.53:53 0.0.0.0:* -
- 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 相关输出- Proto RefCnt Flags Type State I-Node PID/Program name Path
- unix 2 [ ] DGRAM CONNECTED 7438 -
- unix 2 [ ] DGRAM 27 - /var/run/chrony/chronyd.sock
- 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 文件进行通信。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|
|
|
|
|
相关推荐
|
|
|