网络服务监听(最常见)
这是指让一个程序(如 Web 服务器、数据库)在指定的网络端口上等待并接收客户端的连接请求。

使用 netstat 命令(经典工具,Linux/Unix/macOS)
netstat 是一个查看网络连接、路由表、接口统计信息的工具。
-
查看所有正在监听的端口:
netstat -tuln
-t: 显示 TCP 端口-u: 显示 UDP 端口-l: 只显示监听状态的端口 (Listen)-n: 以数字形式显示地址和端口,不进行域名解析(速度更快)
-
查看特定端口是否在监听:
# 检查 80 端口 (HTTP) netstat -tuln | grep :80 # 检查 22 端口 (SSH) netstat -tuln | grep :22
使用 ss 命令(现代替代品,推荐)
ss 是 netstat 的现代替代品,速度更快,信息更全面,是许多现代 Linux 发行版的默认工具。

-
查看所有正在监听的端口:
ss -tuln
- 参数和
netstat完全一样。
- 参数和
-
查看特定端口是否在监听:
# 检查 80 端口 ss -tuln | grep :80
使用 lsof 命令(通过文件描述符查看)
lsof (list open files) 可以列出当前系统打开的所有文件,在 Unix/Linux 中,网络连接也被视为文件。
-
查看所有监听端口的进程:
(图片来源网络,侵删)# -i:inet 表示显示 IPv4 或 IPv6 的网络连接 # -P 表示不将端口号转换为服务名 # -n 表示不将主机名解析为 IP 地址 lsof -i -P -n
-
查看特定端口被哪个进程占用:
# 查看 8080 端口 lsof -i :8080
在 Windows 上查看监听端口
-
使用
netstat命令:netstat -ano
-a: 显示所有连接和监听端口。-n: 以数字形式显示地址和端口。-o: 显示进程 ID (PID)。
-
查看特定端口:
netstat -ano | findstr :80
findstr是 Windows 下的grep命令。
-
使用任务管理器(图形界面):
- 按
Ctrl + Shift + Esc打开任务管理器。 - 切换到“性能”选项卡。
- 点击左侧的“打开资源监视器”。
- 在“网络”部分,点击“TCP 连接”,即可看到所有监听和活动的连接及其对应的 PID。
- 按
端口转发/隧道监听
这种“监听”通常指本地机器开启一个端口,所有发往这个端口的流量都会被转发到另一个地址(本地或远程)。
使用 ssh 命令创建本地端口转发
这是一个非常常见的用法,用于安全地访问远程服务。
命令格式:
ssh -L [本地端口]:[目标地址]:[目标端口] [用户名]@[远程服务器IP]
示例:
假设你公司的数据库服务器只能从内网访问,你无法直接连接,但你有一台可以 SSH 登录的跳板机 jump-server.com,数据库在内网 db-server 的 3306 端口上。
你可以在你的本地电脑上执行以下命令:
ssh -L 3307:db-server:3306 myuser@jump-server.com
效果:
- 你的本地电脑开始在
3307端口监听。 - 当你本地程序连接
localhost:3307时,ssh会将这个连接通过jump-server.com转发到db-server:3306。 - 这样你就可以通过
localhost:3307安全地访问公司内网的数据库了。
程序/服务开启监听
这是最根本的“开启监听”,你需要运行一个服务程序,它会自动在某个端口上开始监听。
-
开启 Nginx Web 服务器监听 80 端口:
# 启动 Nginx 服务 sudo systemctl start nginx # 检查 Nginx 是否正在运行并监听 sudo systemctl status nginx # 或者使用 ss/netstat 查看 ss -tuln | grep :80
-
开启 MySQL 数据库服务监听 3306 端口:
# 启动 MySQL 服务 sudo systemctl start mysql # 检查 MySQL 状态 sudo systemctl status mysql # 或者 ss -tuln | grep :3306
-
开启一个简单的 Python HTTP 服务器监听 8000 端口:
# 进入你的项目目录 cd /path/to/your/project # 运行命令开启监听 python3 -m http.server 8000
你的电脑就在
8000端口上开启了一个监听,你可以通过浏览器访问http://localhost:8000来查看你的项目文件。
| 场景 | 命令/工具 | 作用 |
|---|---|---|
| 查看端口是否在监听 | ss -tuln 或 netstat -tuln |
检查系统中哪些端口正在被程序监听。 |
| 查看哪个进程在监听 | lsof -i :[端口号] |
找到占用特定监听端口的程序。 |
| 开启端口转发 | ssh -L ... |
在本地开启一个监听端口,将流量转发到远程。 |
| 开启服务监听 | sudo systemctl start [服务名] |
启动一个服务(如 Nginx, MySQL),让它自动在指定端口监听。 |
请根据您的具体需求,选择合适的命令,如果您想查看某个特定端口的监听状态,ss -tuln | grep :[端口号] 是最常用和推荐的方法。
