如果你正在为网络、Linux系统管理、DevOps或网络安全面试做准备,那么理解网络端口是必不可少的。端口号几乎在每一个技术面试中都会出现,因为它们对于网络通信至关重要。然而,许多候选人却忽视了这一基本领域。
本文涵盖了您应该铭记的前25个端口,包括每个端口的功能、背后的协议以及它的重要性。无论您是初学者还是只是需要复习,这本指南都旨在简单、实用,便于面试准备。
网络端口是什么?
在我们进入列表之前,让我们快速了解一下口口到底是什么。
在网络世界中,端口并不是一个物理实体 — 它是一个虚拟通道,允许计算机之间的通信。可以将其想象为酒店的房间号码。你的IP地址是酒店地址,端口则告诉计算机你要访问哪个服务(房间)。
每个端口被分配一个介于0
和65535
之间的数字:
0-1023
: 知名端口(由系统级服务使用)。1024-49151
:注册端口(由软件和应用程序使用)。49152-65535
:动态/私人端口(临时连接)。
面试官为什么会问有关端口的问题?
因为它测试了你对以下内容的理解:
- 哪些服务运行在什么端口上
- TCP和UDP之间的区别
- 如何排除连接问题
- 开放端口的安全隐患
你会经常听到类似的问题:
- SSH使用哪个端口?
- 如何在Linux中检查开放端口?
- 你能解释一下80和443端口之间的区别吗?
你必须知道的25个端口(带描述)
让我们来看看您在面试中和使用真实系统时最常见的端口。
端口 | 协议 | 服务名称 | 目的 |
---|---|---|---|
20 | TCP | FTP(数据) | 以主动模式传输文件数据 |
21 | TCP | FTP(控制) | FTP传输的命令/控制 |
22 | TCP | SSH | 安全远程登录/文件传输 |
23 | TCP | Telnet | 远程登录(不安全,遗留) |
25 | TCP | SMTP | 发送电子邮件 |
53 | TCP/UDP | 域名系统 | 将域名解析为IP地址 |
67 | 用户数据报协议 | DHCP 服务器 | 分配IP地址 |
68 | 用户数据报协议 | DHCP客户端 | 接收DHCP配置 |
80 | TCP | HTTP | 标准(不安全)网络流量 |
110 | TCP | POP3 | 旧的电子邮件检索协议 |
123 | 用户数据报协议 | 网络时间协议 | 同步系统时间 |
135 | TCP | RPC | Windows 服务通信 |
137 | 用户数据报协议 | NetBIOS 名称服务 | Windows 名称查找 |
138 | 用户数据报协议 | NetBIOS 数据报服务 | Windows浏览 |
139 | TCP | NetBIOS会话服务 | 在旧版Windows中共享文件/打印机 |
143 | TCP | IMAP | 电子邮件检索(现代) |
161 | 用户数据报协议 | 简单网络管理协议 | 监控路由器、交换机等。 |
389 | TCP/UDP | LDAP | 集中式认证(如 Active Directory) |
443 | TCP | HTTPS | 安全的网络流量 |
445 | TCP | 通过 TCP 的 SMB | 现代Windows文件共享 |
465 | TCP | SMTPS | 安全SMTP(遗留) |
514 | 用户数据报协议 | 系统日志 | 集中日志记录 |
993 | TCP | IMAPS | 安全IMAP |
995 | TCP | POP3S | 安全的 POP3 |
3306 | TCP | MYSQL | 流行的数据库服务 |
5432 | TCP | PostgreSQL | 开源SQL数据库 |
5900 | TCP | VNC | 远程桌面访问(图形用户界面) |
6379 | TCP | Redis | 内存键值存储 |
8080 | TCP | HTTP备选 | 应用服务器,代理 |
8443 | TCP | HTTPS替代 | 安全访问自定义网络应用程序 |
快速提示:只需记住这四个端口:20/21用于FTP,22用于SSH,80用于HTTP,以及443用于HTTPS – 这些是最重要的端口。
端口分类,以简化生活
与其随意记忆所有端口,不如将它们分组:
类别 | 端口 | 服务名称 |
---|---|---|
远程访问 | 22 | SSH(安全外壳协议) |
23 | Telnet | |
5900 | VNC(虚拟网络计算) | |
电子邮件服务 | 25 | SMTP(简单邮件传输协议) |
110 | POP3(邮局协议) | |
143 | IMAP(互联网邮件访问协议) | |
465, 993, 995 | SMTPS,IMAPS,POP3S(安全版本) | |
网络服务 | 80 | HTTP(超文本传输协议) |
443 | HTTPS(超文本传输安全协议) | |
8080, 8443 | 备用 HTTP/HTTPS(用于网络应用或代理) | |
文件共享与传输 | 20/21 | FTP(文件传输协议) |
139/445 | 服务器消息块 (SMB) | |
3306/5432 | MySQL/ PostgreSQL(数据库) | |
姓名和地址服务 | 53 | 域名系统 (DNS) |
67/68 | DHCP(动态主机配置协议) | |
123 | 网络时间协议 (NTP) | |
137–139 | NetBIOS(网络基本输入/输出系统) | |
监控和日志记录 | 514 | 系统日志 (Syslog) |
161 | 简单网络管理协议 (SNMP) |
如何检查Linux系统上的开放端口
让我们更仔细地看看如何使用 ss
、netstat
和 nmap
等命令在 Linux 系统上检查开放端口。
1. 使用 ss(现代且快速)
ss命令(全称为socket statistics)是较旧的netstat命令的现代替代品。它旨在更快速、更高效地列出开放端口和网络连接。
sudo ss -tulpn
命令的解释:
-t
: 显示 TCP 套接字。-u
: 显示UDP套接字。-l
: 仅显示监听套接字(开放且等待传入连接的端口)。-p
: 显示拥有该套接字的进程(即,哪个应用程序正在使用该端口)。-n
: 以数字形式显示端口号(避免将其解析为服务名称)。
2. 使用 netstat(较旧但仍常用)
netstat
是一个遗留命令,在 ss
流行之前被广泛使用。它仍然存在于大多数 Linux 发行版中,并且在 ss
可能不可用的情况下,或者当您使用旧系统时,仍然很有用。
sudo netstat -tulpn
命令的解释:
-t
: 显示 TCP 套接字。-u
: 显示 UDP 套接字。-l
: 仅显示监听端口(不显示已建立的连接)。-p
: 显示使用该套接字的进程 ID (PID) 和程序名称。-n
: 输出数字地址和端口(而不是将它们解析为服务名称,例如“http”)。
3. 使用nmap进行扫描
nmap(网络映射器)是一种强大的工具,主要用于网络探索和安全审计。它可以用来扫描你自己的系统或任何远程系统,以查找开放端口。
与 ss
和 netstat
不同,nmap
通常用于更详细的网络扫描,并且可以提供有关外部系统的信息。
nmap -sT localhost
命令的解释:
-sT
: 它尝试与每个端口建立完整连接,并检查哪些端口响应。localhost
: 指的是您想要扫描的本地计算机。您可以用任何IP地址替换localhost以扫描远程系统。
安全提示:为什么了解端口有助于保持安全
攻击者通常使用端口扫描技术来识别开放的端口并找到可能存在漏洞的服务。了解您的系统上暴露了哪些端口对于维护安全至关重要。
以下是一些与常见开放端口相关的风险示例:
- 端口 23(Telnet): 如果此端口开放,您的系统可能会面临攻击风险,因为 Telnet 以明文形式传输数据,包括密码。
- 445端口(SMB):该端口常常成为勒索软件和其他恶意软件的攻击目标,保持该端口开放可能会使攻击者访问您网络上的敏感文件和资源。
作为一名Linux或DevOps工程师,保护您的系统是您的责任。以下是减轻风险的关键策略:
- 关闭未使用的端口: 仅保留必要的端口。如果某项服务未被使用,关闭该端口是更安全的选择。
- 使用防火墙: 配置防火墙,例如 ufw(简单防火墙)或 firewalld,以限制可以访问的端口,确保只有授权流量可以到达您的系统。
- 使用加密保护暴露的服务:对于需要访问的服务,例如SSH或HTTPS,始终强制使用加密,以保护在传输过程中数据免受潜在窃听的影响。
要阻止23端口(Telnet)上的流量,请使用ufw
:
sudo ufw deny 23
要在端口 23(Telnet)上拒绝流量,请使用 firewalld
:
sudo firewall-cmd --zone=public --add-port=23/tcp --permanent --remove-port=23/tcp
通过了解端口并正确地保护它们,您可以最小化系统的攻击面,同时提高其安全性和性能。
最终想法
理解端口号不仅仅是记住它们,更重要的是了解服务在Linux和网络中的通信方式。一旦你掌握了基础知识,你将更擅长故障排除、保护系统和通过技术面试。