常用端口大全

TCP/UDP 知名端口 + 含义 + 服务

418 次访问

常用端口大全

TCP/UDP 知名端口 + 服务名 · 点击复制

关于本工具

了解工具定位 · 使用场景 · 对比优势

使用场景

🔒

防火墙策略排查

企业安全运维人员在配置防火墙时,需要确定哪些端口必须开放、哪些必须关闭。例如内网 DNS 服务依赖 UDP 53 端口,Web 服务需要 TCP 80/443。本工具列出所有知名端口及对应服务,帮助运维人员快速核对策略白名单,避免因端口误封导致业务中断或因端口误开引入安全漏洞。

📡

网络故障快速定位

远程办公用户发现公司 VPN 连不上,IT 支持人员第一步需要排查端口是否可达。本工具提供 TCP/UDP 端口与服务的对照表,例如 VPN 常用 UDP 500/4500(IPsec)或 TCP 443(SSL VPN)。支持人员可以立即告知用户检查这些端口是否被本地防火墙或运营商封锁,缩短故障定位时间。

🛠

服务器初始安全加固

新上线的 Linux 服务器默认开放 22(SSH)、25(SMTP)、3306(MySQL)等端口,存在安全隐患。系统管理员使用本工具逐一审查端口用途,关闭不必要的服务(如 Telnet 23、FTP 21),仅保留业务必需端口。通过对照端口含义,确保每开一个端口都有明确理由,降低服务器被扫描攻击的风险。

🧪

渗透测试端口枚举

安全测试人员在授权渗透任务中,扫描到目标开放了 135(RPC)、445(SMB)、3389(RDP)等端口。本工具帮助测试人员快速判断这些端口对应的服务类型及潜在漏洞方向,例如 445 端口常与 EternalBlue 漏洞关联。测试人员无需记忆上千端口号,直接对照工具即可制定后续攻击面分析策略。

📚

网络工程师认证备考

备考 CCNA 或 HCIA 的学员需要记忆常见端口号及其服务名称,如 FTP 20/21、SSH 22、HTTP 80 等。本工具以清晰表格呈现端口号、协议类型、服务名称及简要含义,学员可快速查阅、反复对照,比翻阅教材更高效。考前冲刺时,还能通过工具自测自己是否记混了 TCP 和 UDP 的端口分配。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (PortChecker.co)传统方法 (命令行)
数据隐私纯浏览器,零上传,所有数据本地处理上传到服务器,存在日志记录完全本地,无网络传输
使用门槛打开网页即用,无需安装打开网页即用,无需安装需打开终端,记忆命令参数
处理速度1 秒内,即时渲染2-5 秒,含网络请求1-3 秒,取决于系统
离线可用完全离线,页面加载后断网仍可用必须联网完全离线
结果呈现表格+颜色分类,直观易读列表+端口号,信息密度高纯文本,需自行过滤
覆盖范围TCP/UDP 知名端口 (0-1023)TCP/UDP 知名端口 + 注册端口 (0-49151)系统 /etc/services 文件,范围取决于系统
平台兼容任何现代浏览器 (PC/手机)任何现代浏览器仅限 Linux/macOS,Windows 需额外配置

使用指南

上手步骤 · 输入输出 · 避坑提示

输入输出示例8 个典型场景,覆盖常规、边界与易错

输入输出说明
80端口: 80 | 传输层协议: TCP, UDP | 服务: HTTP (超文本传输协议) | 描述: 用于未加密的网页浏览,是万维网最常用的端口典型场景:访问普通网站时浏览器默认使用的端口
443端口: 443 | 传输层协议: TCP, UDP | 服务: HTTPS (超文本传输安全协议) | 描述: 用于加密的网页浏览,通过SSL/TLS保护数据传输安全典型场景:访问银行或购物网站时自动使用的加密端口
22端口: 22 | 传输层协议: TCP | 服务: SSH (安全外壳协议) | 描述: 用于远程登录服务器和文件传输,提供加密通信通道典型场景:开发者和运维人员远程管理Linux服务器
3389端口: 3389 | 传输层协议: TCP, UDP | 服务: RDP (远程桌面协议) | 描述: 用于Windows远程桌面连接,允许用户远程操作桌面环境边界case:Windows系统默认开启,需注意网络安全
0端口: 0 | 传输层协议: — | 服务: 保留端口 | 描述: 系统保留端口,不用于实际服务,常用于编程中请求系统自动分配端口边界case:0不是合法服务端口,但常出现在网络编程中
65535端口: 65535 | 传输层协议: TCP, UDP | 服务: 动态/私有端口 | 描述: 端口范围上限,属于动态或私有端口,通常由客户端临时使用边界case:TCP/UDP端口号最大值,常被误认为是保留端口
21端口: 21 | 传输层协议: TCP | 服务: FTP (文件传输协议) | 描述: 用于FTP控制连接,管理文件上传下载的指令传输易错case:新手常误以为FTP只用一个端口,实际数据端口是20
3306端口: 3306 | 传输层协议: TCP | 服务: MySQL 数据库 | 描述: MySQL数据库服务的默认监听端口,用于数据库客户端连接易错case:开发环境常与PostgreSQL默认端口5432混淆

