如何找出 Linux 中所有开放端口的列表
在本文中,我们将简要讨论计算机网络中的端口,并介绍如何列出 Linux 中所有开放的端口。
在计算机网络中,更确切地说是在软件术语中,端口是一个逻辑实体,它充当通信端点,用于识别 Linux操作系统上的特定应用程序或进程。它是一个 16 位数字(0到65535),用于区分终端系统上的一个应用程序与另一个应用程序。
两种最流行的互联网传输协议,传输控制协议( TCP ) 和用户数据报协议( UDP ),以及其他鲜为人知的协议都使用端口号进行通信会话(源端口号和目标端口号与源 IP 地址和目标 IP 地址结合使用)。
此外,IP 地址、端口和TCP/UDP等协议的组合称为套接字,每个服务都必须有一个唯一的套接字。
以下是不同类别的端口:
- 0-1023 – 知名端口,也称为系统端口。
- 1024-49151 – 注册端口,也称为用户端口。
- 49152-65535 – 动态端口,也称为私有端口。
您可以使用cat 命令/etc/services
在 Linux 中的文件中查看不同应用程序和端口/协议组合的列表:
$ cat /etc/services OR $ cat /etc/services | less
网络服务和端口
# /etc/services: # $Id: services,v 1.48 2009/11/11 14:32:31 ovasik Exp $ # # Network services, Internet style # IANA services version: last updated 2009-11-10 # # Note that it is presently the policy of IANA to assign a single well-known # port number for both TCP and UDP; hence, most entries here have two entries # even if the protocol doesn't support UDP operations. # Updated from RFC 1700, ``Assigned Numbers'' (October 1994). Not all ports # are included, only the more common ones. # # The latest IANA port assignments can be gotten from # http://www.iana.org/assignments/port-numbers # The Well Known Ports are those from 0 through 1023. # The Registered Ports are those from 1024 through 49151 # The Dynamic and/or Private Ports are those from 49152 through 65535 # # Each line describes one service, and is of the form: # # service-name port/protocol [aliases ...] [# comment] tcpmux 1/tcp # TCP port service multiplexer tcpmux 1/udp # TCP port service multiplexer rje 5/tcp # Remote Job Entry rje 5/udp # Remote Job Entry echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/tcp users systat 11/udp users daytime 13/tcp daytime 13/udp qotd 17/tcp quote qotd 17/udp quote msp 18/tcp # message send protocol msp 18/udp # message send protocol chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp-data 20/tcp ftp-data 20/udp # 21 is registered to ftp, but also used by fsp ftp 21/tcp ftp 21/udp fsp fspd ssh 22/tcp # The Secure Shell (SSH) Protocol ssh 22/udp # The Secure Shell (SSH) Protocol telnet 23/tcp telnet 23/udp
为了列出Linux 中所有开放端口或当前运行的端口(包括TCP和UDP) ,我们将使用netstat,它是一个用于监控网络连接和统计信息的强大工具。
使用 Netstat 命令列出所有网络端口
$ netstat -lntu Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN tcp 0 0 :::22 :::* LISTEN tcp 0 0 :::80 :::* LISTEN tcp 0 0 :::25 :::* LISTEN udp 0 0 0.0.0.0:68 0.0.0.0:*
在哪里,
-l
– 仅打印监听套接字-n
– 显示端口号-t
– 启用 tcp 端口列表-u
– 启用 UDP 端口列表
您还可以使用ss命令,这是一个众所周知的用于检查 Linux 系统中套接字的有用实用程序。运行以下命令列出所有打开的 TCP 和 UCP 端口:
使用 ss 命令列出所有网络端口
$ ss -lntu Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 *:68 *:* tcp LISTEN 0 128 :::22 :::* tcp LISTEN 0 128 *:22 *:* tcp LISTEN 0 50 *:3306 *:* tcp LISTEN 0 128 :::80 ::* tcp LISTEN 0 100 :::25 :::* tcp LISTEN 0 100 *:25
请务必阅读上述命令的手册页以获取更多使用信息。
总之,了解计算机网络中端口的概念对于系统和网络管理员来说非常重要。您也可以通过简单、精确且解释良好的示例来阅读本netstat 指南。
最后但同样重要的一点是,通过分享列出 Linux 中开放端口的其他方法或通过下面的回复表提出问题与我们联系。