1. 简介
任何一台计算机在进行网络通信的过程中,都会开放一些端口(port)以便于与其他计算机进行数据交互。在Linux系统中,我们可以使用一些命令来查看本机开放的端口和端口的状态,本文将为大家介绍如何使用这些命令来查看本机端口的情况。
2. netstat命令
netstat 命令是Linux中一个常用的网络命令,可以用来查看网络状态,包括网络连接、路由表、网络接口、网络协议等信息。其中,使用以下命令可以查看本机开放的端口。
2.1 netstat -an
使用 netstat -an
命令可以列出所有的网络连接和监听端口,其中被监听的端口标注为 "LISTEN"状态。 例如:
$ netstat -an
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp6 0 0 ::1:631 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:5432 :::* LISTEN
上述示例中,第一列表示协议类型(tcp6表示IPv6协议的TCP连接),第二和第三列分别表示接收和发送缓存队列,第四列 Local Address 列出了本地服务器的IP地址和端口号(::1:631),第五列 Foreign Address 显示连接到本地服务器的远程服务器地址和端口号(*:*),最后一列 State 显示连接状态。
我们可以通过 grep LISTEN
命令来筛选出本机正在监听的端口。例如:
$ netstat -an | grep LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:5432 :::* LISTEN
此时显示的结果只包含 LISTEN 状态的端口。
2.2 netstat -tunlp
使用 netstat -tunlp
命令可以列出所有TCP和UDP网络连接以及它们所对应的进程名。其中,t
表示只显示TCP连接,u
表示只显示UDP连接,n
表示用IP地址和端口号来显示连接信息,l
表示只显示处于监听状态的连接,p
表示显示连接所对应的进程名。例如:
$ netstat -tunlp
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 997/sshd
tcp6 0 0 :::22 :::* LISTEN 997/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 520/dhclient
udp 0 0 0.0.0.0:5353 0.0.0.0:* 608/avahi-daemon: r
udp 0 0 0.0.0.0:631 0.0.0.0:* 1083/cupsd
udp6 0 0 :::5353 :::* 608/avahi-daemon: r
上述示例中,第五列 PID/Program name 显示了连接对应的进程名。例如,第一行所对应的进程名为 sshd。
3. lsof命令
lsof 命令也是一个常用的Linux命令,可以查看文件和网络连接等信息,我们可以使用它来查看本机正在使用的端口。其中,使用以下命令可以查看所有正在使用的套接字信息:
3.1 lsof -i
使用 lsof -i
命令可以列出目前正在使用的网络连接,包括所使用的协议、本地地址、远程地址和状态等信息。例如:
$ lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dnsmasq 1180 root 5u IPv4 27705 0t0 UDP 127.0.0.1:53
dnsmasq 1180 root 6u IPv4 27706 0t0 TCP 127.0.0.1:53 (LISTEN)
上述示例中,第一列为进程名,第二列为进程ID,第三列为进程的用户,第四列为文件描述符,第五列为套接字类型,第六列为设备号,第七列为使用协议,第八列为本地地址,第九列为本地端口,第十列为远程地址,第十一列为远程端口,最后一列为连接状态。
我们可以通过 grep LISTEN
命令来筛选出正在监听的端口,例如:
$ lsof -i | grep LISTEN
dnsmasq 1180 root 6u IPv4 27706 0t0 TCP 127.0.0.1:53 (LISTEN)
此时输出的结果只包含处于 LISTEN 状态的端口。
4. 总结
本文介绍了两个Linux命令(netstat和lsof)来查看本机开放的端口的方法。其中, netstat 命令简单易用,通过具体的选项可以查看不同状态的连接和进程信息;而 lsof 命令更加强大,可以查看进程使用的文件、端口和网络信息,以及进程与进程之间的文件和网络使用关系等,并且可以根据多种选项来搜索、过滤结果。