1. 端口基本概念
在计算机网络中,端口是一种逻辑或虚拟的通信连接。它为电脑或服务器分配能够流量进出的虚拟通道。具体而言,端口就是一组用来识别不同通信应用的数字,它们被用于标识运行在网络设备上的应用程序。
在计算机网络中,端口号被分为三类:知名端口号、注册端口号和动态/私有端口号。
1.1 知名端口号
从0到1023的端口号被称为知名端口号。这些端口号被预留给一些众所周知的服务和协议使用,例如HTTP(80)、FTP(21)和SSH(22)等。
#define SSH_PORT 22
1.2 注册端口号
从1024到49151的端口号被称为注册端口号。这些端口号是供用户或应用程序自由使用的。
#define MY_PORT 5000
1.3 动态/私有端口号
从49152到65535的端口号被称为动态/私有端口号。这些端口号不被分配给任何特定的服务或协议,而是由系统或应用程序动态分配。
2. 端口的功能
端口的主要功能是打开或关闭网络上的通信路径。
当应用程序需要向远程计算机发送数据时,它会使用一个端口号,使得远程计算机上的应用程序可以接收到数据。这个过程像打开一扇门,使得数据可以从一个地方流向另一个地方。
相反,当应用程序不再需要通信时,它会关闭端口号。这就像关闭一扇门,停止数据流动。
3. 端口的使用
Linux操作系统提供了许多工具,可以使用端口号来管理网络连接。
3.1 netstat命令
netstat命令可以用来列出所有正在使用的端口,以及与它们相关的应用程序和连接。
$ netstat -tulpn
其中:
-t用于显示TCP连接。
-u用于显示UDP连接。
-l用于显示监听的端口。
-p用于显示与应用程序相关联的进程ID。
-n用于禁用域名解析,以获得更快的结果。
示例输出:
Proto Local Address Foreign Address State PID/Program name
tcp 0.0.0.0:22 0.0.0.0:* LISTEN 484/sshd
tcp6 :::80 :::* LISTEN 1675/apache2
udp6 :::5353 :::* 348/avahi-daemon: r
3.2 lsof命令
lsof命令可以用于列出所有打开文件和端口的应用程序列表。
$ lsof -i :80
其中:
i选项用于指定Internet地址,主机名或端口。
:80用于指定要查找的端口号。
示例输出:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 1675 root 4u IPv6 12115 0t0 TCP *:http (LISTEN)
apache2 1679 www-data 4u IPv6 12115 0t0 TCP *:http (LISTEN)
apache2 1680 www-data 4u IPv6 12115 0t0 TCP *:http (LISTEN)
3.3 firewall-cmd命令
firewall-cmd命令可以用于添加、删除和管理防火墙规则。它可以指定要允许或阻止的端口和协议。
例如,要允许TCP 80端口进入系统:
$ firewall-cmd --add-port=80/tcp --permanent
$ firewall-cmd --reload
其中:
--add-port选项用于指定要允许的端口号。
--permanent选项用于将规则永久保存在防火墙中。
--reload选项用于重新加载防火墙规则。
4. 结论
端口是计算机网络中非常重要的组成部分,它充当了网络通信的门户。通过了解端口的基本概念和功能,您可以更好地管理您的系统和网络连接。