📌  相关文章
📜  运行 linux 的端口 (1)

📅  最后修改于: 2023-12-03 15:12:19.253000             🧑  作者: Mango

运行 Linux 的端口

在 Linux 系统中,端口是用于网络通信的关键因素。端口是一个数字,它定义了一个进程通过网络通信所使用的接口。在 Linux 中,每个进程都会使用一个或多个端口来进行网络通信。

端口的分类

根据不同的用途,端口分为以下三类:

知名端口
  • 端口号范围:0 - 1023
  • 又称为系统端口或者保留端口,是由 IANA(Internet Assigned Numbers Authority)机构指定的,用于常见的服务和协议,如 FTP(文件传输协议)的21端口,SSH(安全外壳协议)的22端口等。
注册端口
  • 端口号范围:1024 - 49151
  • 也称为动态端口,是留给应用程序或者用户使用的端口,由 IANA 组织进行注册分配。
动态/私有端口
  • 端口号范围:49152 - 65535
  • 又称为临时端口,是由操作系统内核自动分配的端口,以供客户端和服务器端进行通信。
在 Linux 中查看端口

要查看 Linux 中正在使用的端口,可以运行以下命令:

sudo netstat -tunlp

命令说明:

  • sudo:以超级用户权限执行该命令
  • netstat:用于打印 Linux 中网络状态信息
  • -t:仅列出 TCP 协议
  • -u:仅列出 UDP 协议
  • -n:将主机名和端口号转换为数字形式
  • -l:仅列出正在监听的端口
  • -p:显示与进程相关的信息,如进程 ID 和进程名。

运行该命令后,会返回类似以下的输出:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1274/sshd           
tcp6       0      0 :::22                   :::*                    LISTEN      1274/sshd           
udp        0      0 0.0.0.0:68              0.0.0.0:*                           890/systemd-network 

输出的第一行指示了该服务器当前正在监听的协议和状态(Active Internet connections)。接下来的每一行都代表了一个正在监听的端口,其中的 PID/Program name 栏位列出了与端口相关联的程序和进程 ID。

在 Linux 中开启端口

要让 Linux 中的进程使用端口,需要先开启相应的端口。在 Linux 中,可以使用 iptables 或者 firewalld 命令来开启端口。以下是一个使用 iptables 开启端口的例子:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

命令说明:

  • sudo:以超级用户权限执行该命令
  • iptables:用于配置 Linux 中的防火墙规则
  • -A:代表在规则链的末尾添加一条新规则
  • INPUT:指示添加一条输入规则
  • -p tcp:指示仅对 TCP 协议进行操作
  • --dport 80:指示开启 80 端口
  • -j ACCEPT:指示接受该端口的所有来自外部的数据包。
在 Linux 中关闭端口

要关闭 Linux 中的端口,可以使用相应的命令来删除相应的防火墙规则。以下是一个使用 iptables 关闭端口的例子:

sudo iptables -D INPUT -p tcp --dport 80 -j ACCEPT

命令说明:

  • sudo:以超级用户权限执行该命令
  • iptables:用于配置 Linux 中的防火墙规则
  • -D:代表删除规则链中的一条规则
  • INPUT:指示删除一条输入规则
  • -p tcp:指示仅对 TCP 协议进行操作
  • --dport 80:指示关闭 80 端口
  • -j ACCEPT:指示接受该端口的所有来自外部的数据包。
总结

在 Linux 中,端口是用于网络通信的关键因素。了解和管理端口对于程序员来说非常重要,可以帮助他们调试和管理 Linux 服务器中的进程和服务。