虽然从事IT多年,但一些基本概念还是比较混乱,比如端口号是什么?你知道,你确实知道,每个程序都有自己的端口号,其中一些是约定俗成的,比如FTP端口21、s FTP端口22、IIS端口80等等。但是让你详细解释,你还真答不上来。
端口号是多少?
众所周知,每台联网的电脑都有自己的IP。这个IP就像互联网上的一个地址号,是唯一的,这样就可以通过IP地址正常通信。那么问题来了。一台计算机可以提供多种服务,例如Apache服务、FTP服务、电子邮件服务等。无法通过IP地址区分显示器。这时候就需要通过端口来区分,每个服务都对应指定的端口,这样就可以通过IP+ port来唯一确定要访问的服务。
为了统一互联网端口和网络服务的对应关系,使所有主机都可以使用相同的机制来请求或提供服务,并且相同的服务使用相同的端口,这就是协议。
计算机协议主要有两类:面向连接的可靠TCP(传输控制协议);一种无连接且不可靠的UDP协议(用户数据报协议)。这么多端口,我们怎么知道哪个端口对应哪个端口呢?实际上,在linux系统中,提供/etc/services的文件是为了查看。
信息查看方式(可查看进程号和端口号)
以下命令很多,不需要深究详细用法。先记住固定用法,后面再详细解释。
方法1:使用ss命令
Ss一般用于转储套接字统计信息,类似于netstat输出的信息,但它显示更多的TCP信息和状态信息。它还可以显示所有类型的套接字统计数据,包括数据包、TCP、UDP、DCCP、RAW、Unix域等。
[root@localhost ~]# ss -tnlp | grep dmserverState 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 -tnlpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp6 0 0 :::4236 :::* LISTEN 7059/d***p 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/***ster [root@localhost ~]#
方法3:使用fuser命令
fuser工具会在标准输出中显示本地系统上打开文件的进程的进程ID,一般会通过端口检查对应的进程和用户。
[root@localhost ~]# fuser -v 5236/tcp 用户 进程号 权限 命令5236/tcp: dmdba 7060 F.... dmserver
方法4:使用n***p命令
N***p(“网络映射器”)是一个用于网络检测和安全审计的开源工具。它最初用于快速扫描大型网络,但对于扫描单台主机也有不错的性能。
N***p使用原始IP数据包来确定网络上可用的主机、它们的服务(包括应用程序名称和版本)、主机运行的操作系统(包括操作系统版本和其他信息)、使用的数据包过滤器或防火墙的类型以及许多其他信息。
[root@localhost ~]# n***p -sV -p 5236 localhostStarting N***p 6.40 ( http://n***p.org ) at 2021-01-01 00:23 CST***ss_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-serversN***p scan report for localhost (127.0.0.1)Host is up (0.00031s latency).Other addresses for localhost (not scanned): 127.0.0.1PORT STATE SERVICE VERSION5236/tcp open tcpwrappedService detection performed. Please report any incorrect results at http://n***p.org/submit/ .N***p 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 -noconsole3月 22 16:32:48 localhost.localdo***in systemd[1]: Starting DM database instance service...3月 22 16:33:05 localhost.localdo***in DmServiceDMSERVER[6837]: [39B blob data]3月 22 16:33:05 localhost.localdo***in systemd[1]: Started DM database instance service.[root@localhost ~]#
6:使用lsof命令
Lsof可以列出打开的文件,并列出由系统上的进程打开的文件的信息。
[root@localhost ~]# lsof -i:5236COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEdmserver 7060 dmdba 4u IPv6 46668 0t0 TCP *:padl2sim (LISTEN)
一般来说,检查进程号和端口号的方法有很多,但是在实际工作中,我们只需要掌握一个我们认为最好的命令。后面会根据情况回顾相关命令,并详细介绍其用法。
本文来自我要无比强大投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/480652.html