常见错误对照10 个常踩的坑 · 错误 → 修复

1. 把端口号和服务名搞反

错误
服务名 = 80,端口号 = HTTP
修复
端口号 = 80,服务名 = HTTP

端口号是数字(0-65535),服务名是文字标识;很多用户记反顺序导致查表时找不到结果

2. 用十进制以外的进制输入端口号

错误
0x50 或 0b1010000 表示 80
修复
直接输入 80

端口号在 TCP/UDP 头部是 16 位二进制,但工具界面只接受十进制数字,其他进制不会识别

3. 混淆 TCP 和 UDP 的端口分配

错误
认为 DNS 的 53 端口一定是 TCP
修复
DNS 使用 UDP 53 做查询,TCP 53 做区域传输;查表时需确认协议类型

IANA 端口分配表中同一端口号可能同时被 TCP 和 UDP 使用,但服务行为不同,不能混用

4. 把动态/私有端口当知名端口查

错误
查询端口 49152 认为有标准服务
修复
49152-65535 是动态/私有端口,无固定服务分配

IANA 将 0-1023 划为知名端口,1024-49151 为注册端口,49152+ 为动态端口,查不到对应服务是正常的

5. 输入端口范围时用错分隔符

错误
80-443, 8080
修复
80-443,8080

工具要求逗号分隔多个端口,短横线表示范围;空格或中文标点会导致解析失败

6. 把端口 0 当作有效端口查询

错误
查询端口 0 的服务
修复
端口 0 是保留端口,不分配给任何服务

RFC 1700 规定端口 0 为保留值,系统调用中常作为临时端口分配时的通配符

7. 忽略端口号与传输层协议的绑定关系

错误
认为端口 22 只用于 SSH(TCP)
修复
端口 22 的 UDP 服务是 SSH 的传输层,但实际 SSH 仅用 TCP

同一端口号在不同协议下的服务可能不同;查表时需确认是 TCP 还是 UDP,不能默认

8. 把服务别名当端口号输入

错误
输入 'http' 而不是 80
修复
输入 80

工具只接受数字端口号,不接受服务名称;需要先查 /etc/services 或 IANA 列表得到数字

9. 混淆端口号和协议号

错误
认为 ICMP 有端口号(如 ping 的端口)
修复
ICMP 是网络层协议,没有端口号概念

端口号只存在于传输层(TCP/UDP),ICMP、IGMP 等网络层协议不涉及端口

10. 认为所有知名端口都对应同一服务版本

错误
认为 443 永远是 HTTPS(TLS 1.2+)
修复
443 只是 TLS 封装端口,具体协议版本由握手协商决定

端口号只标识服务类型,不保证服务版本或加密强度;旧版 TLS 1.0 也可能跑在 443 上

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

端口号 = 服务标识符,由 IANA 分配,0-1023 为知名端口,1024-49151 为注册端口,49152-65535 为动态/私有端口

变量说明

  • 端口号 — 0-65535 的整数,标识网络服务
  • 知名端口 — 0-1023,系统级服务使用
  • 注册端口 — 1024-49151,用户进程使用
  • 动态端口 — 49152-65535,临时或私有使用

示例

查询 HTTP 服务:端口号 80(知名端口),IANA 分配,TCP 协议。输入 80 后工具显示:服务名 HTTP,协议 TCP,描述“超文本传输协议”。若输入 8080(注册端口),显示:服务名 http-alt,协议 TCP,描述“HTTP 备用端口”。

适用范围

适用于 TCP/UDP 协议端口查询,基于 IANA 服务名称与传输协议端口号注册表(RFC 6335)。不适用于非标准端口映射或自定义私有端口(如企业内网临时分配)。

原理图

