介绍
在本实验中,你将学习如何在 Linux 中使用 ss 命令来探索网络连接、分析套接字统计信息以及了解网络套接字的状态。ss 命令是一个强大的工具,它提供了有关 TCP、UDP 和 Unix 域套接字的详细信息,帮助你排查网络相关问题并监控系统的活动。
你将首先了解 ss 命令的用途和语法,包括可用于过滤和显示特定类型套接字的各种选项。然后,你将使用 ss 命令探索网络连接,学习如何识别活动连接、它们的本地和远程地址,以及与之关联的进程。最后,你将深入分析套接字统计信息和状态,从而更好地理解网络连接的性能和行为。
理解 ss 命令的用途和语法
在这一步骤中,你将学习 Linux 中 ss 命令的用途和语法。ss 命令是一个强大的工具,用于显示网络套接字的信息,包括 TCP、UDP 和 Unix 域套接字。
首先,让我们来探索 ss 命令的基本语法:
sudo ss [options]
ss 命令最常用的选项包括:
-t:显示 TCP 套接字-u:显示 UDP 套接字-x:显示 Unix 域套接字-n:不解析服务名称-a:显示所有套接字(监听和非监听)-l:仅显示监听中的套接字-p:显示使用套接字的进程
让我们通过一些示例来更好地理解 ss 命令:
sudo ss -t
示例输出:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 4096 127.0.0.1:6379 0.0.0.0:*
ESTAB 0 0 172.17.0.2:36578 172.17.0.1:22
此命令显示所有 TCP 套接字的信息,包括连接状态、接收和发送的字节数、本地和远程地址以及使用的端口。
sudo ss -u
示例输出:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:*
UNCONN 0 0 172.17.0.2:41378 8.8.8.8:53
此命令显示所有 UDP 套接字的信息,包括本地和远程地址及端口。
sudo ss -x
示例输出:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 4096 /run/dbus/system_bus_socket *:*
LISTEN 0 4096 /run/systemd/journal/stdout *:*
此命令显示所有 Unix 域套接字的信息,这些套接字用于同一系统内的进程间通信。
通过理解 ss 命令的用途和语法,你可以有效地分析和排查 Linux 系统中的网络连接问题。
使用 ss 命令探索网络连接
在这一步骤中,你将学习如何使用 ss 命令来探索和分析 Linux 系统中的网络连接。
首先,让我们显示所有活动的网络连接:
sudo ss -a
示例输出:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 4096 127.0.0.1:6379 0.0.0.0:*
ESTAB 0 0 172.17.0.2:36578 172.17.0.1:22
UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:*
UNCONN 0 0 172.17.0.2:41378 8.8.8.8:53
此命令显示所有活动的套接字,包括监听和非监听套接字。
要仅显示监听中的套接字,可以使用 -l 选项:
sudo ss -l
示例输出:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 4096 127.0.0.1:6379 0.0.0.0:*
LISTEN 0 4096 /run/dbus/system_bus_socket *:*
LISTEN 0 4096 /run/systemd/journal/stdout *:*
此命令显示系统中所有正在监听的套接字,这些套接字正在等待传入连接。
要显示使用特定套接字的进程,可以使用 -p 选项:
sudo ss -ltp
示例输出:
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 4096 127.0.0.1:6379 0.0.0.0:* users:(("redis-server",pid=520,fd=6))
LISTEN 0 4096 /run/dbus/system_bus_socket *:* users:(("dbus-daemon",pid=518,fd=10))
LISTEN 0 4096 /run/systemd/journal/stdout *:* users:(("systemd-journal",pid=516,fd=13))
此命令显示每个监听套接字所使用的进程 ID 和进程名称。
通过探索 ss 命令的输出,你可以深入了解 Linux 系统中的网络连接,这对于故障排查和监控非常有用。
使用 ss 命令分析套接字统计信息和状态
在这一步骤中,你将学习如何使用 ss 命令来分析 Linux 系统中的套接字统计信息和状态。
首先,让我们显示有关 TCP 套接字的详细信息:
sudo ss -t -i
示例输出:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 172.17.0.2:36578 172.17.0.1:22
cubic wscale:7,7 rto:200 rtt:0.025/0.011 ato:40 mss:1460 pmtu:1500 rcvmss:1460 advmss:1460 cwnd:10 bytes_acked:1392 bytes_received:0 segs_out:18 segs_in:1 send 1.00Mbps rcv_space:29200
LISTEN 0 4096 127.0.0.1:6379 0.0.0.0:*
cubic wscale:7,7 rto:200 rtt:0.025/0.011 ato:40 mss:536 pmtu:1500 rcvmss:536 advmss:1460 cwnd:10 bytes_acked:1392 bytes_received:0 segs_out:18 segs_in:1 send 1.00Mbps rcv_space:29200
此命令显示每个 TCP 套接字的详细信息,包括套接字状态、发送和接收队列大小、本地和远程地址,以及各种套接字统计信息,例如拥塞控制算法、窗口缩放、往返时间等。
要显示所有套接字的状态,可以使用带有 -o 选项的 ss 命令:
sudo ss -o
示例输出:
State Recv-Q Send-Q Local Address:Port Peer Address:Port Timer
ESTAB 0 0 172.17.0.2:36578 172.17.0.1:22 timer:(keepalive,14sec,0)
LISTEN 0 4096 127.0.0.1:6379 0.0.0.0:* timer:(timewait,60.0)
UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:* timer:(off,0)
UNCONN 0 0 172.17.0.2:41378 8.8.8.8:53 timer:(off,0)
此命令显示所有套接字的状态,包括每个套接字的计时器信息。
通过分析带有 -t -i 和 -o 选项的 ss 命令输出,你可以更深入地了解 Linux 系统中的网络连接,这对于故障排查和性能优化非常有用。
总结
在本实验中,你首先学习了 Linux 中 ss 命令的用途和语法。ss 命令是一个强大的工具,用于显示网络套接字的信息,包括 TCP、UDP 和 Unix 域套接字。你探索了 ss 命令的常见选项,例如 -t 用于 TCP 套接字,-u 用于 UDP 套接字,以及 -x 用于 Unix 域套接字。你还学习了如何使用 ss 命令显示网络连接的详细信息,包括连接状态、接收和发送的字节数,以及本地和远程地址及端口。
接下来,你学习了如何使用 ss 命令分析套接字统计信息和状态。ss 命令提供了有关当前网络连接状态的丰富信息,这对于排查和监控网络问题非常有用。



