使用ss和netstat命令可查看Linux网络连接状态,其中ss因性能更优成为首选。通过ss -tulnp或netstat -tulnp可查看协议、本地/远程地址、端口、状态及进程信息;ss直接读取内核数据,效率更高,适合高并发场景。常用筛选技巧包括:ss -tulnp | grep ":80"查看特定端口,grep "nginx"定位进程连接,ss -t state established筛选已建立连接。关键状态包括:LISTEN(服务监听)、ESTABLISHED(连接正常)、CLOSE_WAIT(本地未关闭,可能程序缺陷)、TIME_WAIT(主动关闭方等待,防止旧包干扰)。这些状态帮助诊断服务不可达、资源耗尽等问题,是网络排查的核心依据。

在Linux系统中,要查看当前的网络连接状态,我们主要依赖两个核心命令:
netstat
ss
要查看Linux系统的网络连接状态,最直接且常用的方法是结合使用
netstat
ss
ss
使用 netstat
netstat
要查看所有TCP和UDP的监听端口和已建立连接,并显示对应的进程ID和程序名称,我通常会这样用:
netstat -tulnp
-t
-u
-l
-n
-p
使用 ss
ss
netstat
iproute2
netstat
与
netstat
ss -tulnp
这些选项的含义与
netstat
通过这两个命令,你可以看到诸如
Proto
Recv-Q
Send-Q
Local Address:Port
Foreign Address:Port
State
PID/Program name
netstat
ss
ss
说实话,在我刚接触Linux运维的时候,
netstat
netstat
/proc/net
而
ss
ss
ss
除了速度,
ss
netstat
netstat
ss
在实际工作中,我们往往不需要查看所有的网络连接,而是希望聚焦于某个特定的服务、端口或进程。这时候,简单的
grep
ss
netstat
筛选特定端口:
假设我想看看服务器上80端口(通常是HTTP服务)的连接情况。
使用
ss
ss -tulnp | grep ":80"
或者更精确地指定本地端口:
ss -tulnp sport = :80
sport
dport
dport = :80
筛选特定进程:
如果你知道某个应用的进程名称,比如
nginx
ss -tulnp | grep "nginx"
如果只知道进程ID(PID),比如PID是12345:
ss -tulnp | grep "pid=12345"
筛选连接状态:
有时候,我们可能只想看处于特定状态的连接,比如所有已建立(ESTABLISHED)的TCP连接:
ss -t state established
或者所有监听(LISTEN)状态的UDP连接:
ss -u state listening
这些组合拳用起来非常灵活,能帮助你快速定位问题,比如某个服务是不是真的在监听,或者某个进程是不是建立了不该有的外部连接等等。这比漫无目的地滚动屏幕查看所有连接要高效得多。
理解TCP连接的各种状态对于网络问题的诊断至关重要,它们就像是连接的生命周期阶段,每个状态都承载着特定的意义。我们最常看到的就是
LISTEN
ESTABLISHED
CLOSE_WAIT
TIME_WAIT
LISTEN (监听):这表示一个套接字正在等待传入的连接请求。通常是服务器进程绑定了一个端口,准备接收客户端的连接。如果你发现某个服务无法访问,首先要检查它对应的端口是否处于
LISTEN
ESTABLISHED (已建立):这是TCP连接的正常工作状态,表示客户端和服务器之间已经成功完成了三次握手,数据可以正常传输。大多数活跃的连接都应该处于这个状态。
CLOSE_WAIT (等待关闭):这个状态有点棘手,它表示远程主机(通常是客户端)已经关闭了连接,但本地主机(通常是服务器)还没有完全关闭它的套接字。这意味着本地应用程序没有及时调用
close()
CLOSE_WAIT
TIME_WAIT (时间等待):这是TCP连接关闭序列中的最后一个状态,由主动关闭连接的一方进入。它会持续一段时间(通常是2MSL,Maximum Segment Lifetime),目的是确保所有迟到的数据包都已在网络中消失,避免新连接收到旧数据包,并允许可靠地关闭连接。大量的
TIME_WAIT
TIME_WAIT
SYN_SENT (同步已发送):客户端发送了SYN包,正在等待服务器的SYN+ACK响应。如果长时间处于此状态,可能表示网络延迟高或服务器没有响应。
SYN_RECV (同步已接收):服务器收到了客户端的SYN包,并发送了SYN+ACK,正在等待客户端的ACK响应。如果大量连接卡在这个状态,可能是遭受了SYN洪泛攻击。
当你在排查问题时,例如发现服务器响应变慢,查看连接状态就非常有帮助。如果看到大量的
CLOSE_WAIT
TIME_WAIT
LISTEN
以上就是如何在Linux系统中查看网络连接状态?使用netstat和ss命令的详细教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号