端口号与应用的对应查询方法

端口号与应用的对应查询方法

为什么要关心端口号?

端口是传输层的"门牌号" ,应用进程通过它来收发数据。

当电脑运行多个应用时,端口帮助操作系统区分"这份数据应该交给哪个应用"。

所以,如果你知道某个应用的端口号,就能追踪它的网络行为;反之,如果你知道某个端口,就能查到对应的应用。

查看端口号(从端口 → 应用)

📍 常见操作系统方法:

1. Windows

命令行方式

netstat -ano

-a 显示所有连接和监听端口

-n 数字形式显示地址和端口

-o 显示 PID(进程号)

结果类似:

yaml

复制代码

TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 1234

表示 进程 PID=1234 占用了 80 端口。

进一步找到应用名

yaml

复制代码

tasklist | findstr 1234

就能查出是哪个应用占用了端口。

2. Linux / macOS

netstat 命令

netstat -tunlp

-t TCP

-u UDP

-n 数字显示

-l 监听中的端口

-p 显示进程 PID 和程序名

ss 命令(更现代)

ss -tunlp

输出会告诉你某个端口对应的进程。

已知应用查对应端口(从应用 → 端口)

1. 在 Windows

方法一: netstat + PID

arduino

复制代码

netstat -ano | findstr "LISTENING"

-a 显示所有连接和监听端口

-n 用数字显示地址和端口号

-o 显示对应的进程 PID

然后通过 任务管理器 或

xml

复制代码

tasklist | findstr

就能知道哪个应用开了哪些端口。

方法二:PowerShell 更直观

vbnet

复制代码

Get-Process -Id (Get-NetTCPConnection | Where-Object { $_.State -eq "Listen" }).OwningProcess

直接列出监听端口的进程。

2. 在 Linux / macOS

方法一: lsof

css

复制代码

lsof -i -P -n | grep LISTEN

-i 网络相关

-P 显示端口号而不是服务名

-n 不解析域名(更快)

输出结果会显示:应用 → 协议 → 端口。

方法二: netstat

netstat -tulnp

-t TCP

-u UDP

-l listening

-n 数字显示

-p 显示进程名/ID。

方法三: ss (更现代,替代 netstat)

ss -tulnp

3. 直观比喻

房子(机器) :计算机

房间(应用) :进程

门(端口) :对外开放的入口

想知道某个房间开了哪些门,就去查这间房间对应的"门牌号"。

🛠 举例

比如你运行了一个 本地 Node.js 服务,想查它监听的端口:

perl

复制代码

ps -ef | grep node

# 假设得到 PID=12345

lsof -i -P -n | grep 12345

结果可能显示:

sql

复制代码

node 12345 user TCP 0.0.0.0:3000 (LISTEN)

说明这个 Node 应用监听了 3000 端口。

常见应用与端口的映射

协议/应用

默认端口

HTTP

80

HTTPS

443

FTP

21

SSH

22

MySQL

3306

Redis

6379

PostgreSQL

5432

WebSocket

一般跟 HTTP/HTTPS 一致(80/443)

本地开发(Node.js、Vue、React 等)

常见 3000, 5173, 8080 等

结合 TCP/IP 模型看待

应用层:具体应用(浏览器、数据库、游戏客户端)

传输层:应用占用某个端口(80, 443, 3306...),TCP/UDP 负责传输

网络层:IP 地址负责找到主机

链路层:MAC 地址负责找到网卡

所以:应用 = 进程 ↔ 端口号 ↔ 网络连接 。

端口号就是把 操作系统中的进程 和 网络层的通信 绑在一起的关键。