网站搜索

如何查找 Linux 中所有开放端口的列表


在本文中,我们将简要讨论计算机网络中的端口,并讨论如何列出 Linux 中所有开放的端口。

在计算机网络中,更确切地说,在软件术语中,端口是一个逻辑实体,充当通信端点来识别 Linux 操作系统上的给定应用程序或进程。它是一个 16 位数字(065535),用于区分一个应用程序与另一个终端系统。

两种最流行的互联网传输协议:传输控制协议 (TCP) 和用户数据报协议 (UDP)其他鲜为人知的协议使用端口号进行通信会话(源端口号和目标端口号与源 IP 地址和目标 IP 地址结合使用)。

此外,IP 地址、端口和协议(例如 TCP/UDP)的组合称为套接字,每个服务都必须有一个唯一的套接字。

以下是不同类别的端口:

  1. 0-1023 – 众所周知的端口,也称为系统端口。
  2. 1024-49151 – 注册端口,也称为用户端口。
  3. 49152-65535 – 动态端口,也称为私有端口。

您可以使用 cat 命令在 Linux 中的 /etc/services 文件中查看不同应用程序和端口/协议组合的列表:

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中所有开放的端口或当前正在运行的端口,包括TCPUDP,我们将使用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:*                               

在哪里,

  1. -l – 仅打印监听套接字
  2. -n – 显示端口号
  3. -t – 启用 TCP 端口列表
  4. -u – 启用 udp 端口列表

您还可以使用 ss 命令,这是一个众所周知的有用实用程序,用于检查 Linux 系统中的套接字。运行以下命令列出所有打开的 TCP 和 UCP 端口:

$ 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 中开放端口的其他方法或通过下面的回复表提出问题来与我们联系。