用户输入端口号如 80 / 443 / 22本地匹配端口表FE 检索预置 JSON 数据展示端口信息协议 / 服务 / 含义用户输入服务名如 HTTP / SSH / DNS反向查找端口号FE 遍历本地端口表展示端口号列表可能多个端口对应双向查询
用户输入 本地处理 输出结果

开发者集成

3 种主流语言 · 复制即用

import socket

# 查询端口 80 的服务名称
port = 80
protocol = 'tcp'
try:
    service = socket.getservbyport(port, protocol)
    print(f"端口 {port}/{protocol.upper()} 服务: {service}")  # 端口 80/TCP 服务: http
except OSError:
    print(f"端口 {port}/{protocol.upper()} 未注册")

# 查询端口 443 的 UDP 服务(通常无注册)
port = 443
protocol = 'udp'
try:
    service = socket.getservbyport(port, protocol)
    print(f"端口 {port}/{protocol.upper()} 服务: {service}")
except OSError:
    print(f"端口 {port}/{protocol.upper()} 未注册")  # 端口 443/UDP 未注册

# 批量查询常见端口
common_ports = [22, 80, 443, 3306, 5432]
for p in common_ports:
    for proto in ['tcp', 'udp']:
        try:
            svc = socket.getservbyport(p, proto)
            print(f"{p}/{proto.upper()} -> {svc}")
        except OSError:
            pass
package main

import (
	"fmt"
	"net"
)

func main() {
	// 查询端口 22 的服务名称
	port := 22
	protocol := "tcp"
	service, err := net.LookupPort(protocol, "")
	if err != nil {
		// 直接查端口号对应的服务名需要反向查找
		// 使用已知服务名查端口,反向需查 /etc/services
		// 这里演示正向:服务名 -> 端口
		port, _ := net.LookupPort(protocol, "ssh")
		fmt.Printf("ssh/%s -> 端口 %d\n", protocol, port) // ssh/tcp -> 端口 22
	}
	_ = service

	// 批量查询常见端口(模拟反向查找)
	ports := []int{80, 443, 3306, 5432}
	for _, p := range ports {
		svc, err := net.LookupPort("tcp", "")
		if err != nil {
			// 反向查找需要解析 /etc/services,Go 标准库未直接提供
			// 使用 map 模拟已知映射
			known := map[int]string{
				80:   "http",
				443:  "https",
				3306: "mysql",
				5432: "postgresql",
			}
			if name, ok := known[p]; ok {
				fmt.Printf("%d/tcp -> %s\n", p, name)
			}
		}
		_ = svc
	}
}
// Node.js 使用 dns 模块查询服务(需运行在 Node 环境)
const dns = require('dns');

// 查询端口 80 的 TCP 服务
const port = 80;
const protocol = 'tcp';
dns.lookupService('127.0.0.1', port, (err, hostname, service) => {
    if (err) {
        // 反向查询失败,使用已知映射
        const knownPorts = {
            80: 'http',
            443: 'https',
            22: 'ssh',
            3306: 'mysql',
            5432: 'postgresql'
        };
        console.log(`${port}/${protocol.toUpperCase()} -> ${knownPorts[port] || 'unknown'}`);
        // 80/TCP -> http
    } else {
        console.log(`${port}/${protocol.toUpperCase()} -> ${service}`);
    }
});

// 批量查询(使用 Promise 封装)
const lookupPort = (port) => {
    return new Promise((resolve) => {
        dns.lookupService('127.0.0.1', port, (err, _, service) => {
            if (err) {
                const known = { 22: 'ssh', 80: 'http', 443: 'https', 3306: 'mysql', 5432: 'postgresql' };
                resolve(known[port] || 'unknown');
            } else {
                resolve(service);
            }
        });
    });
};

(async () => {
    const ports = [22, 80, 443, 3306, 5432];
    for (const p of ports) {
        const svc = await lookupPort(p);
        console.log(`${p}/TCP -> ${svc}`);
    }
})();

常见问题

8 个高频疑问

