linux中如何查看端口(linux专栏什么是端口号)

尽管搞IT多年,但一些基本性的概念却依旧似懂非懂,就好比说什么是端口号?你说知道吧,确实知道,每个程序都有个自己的端口号,有些都是约定俗称的,比如FTP端口21、SFTP端口22、IIS端口80等等。可是让你去细细解释一下,还真不一定能回答上来。

linux中如何查看端口(linux专栏什么是端口号)(1)

什么是端口号?

我们都知道,每台联网的计算机都有自己的IP,这个IP好比是在互联网上的地址编号,是唯一的,这样才能通过IP地址正常通信。那么问题就来了,一台计算机它可能会提供多个服务,比如Apache服务、FTP服务、Email服务等等,通过IP地址来区分显示是不可能的。这个时候我们就需要用端口来进行区分,每个服务对应指定的端口,这样通过IP 端口就能唯一确定要访问的服务了。

linux中如何查看端口(linux专栏什么是端口号)(2)

为了统一整个互联网的端口和网络服务的对应关系,以便让所有的主机都能使用相同的机制来请求或提供服务,同一个服务使用相同的端口,这就是协议。

计算机中的协议主要分为两大类:面向连接的可靠的TCP协议(Transmission Control Protocol,传输控制协议);面向无连接的不可靠的UDP协议(User Datagram Protocol,用户数据报协议)。这么多的端口,我们该如何知道哪个端口对应哪个呢?其实在linux系统中,提供了/etc/services的文件,可以进行查看。

linux中如何查看端口(linux专栏什么是端口号)(3)

端口信息查看方法(进程号与的端口号均可查看)

以下的命令较多,详细的用法不必深究,先记住固定用法,后期遇到了再细讲。

方法 1:使用 ss 命令

ss 一般用于转储套接字统计信息,类似于 netstat 输出的信息,但它显示了更多的 TCP 信息和状态信息。它还可以显示所有类型的套接字统计信息,包括 PACKET、TCP、UDP、DCCP、RAW、Unix 域等。

[root@localhost ~]# ss -tnlp | grep dmserver State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 5 *:5900 *:* users: LISTEN 0 128 :::5236 :::* users:(("dmserver",PID=7060,fd=4)) [root@localhost ~]#

方法 2:使用 netstat 命令

netstat 能够显示网络连接、路由表、接口统计信息、伪装连接以及多播成员。既然已经会用ss的高级命令了,就忘记它吧。

[root@localhost ~]# netstat -tnlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp6 0 0 :::4236 :::* LISTEN 7059/dmap tcp6 0 0 :::5236 :::* LISTEN 7060/dmserver tcp6 0 0 :::22 :::* LISTEN 6831/sshd tcp6 0 0 ::1:631 :::* LISTEN 6832/cupsd tcp6 0 0 ::1:25 :::* LISTEN 7225/master [root@localhost ~]#

方法 3:使用 fuser 命令

fuser 工具会将本地系统上打开了文件的进程的进程 ID 显示在标准输出中,一般通过端口去查看对应的进程和和用户。

[root@localhost ~]# fuser -v 5236/tcp 用户 进程号 权限 命令 5236/tcp: dmdba 7060 F.... dmserver

方法 4:使用 nmap 命令

nmap(“Network Mapper”)是一款用于网络检测和安全审计的开源工具。它最初用于对大型网络进行快速扫描,但它对于单个主机的扫描也有很好的表现。

nmap 使用原始 IP 数据包来确定网络上可用的主机,这些主机的服务(包括应用程序名称和版本)、主机运行的操作系统(包括操作系统版本等信息)、正在使用的数据包过滤器或防火墙的类型,以及很多其它信息。

[root@localhost ~]# nmap -sV -p 5236 localhost Starting Nmap 6.40 ( http://nmap.org ) at 2021-01-01 00:23 CST mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers Nmap scan report for localhost (127.0.0.1) Host is up (0.00031s latency). Other addresses for localhost (not scanned): 127.0.0.1 PORT STATE service VERSION 5236/tcp open tcpwrapped Service detection performed. Please report any incorrect results at http://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 10.91 seconds

可以看出,对于普通用户来说,该命令似乎并不好用,也看得不大懂,还需要注意的是该命令一般不会默认安装,需要额外安装。

方法 5:使用 systemctl 命令

systemctl 是 systemd 系统的控制管理器和服务管理器,通过systemctl可以查看服务的具体运行信息,包括PID、是否自启、启动命令等。很遗憾,通过该命令只能查看到对应的PID进程号,如果要查看对应的端口号,可以通过本文中其他端口号、进程号查看方法进行互查。

[root@localhost ~]# systemctl status DmServiceDMSERVER.service ● DmServiceDMSERVER.service - DM database instance service Loaded: loaded (/usr/lib/systemd/system/DmServiceDMSERVER.service; enabled; vendor preset: disabled) Active: active (running) since 一 2021-03-22 16:33:05 CST; 15h ago Process: 6837 ExecStart=/soft/dmdb/bin/DmServiceDMSERVER start (code=exited, status=0/SUCCESS) Main PID: 7060 (dmserver) Tasks: 54 CGroup: /system.slice/DmServiceDMSERVER.service └─7060 /soft/dmdb/bin/dmserver /soft/dmdb/data/DAMENG/dm.ini -noconsole 3月 22 16:32:48 localhost.localdomain systemd[1]: Starting DM database instance service... 3月 22 16:33:05 localhost.localdomain DmServiceDMSERVER[6837]: [39B blob data] 3月 22 16:33:05 localhost.localdomain systemd[1]: Started DM database instance service. [root@localhost ~]#

方法 6:使用 lsof 命令

lsof 能够列出打开的文件,并列出系统上被进程打开的文件的相关信息。

[root@localhost ~]# lsof -i:5236 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dmserver 7060 dmdba 4u IPv6 46668 0t0 TCP *:padl2sim (LISTEN)

总体来说,进程号和端口号查看的办法虽然很多,但在实际工作中,我们只需要掌握一种自己认为最好用的命令就可以了。后期会根据情况对相关命令进行复盘,详细介绍其用法。

更多实用技能敬请期待,收藏 关注才不会迷路哦[憨笑]

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页