常用端口大全
TCP/UDP 知名端口 + 服务名 · 点击复制
TCP/UDP 知名端口 + 含义 + 服务
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 的端口分配。
| 维度 | 本工具 | 竞品 A (PortChecker.co) | 传统方法 (命令行) |
|---|---|---|---|
| 数据隐私 | 纯浏览器,零上传,所有数据本地处理 | 上传到服务器,存在日志记录 | 完全本地,无网络传输 |
| 使用门槛 | 打开网页即用,无需安装 | 打开网页即用,无需安装 | 需打开终端,记忆命令参数 |
| 处理速度 | 1 秒内,即时渲染 | 2-5 秒,含网络请求 | 1-3 秒,取决于系统 |
| 离线可用 | 完全离线,页面加载后断网仍可用 | 必须联网 | 完全离线 |
| 结果呈现 | 表格+颜色分类,直观易读 | 列表+端口号,信息密度高 | 纯文本,需自行过滤 |
| 覆盖范围 | TCP/UDP 知名端口 (0-1023) | TCP/UDP 知名端口 + 注册端口 (0-49151) | 系统 /etc/services 文件,范围取决于系统 |
| 平台兼容 | 任何现代浏览器 (PC/手机) | 任何现代浏览器 | 仅限 Linux/macOS,Windows 需额外配置 |
上手步骤 · 输入输出 · 避坑提示
| 输入 | 输出 | 说明 |
|---|---|---|
| 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混淆 |
服务名 = 80,端口号 = HTTP端口号 = 80,服务名 = HTTP端口号是数字(0-65535),服务名是文字标识;很多用户记反顺序导致查表时找不到结果
0x50 或 0b1010000 表示 80直接输入 80端口号在 TCP/UDP 头部是 16 位二进制,但工具界面只接受十进制数字,其他进制不会识别
认为 DNS 的 53 端口一定是 TCPDNS 使用 UDP 53 做查询,TCP 53 做区域传输;查表时需确认协议类型IANA 端口分配表中同一端口号可能同时被 TCP 和 UDP 使用,但服务行为不同,不能混用
查询端口 49152 认为有标准服务49152-65535 是动态/私有端口,无固定服务分配IANA 将 0-1023 划为知名端口,1024-49151 为注册端口,49152+ 为动态端口,查不到对应服务是正常的
80-443, 808080-443,8080工具要求逗号分隔多个端口,短横线表示范围;空格或中文标点会导致解析失败
查询端口 0 的服务端口 0 是保留端口,不分配给任何服务RFC 1700 规定端口 0 为保留值,系统调用中常作为临时端口分配时的通配符
认为端口 22 只用于 SSH(TCP)端口 22 的 UDP 服务是 SSH 的传输层,但实际 SSH 仅用 TCP同一端口号在不同协议下的服务可能不同;查表时需确认是 TCP 还是 UDP,不能默认
输入 'http' 而不是 80输入 80工具只接受数字端口号,不接受服务名称;需要先查 /etc/services 或 IANA 列表得到数字
认为 ICMP 有端口号(如 ping 的端口)ICMP 是网络层协议,没有端口号概念端口号只存在于传输层(TCP/UDP),ICMP、IGMP 等网络层协议不涉及端口
认为 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)。不适用于非标准端口映射或自定义私有端口(如企业内网临时分配)。
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:
passpackage 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 个高频疑问
「HTTP / 网络速查」下的其他工具