网络端口与协议速查
端口为什么要分段、80 与 443 之外还有哪些常用服务、TCP 与 UDP 各自适合什么,以及「端口被占用」该怎么排查。
端口是同一台机器上区分不同服务的编号——IP 地址负责「找到哪台机器」,端口负责「找到机器上的哪个服务」。所以一个 IP 上可以同时跑网站、数据库和远程登录,靠的就是端口号把它们分开。
日常遇到的端口问题多是两类:一类是「这个端口是干什么的」,另一类是「这个端口被谁占了」。前者查对照表就能解决,后者需要理解端口是「进程在监听」而不是物理存在,才能顺着进程往下查。
1端口的三段范围
端口号是 16 位无符号整数,范围 0 到 65535。IANA 把它按用途分成三段,理解分段有助于判断「这个端口能不能随便用」。
| 范围 | 名称 | 用途 | 注意事项 |
|---|---|---|---|
| 0 – 1023 | 系统端口(Well-known) | 分配给最核心的基础服务,如 22、80、443 | 在 Unix 类系统上监听这些端口需要管理员权限 |
| 1024 – 49151 | 注册端口(Registered) | 由 IANA 登记给具体应用,如 3306 MySQL、6379 Redis | 多数中间件与数据库默认使用这一段 |
| 49152 – 65535 | 动态 / 私有端口 | 客户端发起连接时由系统临时分配的本机端口 | 不需要登记,用完即释放 |
| 特殊值 0 | 保留 | 表示「由系统选择一个可用端口」 | 只在编程接口里出现,不会作为实际通信端口 |
| 常用习惯 | 开发场景 | 3000、8000、8080 等常被开发框架默认占用 | 同一台机器上同时跑多个项目时容易冲突 |
「端口冲突」通常发生在开发环境:两个项目都想用 3000,或者上次的服务没退干净。生产环境的服务端口应显式配置,不要依赖框架默认值——默认端口被别的服务抢占是很常见的上线翻车原因。
2常用服务端口对照
下表列出最常被问到的服务端口。带 S 后缀的(如 HTTPS、IMAPS)表示该协议的加密版本,通常成对出现。
| 端口 | 协议 / 服务 | 传输层 | 说明 |
|---|---|---|---|
20 / 21 | FTP | TCP | 21 传控制命令,20 传数据(被动模式改用随机端口) |
22 | SSH / SFTP | TCP | 远程登录与安全文件传输,运维最常用的端口 |
23 | Telnet | TCP | 明文远程登录,因不安全基本已被 SSH 取代 |
25 | SMTP | TCP | 邮件发送,多数机房封禁直连以抑制垃圾邮件 |
53 | DNS | UDP / TCP | 查询默认走 UDP,响应过大或区域传送时改用 TCP |
67 / 68 | DHCP | UDP | 服务器监听 67,客户端从 68 发起 |
80 | HTTP | TCP | 明文网页访问,已逐步被强制跳转到 443 |
110 / 995 | POP3 | TCP | 收信(下载式),995 为加密版本 POP3S |
123 | NTP | UDP | 时间同步,服务器校时使用 |
143 / 993 | IMAP | TCP | 收信(同步式),993 为加密版本 IMAPS |
389 / 636 | LDAP | TCP | 目录服务认证,636 为加密版本 LDAPS |
443 | HTTPS | TCP | 加密网页访问,现代网站的默认入口 |
445 | SMB | TCP | Windows 文件共享,因历史上被蠕虫利用而在公网被大量封禁 |
587 / 465 | SMTP 提交 | TCP | 客户端提交邮件用,465 为隐式加密版本 |
1433 | SQL Server | TCP | 微软数据库默认端口 |
1521 | Oracle | TCP | Oracle 监听器默认端口 |
3306 | MySQL / MariaDB | TCP | 最常见的关系型数据库端口 |
3389 | RDP | TCP | Windows 远程桌面,暴露公网易被暴力破解 |
5432 | PostgreSQL | TCP | PostgreSQL 默认端口 |
5900 | VNC | TCP | 远程桌面协议,从 5900 起按显示器编号递增 |
6379 | Redis | TCP | 内存数据库,未设密码时暴露公网极其危险 |
8080 / 8443 | HTTP / HTTPS 备用 | TCP | 代理、测试环境与内网服务常用 |
27017 | MongoDB | TCP | 文档数据库默认端口 |
数据库与缓存端口(`3306`、`6379`、`27017`、`1433`)绝不应直接暴露到公网。正确做法是只监听内网地址,或通过 SSH 隧道 / 跳板机访问。暴露在公网的数据库端口会在几小时内被扫描到并尝试弱口令。
3TCP 与 UDP 差在哪
端口属于传输层,而传输层最主要的两套协议是 TCP 与 UDP。同一个端口号在两种协议下是相互独立的——DNS 就是同时用 53 的 TCP 与 UDP。
| 对比项 | TCP | UDP |
|---|---|---|
| 连接方式 | 面向连接,先三次握手再传数据 | 无连接,直接发包 |
| 可靠性 | 保证送达、有序、不重复,丢失会重传 | 不保证送达与顺序,丢了不补 |
| 开销与速度 | 头部更大、握手与确认带来额外往返,时延略高 | 头部小、无握手,时延低、吞吐高 |
| 典型用途 | 网页、文件传输、邮件、远程登录 | DNS 查询、视频直播、语音通话、游戏 |
| 现代特例 | HTTP/1.1 与 HTTP/2 基于 TCP | HTTP/3 基于 QUIC,跑在 UDP 的 443 上 |
| 拥塞控制 | 内建拥塞控制,网络变差时自动降速 | 没有内建机制,需应用层自己实现(QUIC 已补齐) |
「UDP 不可靠」不等于「UDP 不好用」。视频通话宁可丢帧也不要等重传,DNS 一次查询失败重发一次比等握手更划算——选择依据是「丢一点数据能不能接受」,而不是哪个听起来更高级。
4端口占用怎么排查
启动服务时报「端口已被占用」,本质是已有进程在监听同一个地址与端口。思路是「先看谁占着,再决定是换端口还是结束进程」。
- 先确认报错端口
- 报错信息里通常会写明端口号(如
address already in use :::3000),也可能前后端各报一次 - 在系统里查监听进程
- Windows 用
netstat -ano | findstr :3000找到 PID,再到任务管理器或tasklist里核对进程名 - 结束或改配置
- 确认是废弃进程就结束它;如果是另一个正常服务,改自己服务的端口更稳妥
- 区分协议
- 同一个端口号在 TCP 与 UDP 上是独立的,只占 TCP 的端口不会与只占 UDP 的服务冲突
- 注意地址绑定
- 监听
127.0.0.1:3000与监听0.0.0.0:3000会冲突,但只绑定回环地址的服务不会被外部访问到 - 容器与代理的干扰
- 端口转发、Docker 映射、反向代理都会占用端口,排查时把这一层也算进去
5四个高频误区
- 端口是物理存在的
- 端口只是传输层协议头里的一个数字,没有任何物理形态。所谓「开放端口」指的是「有进程在监听它」
- 改了端口就安全了
- 把 SSH 从
22改成高位端口只是减少了被扫描命中的概率,真正的安全来自密钥认证、失败锁定与访问控制,而不是换个号 - 一个端口只能跑一个服务
- 同一个端口上不能有两个进程同时监听同一地址,但通过反向代理或虚拟主机,可以在
443后面挂很多个不同的网站 - 端口通了服务就正常
- 端口可连通只说明「有进程在听」,不代表应用逻辑正常。健康检查要请求具体的业务接口,而不是只测端口
看完就能用的站内工具
全部工具总览 →130+常用TCP/UDP端口一站对照,含服务名、协议、说明、风险标注,支持搜索筛选
在线计算IP地址子网信息,包括网络地址、广播地址、可用IP范围、可用主机数、子网划分等,支持CIDR表示法,附带32位地址块可视化与网络/广播地址范围示意图,网络工程师必备工具
9大公共DNS速查与配置,支持阿里/DNSPod/Cloudflare等,一键复制IPv4/IPv6/DoH/DoT
在线解析 PEM 格式的 SSL 证书,直接读出序列号、版本、签名算法、生效与失效时间、颁发者与主体通用名,并自动计算剩余有效天数与到期风险,全程在浏览器本地解码不上传。
关于「网络端口与协议速查」的常见问题
80 和 443 端口有什么区别?
80 是 HTTP 的默认端口,数据明文传输;443 是 HTTPS 的默认端口,在 TLS 加密通道里传输。访问 http://example.com 时浏览器默认连 80,访问 https://example.com 时默认连 443,所以平时看不到端口号是因为用了默认值。现在的主流做法是在 80 上部署一个跳转规则,把所有请求 301 重定向到 443,这样用户即使输入 http 也能安全访问,同时避免同一份内容被搜索引擎当成两个页面收录。
TCP 和 UDP 该怎么选?
判断标准是「丢失一部分数据能不能接受」。TCP 保证送达、有序、不重复,代价是握手与确认带来的额外延迟,适合网页、文件、邮件这类不能丢数据的场景;UDP 不保证送达,但开销小、延迟低,适合视频通话、直播、游戏这类「宁可丢一帧也别卡住」的场景。DNS 查询默认走 UDP 就是这个道理——一次查询失败重发一次,比建立连接更快。现代协议也在融合:HTTP/3 用 UDP 承载 QUIC,在 UDP 之上自己实现了可靠性,兼顾两者的优点。
端口被占用怎么查是哪个程序在用?
Windows 上执行 netstat -ano | findstr :端口号,输出最后一列是进程 PID,再用 tasklist | findstr PID 或任务管理器核对进程名;macOS 与 Linux 上可以用 lsof -i :端口号 或 ss -lntp。查到进程后有两种处理:如果是上次没退干净的残留进程,直接结束它;如果确实是另一个正常服务在用,改自己服务的监听端口更稳妥,不要贸然杀掉别人的进程。还要注意容器端口映射与反向代理也会占用端口,排查时把这一层算进去。
把 SSH 端口从 22 改掉能提高安全性吗?
只能算「降噪」,不能算「加固」。公网上有大量自动化扫描盯着 22 端口,改成高位端口后日常日志里的爆破尝试会明显减少,但针对性扫描依然能找到你的服务。真正决定安全的是认证方式与策略:禁用密码登录改用密钥、关闭 root 直接登录、配置失败次数锁定、限制可登录的源地址。把这些做到位之后,端口号改不改只影响日志有多吵,不影响能不能被攻破。
继续查:相关内容
全部速查 →内容说明:本页速查数据由本站自行整理,事实性内容以对应官方规范与文档为准,未复制第三方速查表或百科的表述。数据最后核对日期:2026-10-05。若发现错误或已更新的标准,欢迎通过页脚反馈入口告知。
速查在线工具箱