这个端口大全的数据来源是哪里?会不会有遗漏或过时的端口?
数据主要基于 IANA(互联网号码分配机构)的 Service Name and Transport Protocol Port Number Registry 官方列表,以及常见操作系统(Windows/Linux/macOS)的 /etc/services 文件。知名端口(0-1023)基本覆盖完毕,注册端口(1024-49151)只收录了常用服务对应的端口。IANA 每年会更新分配,本工具同步周期约为 3-6 个月,最新的非标准端口(如某些游戏、P2P 软件的临时端口)可能不在列表内。如果发现某个常用服务未收录,可以对照 IANA 官网核实。
为什么我查 3306 显示 MySQL,但实际我电脑上 3306 跑的是别的服务?
端口大全展示的是「IANA 建议用途」,不是「当前这台机器上运行的服务」。3306 的官方建议是 MySQL,但任何程序都可以绑定 3306 端口——比如你手动改了 Nginx 配置让它在 3306 监听,那 3306 就跑的是 HTTP 服务。本工具只告诉你「这个端口通常给谁用」,不做实时端口扫描或进程检测。想查当前端口被谁占用,Windows 用 `netstat -ano`,Linux/macOS 用 `lsof -i :3306`。
TCP 和 UDP 同一个端口号,服务不一样吗?比如 53 端口。
是的,TCP 53 和 UDP 53 是独立的。DNS 服务同时使用 TCP 53 和 UDP 53,但用途不同:UDP 53 处理普通查询(响应快、开销小),TCP 53 处理区域传输(zone transfer)和超长响应(超过 512 字节)。其他端口如 HTTP 80 只用 TCP(UDP 80 无标准服务),而 DHCP 67/68 只用 UDP。工具在列表里会标注「TCP/UDP」或「TCP」或「UDP」,查看时注意区分。如果某个服务只标注了 TCP,但程序尝试用 UDP 连接,会连接失败。
端口大全里列了 443 是 HTTPS,但为什么我访问 HTTPS 网站有时会连不上?
443 端口开启 HTTPS 服务只是前提之一。连不上通常有几种情况:服务器没配置 SSL 证书、防火墙拦截了 443 入站、运营商封锁(比如某些地区对 443 做特殊限制)、或者服务器只监听了 IPv6 但客户端用 IPv4 访问。端口大全只告诉你「这个端口的标准用途」,不保证实际可达。可以用 `telnet <域名> 443` 或 `nc -zv <域名> 443` 测试端口是否开放,确认是服务问题还是端口问题。
工具里的端口号范围是 0-65535,为什么有些端口号没有说明?比如 44444 是什么服务?
0-1023 是知名端口(系统服务),1024-49151 是注册端口(用户服务),49152-65535 是动态/私有端口(临时使用)。本工具优先收录知名端口和常见注册端口,49152 以上的端口多数没有固定服务分配——它们是操作系统临时分配给客户端连接的(比如浏览器访问网站时随机占用的源端口)。44444 不在 IANA 注册列表中,也没有主流服务固定使用它,因此没有说明。如果想查某个非标准端口,可以搜索「port <端口号> service」或查看本地 /etc/services 文件。
这个端口大全和 Windows 命令 `netstat -ano` 查出来的结果有什么区别?
两者用途完全不同。`netstat -ano` 查的是「当前机器正在监听的端口和连接」,是实时状态;端口大全查的是「IANA 建议的端口-服务对照表」,是静态知识库。举例:`netstat` 显示 3389 正在监听,端口大全告诉你 3389 是远程桌面(RDP)——两者结合才能判断「这台机器确实在跑 RDP」。如果 `netstat` 显示 9999 在监听,但端口大全里没有 9999,说明这个端口不是标准服务,可能是自定义程序或木马。建议两个工具配合使用。
输入端口号后没找到结果,是不是工具坏了?
不是工具坏了,是输入的端口号可能不在已收录的列表中。工具目前收录约 200 个常用端口(覆盖所有知名端口 + 常见应用端口),如果你输入的是 1911、40404 这类非标准端口,或者 49152 以上的动态端口,就不会有匹配结果。可以尝试输入相近的常见端口(如 80、443、22、3389)验证工具是否正常工作。另外注意:端口号必须为纯数字,不能带字母或特殊符号。
工具说 22 端口是 SSH,但我在路由器上映射 22 端口到内网一台 Linux 机器,外网还是连不上,为什么?
端口大全只说明 22 端口的标准用途(SSH),不负责网络连通性。外网连不上需要排查:① 路由器是否做了端口转发(NAT)并指向正确的内网 IP;② 内网 Linux 的 SSH 服务是否已启动且监听 0.0.0.0:22(用 `ss -tlnp | grep 22` 确认);③ 运营商是否屏蔽了 22 端口(很多家庭宽带禁止入站 22);④ 防火墙是否放行了 22 端口(包括 iptables 或云服务商安全组)。工具不能替代网络诊断,建议按顺序逐一排查。
选择 打开 +新窗口 esc关闭