linux 查看端口(长文解析)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战(已更新的所有项目都能学习) / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新开坑项目:《Spring AI 项目实战》 正在持续爆肝中,基于 Spring AI + Spring Boot 3.x + JDK 21..., 点击查看 ;
  • 《从零手撸:仿小红书(微服务架构)》 已完结,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;演示链接: http://116.62.199.48:7070 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观

在 Linux 系统开发与运维中,端口管理是网络服务配置的核心环节之一。无论是搭建 Web 服务器、运行数据库,还是调试网络应用,开发者都需要实时掌握端口的使用状态。Linux 查看端口这一操作看似简单,但其背后涉及网络协议、进程管理、系统监控等多维度知识。本文将从基础命令入手,逐步深入讲解如何高效查看、分析和管理 Linux 系统中的端口资源,帮助开发者建立完整的网络状态监控能力。


一、端口的基本概念与作用

1. 端口的定义与功能

端口(Port)是操作系统为网络通信分配的逻辑地址,类似于快递站的分拣编号。例如,HTTP 服务默认使用 80 端口,FTP 使用 21 端口,每个端口对应特定的服务或进程。当数据包到达服务器时,系统会根据端口号将流量分发到对应的程序。

2. 端口的分类与常见用途

端口范围类型典型用途示例
0–1023系统保留端口SSH(22)、HTTP(80)
1024–65535用户端口自定义服务、数据库(3306)

形象比喻

系统保留端口如同高速公路的主干道,专供核心服务使用;用户端口则像城市支路,允许开发者自由分配,但需注意避免冲突。


二、基础命令:netstat 的使用与解析

1. netstat 命令详解

netstat 是 Linux 中老牌的网络状态分析工具,功能全面但参数较多。其核心语法为:

netstat [选项] [参数]  

常用参数与示例

  • 查看所有活动连接

    netstat -a  
    

    输出结果中 LISTEN 状态表示端口正在监听,ESTABLISHED 表示连接已建立。

  • 过滤特定协议与端口

    netstat -tulnp | grep 80  
    

    参数说明:

    • -t(TCP)、-u(UDP)、-n(数字显示端口而非服务名)、-l(监听端口)、-p(显示进程 PID 和名称)。

2. 输出结果解读

典型输出格式如下:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1027/sshd  
tcp6       0      0 :::80                   :::*                    LISTEN      1234/nginx  
  • Proto:协议类型(TCP/UDP)。
  • Local Address:本地 IP 地址与端口号(0.0.0.0 表示所有网络接口)。
  • PID/Program name:关联进程的标识,对排查问题至关重要。

三、进阶工具:ss 命令与 lsof 的应用场景

1. ss:更快的网络监控工具

ss(socket statistics)是 netstat 的现代化替代品,速度更快且功能更强大。其核心语法为:

ss [选项] [过滤条件]  

常用场景示例

  • 实时监控端口连接

    ss -tulnp --listening --processes  
    

    参数 --listening 仅显示监听端口,--processes 补充进程信息。

  • 按端口号过滤

    ss -l sport = :80  
    

    sport 表示源端口(Source Port)。

2. lsof:进程与端口的关联分析

lsof(List Open Files)不仅能查看端口,还能关联到具体进程。

lsof -i :端口号  

例如,检查 3306 端口(MySQL 默认端口)的占用情况:

lsof -i :3306  

输出结果会显示进程的 PID、用户、命令等信息,帮助快速定位服务进程。


四、实战案例:端口冲突排查与解决

1. 案例场景:端口被占用

假设开发者尝试启动一个 Web 服务,但提示端口 8080 被占用。此时可通过以下步骤排查:

步骤 1:确认端口占用者

netstat -tulnp | grep :8080  
ss -tulnp | grep :8080  

若输出类似以下内容:

tcp        0      0 0.0.0.0:8080          0.0.0.0:*               LISTEN      1234/java  

则说明端口被 PID 1234 的 Java 进程占用。

步骤 2:终止冲突进程

kill -9 1234  

其中 -9 表示强制终止进程。

2. 扩展场景:防火墙拦截

若端口未被占用却无法访问,可能是防火墙(如 iptablesfirewalld)阻止了流量。例如:

firewall-cmd --list-ports  
firewall-cmd --permanent --add-port=8080/tcp  
firewall-cmd --reload  

五、高级技巧与常见问题

1. 端口状态与协议类型

  • LISTEN:端口处于监听状态,等待连接。
  • ESTABLISHED:连接已建立,数据双向传输。
  • TIME_WAIT:连接关闭后的等待状态,避免数据残留。

协议对比

  • TCP:面向连接,可靠性高(如文件传输)。
  • UDP:无连接,速度快(如视频流)。

2. 常见问题解答

Q:如何批量查看多个端口状态?

A:使用 grep 通配符或 ss 的端口范围参数:

ss -tulnp 'sport >= :8000 and sport <= :9000'  

Q:如何远程查看另一台 Linux 主机的端口?

A:需确保目标主机允许 SSH 连接,并使用 ssh 执行命令:

ssh user@remote_host "netstat -tulnp"  

六、结论

掌握 Linux 查看端口 的核心命令与逻辑,是开发者高效运维网络服务的基础能力。从 netstat 的基础使用到 ss 的进阶技巧,再到结合 lsof 分析进程与端口的关联,开发者能够系统化地监控、诊断和优化网络资源。建议读者通过实际案例反复练习,例如搭建本地 Web 服务器并观察端口变化,逐步形成对网络通信的直观认知。

提示:定期使用 ss -tulnp 检查监听端口,可预防服务冲突或隐藏进程占用问题,保障系统稳定性。

最新发布