Hin und wieder stellt jemand die folgende Frage: "Wir haben den Port unserer Anwendung in die Dienste-Datei aufgenommen, und jetzt wird er von einer anderen Anwendung verwendet - warum? Die Antwort ist, dass die services-Datei keine Portnummern reserviert. Die Datei services existiert, damit Anwendungen die Funktion getservbyname aufrufen können, um die mit einem Dienst verbundene Portnummer zu finden, oder die Funktion getservbyport, um den Namen eines mit einer Portnummer verbundenen Dienstes zu finden. Es gibt nichts, was verhindert, dass zwei verschiedene Dienste auf dieselbe Portnummer abgebildet werden können, obwohl die Funktion getservbyport nur den ersten Dienst zurückgibt. Es ist auch nicht erforderlich, dass eine Anwendung getservbyname aufruft, um herauszufinden, welchen Port sie verwenden soll. Ein Anwendungsentwickler kann einfach eine Portnummer hart kodieren oder sie als Parameter eingeben lassen.
- Führen Sie den Befehl
“netstat -numeric -all_sockets -PCB_addr”
und den Eindringling zu identifizieren, in diesem Fall ist die Portnummer, an der ich interessiert bin, 13592.
netstat -numeric -all_sockets -PCB_addr
Active connections (including servers)
PCB Proto Recv-Q Send-Q Local Address Foreign Address
(state)
. . .
8e3aa300 tcp 0 0 *:13592 *:* LISTEN
. . .
ready 13:50:12
- Führen Sie den Befehl
“analyze_system -request_line 'match dv; dump_onetcb 8e3aa300' -quit”
OpenVOS Release 17.0.1aj, analyze_system Release 17.0.1aj
Current process is 664, ptep 8E0EE800, Noah_Davids.CAC
sth_dvtx = 121 (stcp.m16_202)
- Führen Sie den Befehl
“who_locked #stcp.m16_202”
um festzustellen, welcher Prozess das Gerät verwendet.
stcp.m16_202:
Object is write locked by Barney_Rubble.Dev (login) on module
%vs#m1
executing stcp_calls.pm.