Linux系统如何查看当前网络连接的详细状态信息?

在Linux系统中,查看网络连接是日常运维和故障排查的核心操作之一,通过分析连接状态可以定位端口占用、服务异常、网络攻击等问题,Linux提供了多种命令工具,从基础到进阶,满足不同场景的需求,以下将详细介绍常用命令的使用方法、参数及适用场景。

linux 如何查看连接

ss命令:高效查看网络连接

ss(Socket Statistics)是Linux推荐使用的网络连接查看工具,相较于传统netstatss基于Netlink协议与内核通信,查询速度更快,尤其在高并发场景下优势明显。

常用参数及功能

参数 功能 示例
-t 显示TCP连接 ss -t
-u 显示UDP连接 ss -u
-l 仅显示监听状态的连接 ss -lt
-a 显示所有连接(包括监听和非监听) ss -ta
-n 以数字形式显示地址和端口(不解析域名/服务名) ss -tn
-p 显示连接对应的进程ID和进程名 ss -tulp
-4/-6 仅显示IPv4/IPv6连接 ss -4t

实用示例

  • 查看所有TCP连接(包括进程信息):ss -tulp
  • 查看监听状态的UDP端口:ss -lu
  • 查看与特定IP的连接:ss -tn 'dst 192.168.1.100'

netstat命令:传统连接查看工具

netstat是早期Linux系统标配的连接查看工具,虽然部分新版本系统已默认不安装,但在兼容性要求高的场景中仍被使用,其参数与ss类似,但底层依赖/proc文件系统,查询效率较低。

常用参数及功能

