网络端口与协议速查

5 个速查板块 · 关联 4 款站内工具 · 数据最后核对 2026-10-05

端口为什么要分段、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 / 21FTPTCP21 传控制命令,20 传数据(被动模式改用随机端口)
22SSH / SFTPTCP远程登录与安全文件传输,运维最常用的端口
23TelnetTCP明文远程登录,因不安全基本已被 SSH 取代
25SMTPTCP邮件发送,多数机房封禁直连以抑制垃圾邮件
53DNSUDP / TCP查询默认走 UDP,响应过大或区域传送时改用 TCP
67 / 68DHCPUDP服务器监听 67,客户端从 68 发起
80HTTPTCP明文网页访问,已逐步被强制跳转到 443
110 / 995POP3TCP收信(下载式),995 为加密版本 POP3S
123NTPUDP时间同步,服务器校时使用
143 / 993IMAPTCP收信(同步式),993 为加密版本 IMAPS
389 / 636LDAPTCP目录服务认证,636 为加密版本 LDAPS
443HTTPSTCP加密网页访问,现代网站的默认入口
445SMBTCPWindows 文件共享,因历史上被蠕虫利用而在公网被大量封禁
587 / 465SMTP 提交TCP客户端提交邮件用,465 为隐式加密版本
1433SQL ServerTCP微软数据库默认端口
1521OracleTCPOracle 监听器默认端口
3306MySQL / MariaDBTCP最常见的关系型数据库端口
3389RDPTCPWindows 远程桌面,暴露公网易被暴力破解
5432PostgreSQLTCPPostgreSQL 默认端口
5900VNCTCP远程桌面协议,从 5900 起按显示器编号递增
6379RedisTCP内存数据库,未设密码时暴露公网极其危险
8080 / 8443HTTP / HTTPS 备用TCP代理、测试环境与内网服务常用
27017MongoDBTCP文档数据库默认端口

数据库与缓存端口(`3306`、`6379`、`27017`、`1433`)绝不应直接暴露到公网。正确做法是只监听内网地址,或通过 SSH 隧道 / 跳板机访问。暴露在公网的数据库端口会在几小时内被扫描到并尝试弱口令。

3TCP 与 UDP 差在哪

端口属于传输层,而传输层最主要的两套协议是 TCP 与 UDP。同一个端口号在两种协议下是相互独立的——DNS 就是同时用 53 的 TCP 与 UDP。

对比项TCPUDP
连接方式面向连接,先三次握手再传数据无连接,直接发包
可靠性保证送达、有序、不重复,丢失会重传不保证送达与顺序,丢了不补
开销与速度头部更大、握手与确认带来额外往返,时延略高头部小、无握手,时延低、吞吐高
典型用途网页、文件传输、邮件、远程登录DNS 查询、视频直播、语音通话、游戏
现代特例HTTP/1.1 与 HTTP/2 基于 TCPHTTP/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 后面挂很多个不同的网站
端口通了服务就正常
端口可连通只说明「有进程在听」,不代表应用逻辑正常。健康检查要请求具体的业务接口,而不是只测端口

关于「网络端口与协议速查」的常见问题

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。若发现错误或已更新的标准,欢迎通过页脚反馈入口告知。