在 Linux 系统中,端口(Port) 是网络通信中的一个逻辑概念,用于标识特定的进程或服务,它不是物理硬件,而是操作系统内核中用于区分不同网络流量的“门牌号”。
以下是关于 Linux 端口定义的详细解析:
基本概念
- 作用:端口允许一台主机上的多个网络服务同时运行,Web 服务器(80/443)、SSH 服务(22)和邮件服务(25)都可以通过不同的端口在同一台服务器上运行。
- 范围:TCP/UDP 端口号是一个 16 位无符号整数,因此范围是 0 到 65535。
- 协议关联:端口通常与 TCP 或 UDP 协议一起使用,同一个端口号在 TCP 和 UDP 中可以独立存在(TCP 80 和 UDP 80 是两个不同的端点)。
端口分类
根据端口号的范围和用途,端口分为三类:
| 类别 | 范围 | 说明 |
|---|---|---|
| 熟知端口(Well-Known Ports) | 0 – 1023 | 预留给系统核心服务或标准协议,如: – 22
: SSH |
| 注册端口(Registered Ports) | 1024 – 49151 | 分配给特定应用程序或服务,如: – 3306: MySQL– 5432: PostgreSQL– 8080: 备用 HTTP |
| 动态/私有端口(Dynamic/Private Ports) | 49152 – 65535 | 通常用于客户端临时连接(Ephemeral Ports),操作系统在发起连接时自动分配。 |
注意:从 0 到 1023 的端口称为“特权端口”,只有 root 用户 或具有
CAP_NET_BIND_SERVICE权限的进程才能绑定这些端口。
如何查看 Linux 中的端口状态
(1)查看正在监听的端口
# 使用 ss 命令(推荐,现代 Linux 系统) sudo ss -tuln # 或使用 netstat 命令(较旧系统) sudo netstat -tuln
-t: TCP 端口-u: UDP 端口-l: 监听状态(Listening)-n: 以数字形式显示地址和端口(不解析主机名)
(2)查看特定端口的占用进程
# 查看端口 80 被哪个进程占用 sudo lsof -i :80 # 或使用 ss 查看 sudo ss -tulnp | grep :80
-p: 显示进程信息(PID 和程序名)
(3)检查防火墙开放的端口
# 如果使用 firewalld sudo firewall-cmd --list-ports # 如果使用 ufw (Ubuntu/Debian) sudo ufw status # 如果使用 iptables sudo iptables -L -n -v
如何开放或关闭端口
(1)使用 firewalld(CentOS/RHEL/Fedora)
# 永久开放端口 8080 sudo firewall-cmd --permanent --add-port=8080/tcp # 重载配置使其生效 sudo firewall-cmd --reload
(2)使用 ufw(Ubuntu/Debian)
# 开放端口 8080 sudo ufw allow 8080/tcp # 关闭端口 8080 sudo ufw deny 8080/tcp
(3)使用 iptables(通用,但配置复杂)
# 允许进入端口 8080 的 TCP 流量 sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT # 保存规则(不同发行版命令不同) sudo iptables-save > /etc/iptables/rules.v4
常见注意事项
- 权限问题:绑定 1024 以下端口需要 root 权限。
- 端口冲突:如果两个服务尝试绑定同一个端口,后启动的服务会失败,并报错
Address already in use。 - 安全性:
- 不要暴露不必要的端口。
- 使用防火墙限制来源 IP。
- 定期更新服务软件以防止漏洞利用。
- 端口转发:Linux 可通过
iptables或socat实现端口转发,将外部请求重定向到内部服务。
Linux 中的端口是网络通信的逻辑标识,范围 0–65535。
- 0–1023:系统保留,需 root 权限。
- 1024–49151:注册服务端口。
- 49152–65535:动态临时端口。
通过 ss、netstat、lsof 等工具可以查看和管理端口,通过 firewalld、ufw 或 iptables 控制端口访问。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/485997.html