参数 功能 示例
-t TCP连接 netstat -t
-u UDP连接 netstat -u
-l 监听状态 netstat -lt
-a 所有连接 netstat -ta
-n 数字形式 netstat -tn
-p 进程信息 netstat -tulp
-c 持续刷新输出(类似top netstat -tc

示例

  • 查看所有监听端口及进程:netstat -tulpn
  • 查看TCP连接状态统计:netstat -ta | awk '{print $6}' | sort -u

lsof命令:以文件视角查看连接

lsof(List Open Files)用于列出系统打开的文件,由于Linux中网络连接被抽象为“文件”,因此可通过lsof查看连接对应的进程、用户及文件描述符信息。

linux 如何查看连接

常用参数及功能

参数 功能 示例
-i 显示网络连接 lsof -i
-i :端口号 显示指定端口的连接 lsof -i :80
-P 不解析端口号为服务名 lsof -i -P
-n 不解析IP地址为域名 lsof -i -n
-u 用户名 显示指定用户的连接 lsof -i -u nginx
-p PID 显示指定进程的连接 lsof -i -p 1234

示例

  • 查看80端口的所有连接:lsof -i :80
  • 查看Nginx进程的网络连接:lsof -i -p $(pgrep nginx)

tcpdump命令:抓包分析连接

tcpdump是强大的网络抓包工具,可用于实时分析网络数据包,适用于深层排查连接异常(如数据包丢失、协议错误)。

常用参数及功能

参数 功能 示例
-i 网卡名 指定抓包网卡 tcpdump -i eth0
-n 不解析域名/端口 tcpdump -n
-c 数量 抓取指定数量数据包后退出 tcpdump -c 100
port 端口号 过滤端口号 tcpdump -n port 80
host IP 过滤IP地址 tcpdump -n host 192.168.1.100
tcp/udp 过滤协议 tcpdump -n tcp

示例

  • 抓取eth0网卡上所有80端口的TCP数据包:tcpdump -i eth0 -n tcp port 80
  • 抓取与目标IP的所有通信数据包:tcpdump -i eth0 -n host 8.8.8.8

其他方法:直接读取内核连接信息

Linux内核将网络连接信息存储在/proc/net/目录下,可直接查看原始数据(适合脚本处理):

  • /proc/net/tcp:TCP连接信息(十六进制格式)
  • /proc/net/udp:UDP连接信息
  • /proc/net/tcp6:IPv6 TCP连接

示例

  • 查看TCP连接状态:cat /proc/net/tcp | awk '{print $1, $4, $6}'
  • 快速查看连接:优先使用ss(如ss -tulp),高效且信息全面。
  • 兼容旧系统:使用netstat,功能与ss类似但效率较低。
  • 进程级排查:用lsof定位连接对应的进程(如lsof -i :80)。
  • 深度抓包分析:用tcpdump捕获数据包,定位协议层问题。
  • 脚本自动化:直接读取/proc/net/文件,避免依赖外部命令。

FAQs

Q1:ss和netstat查看网络连接有什么区别?哪个更推荐使用?
A:ss基于Netlink协议与内核通信,查询速度更快,尤其在高并发场景下(如数万连接)性能显著优于netstatnetstat依赖/proc文件系统,需遍历所有内核数据,效率较低,新版本Linux系统(如CentOS 7+、Ubuntu 18.04+)默认已集成ss,推荐优先使用ss,仅在需兼容旧系统时使用netstat

linux 如何查看连接

Q2:如何查看某个特定进程(如Nginx)的网络连接情况?
A:可通过以下两种方式实现:

  1. 使用lsoflsof -i -p $(pgrep nginx),其中pgrep nginx获取Nginx进程PID,-i -p筛选该进程的网络连接。
  2. 使用ssss -tulpn | grep nginx,通过进程名过滤连接信息,显示端口、协议及进程详情。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/23486.html

(0)
酷番叔酷番叔
上一篇 2025年9月15日 19:30
下一篇 2025年9月15日 19:40

相关推荐

  • Linux如何查询WebSocket连接状态?

    在Linux环境下查看WebSocket相关状态、连接或流量,通常需要结合系统工具、网络监控工具和特定协议分析手段,WebSocket作为一种基于TCP的全双工通信协议,其排查涉及进程状态、端口监听、网络连接、数据流量等多个维度,以下是具体方法和工具的使用详解,查看WebSocket服务进程与端口监听状态Web……

    2025年10月8日
    7300
  • Linux环境下如何彻底卸载R软件并清理残留文件?

    在Linux系统中卸载R软件需要根据其安装方式选择不同的方法,常见的安装方式包括通过系统包管理器(如apt、yum/dnf)安装或从源码编译安装,不同安装方式对应的卸载步骤差异较大,需分别处理,以下是详细的卸载流程及注意事项,卸载前准备工作在开始卸载前,建议完成以下准备工作,避免误操作导致数据丢失或系统异常:确……

    2025年9月18日
    8300
  • Linux环境下数据库备份的详细方法与操作步骤有哪些?

    在Linux系统中,数据库备份是保障数据安全的核心操作,无论是应对硬件故障、误操作还是恶意攻击,完善的备份机制都能快速恢复数据,降低业务损失,Linux环境下主流数据库(如MySQL、PostgreSQL、MongoDB等)均有成熟的备份工具和方法,需根据数据库类型、业务需求(如恢复时间目标RTO、恢复点目标R……

    2025年9月9日
    6500
  • 底层驱动交互核心方法哪三种?

    在Linux系统中,Qt应用程序操作底层驱动函数的核心原理是通过用户空间与内核空间的交互实现的,由于Qt本身是用户空间框架,无法直接访问内核驱动,因此需借助Linux提供的标准化接口,以下是具体实现方法和关键技术:设备文件操作(/dev目录)Linux将硬件设备抽象为文件(如 /dev/ttyS0、/dev/i……

    2025年7月6日
    11200
  • Linux中如何打开终端?

    Linux系统以其稳定性和灵活性著称,而终端(Terminal)作为Linux的核心工具,是用户与系统交互的重要桥梁,通过终端,用户可以执行命令行指令、管理系统文件、运行脚本程序、排查系统问题等,相较于图形界面,终端操作更高效、更直接,尤其对于服务器管理和高级用户而言,终端是必不可少的技能,在Linux系统中如……

    2025年9月21日
    7100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信