服务与监听端口
在我所接触的DSS架构中,各个动能模块是以服务的形式存在的,当服务以服务端的角色被访问时,其监听端口便成为了服务端与其他来访问的服务之间进行数据交流的门户,其与“客户端”是一种一对多的关系。而当本服务作为“客户端”去访问其他服务时,则会重新选取其他未使用的端口,进行数据访问。
服务与端口分析
netstat命令
在某DSS系统中,ADS(报警分发服务)作为“客户端”去连接DMS(设备管理服务),然而当设备产生一条报警时,DMS传输报警到ADS,但是ADS却收到了2条报警,难道是还有其他服务也传输了此条报警到ADS?我们班接下来进行分析。
window环境下,为了查询环境上的服务访问关系,先查询到ADS的进程号(任务管理器)为8827,然后在cmd窗口输入
netstat -nao | findstr "8827"
图略。发现ADS用端口port1连接了DMS的9200监听端口,用port2连接了另一个服务的9400端口,那这个不知名的服务叫什么名字呢?我们在显示中找到了监听端口为9400服务的进程号为4467,此时,执行命令
tasklist | findstr "4467"
图略。看到进程名称显示为PES。此时我们知道,ADS使用port2端口连接了PES服务的9400端口,接收了PES服务上报的报警信息。
linux环境下,方法大同小异,命令如下
netstat -nap | grep 8827
lsof命令
在linux环境下,losf命令用于查询特定进程正在使用的文件或者网络连接,如:
lsof -nPi:9400
可看到所有与PES服务的监听端口所连接的端口