Gibt es eine Möglichkeit zu sehen, ob ein Prozess, der auf dem TCP-Port lauscht, eine Nachricht empfängt?

Gibt es eine Möglichkeit zu sehen, ob ein Prozess, der auf dem TCP-Port lauscht, eine Nachricht empfängt?

Laut tcpdumpempfängt mein Server das folgende TCP-Paket:

12:52:29.603233 00:19:e2:9e:df:f0 
00:16:3e:6a:25:3f, ethertype IPv4 (0x0800), length 74: 10.10.10.65.38869 
192.168.215.82.22: Flags [S], seq 567054335, win 5840, options [mss 1460,sackOK,TS val 2096335479 ecr 0,nop,wscale 0], length 0

Wie oben zu sehen ist, handelt es sich um ein TCP-SYN-Paket an TCP-Port 22, wo in meinem Fall ein lauscht sshd. Ich würde gerne sehen, ob dieses TCP-Paket den sshdProzess erreicht. Ich denke, eine Möglichkeit wäre, den Prozess sshdim Debug-Modus neu zu starten. Gibt es jedoch andere clevere Tools/Methoden, um zu sehen, ob der Prozess, der auf dem TCP-Port lauscht, eine Nachricht empfängt? Im Fall eines TCP-SYN-Pakets ist es vermutlich der TCP/IP-Stapel des Kernels, der das TCP SYN+ACK sendet und nicht das sshd?

Antwort1

Gibt es jedoch noch andere clevere Tools/Methoden, um festzustellen, ob ein Prozess, der auf dem TCP-Port lauscht, eine Nachricht empfängt?

Sie können stracemit verwenden -e trace=network. Dies wird ausgegeben, wenn eine TCP-Verbindung akzeptiert, eine HTTP-Anforderung empfangen, eine HTTP-Antwort gesendet und die Verbindung geschlossen wird:

$ strace -v -f -e trace=network -p `cat logs/my_server.pid`
Process 2361 attached with 44 threads - interrupt to quit
[pid  2422] accept(11, {sa_family=AF_INET, sin_port=htons(56289), sin_addr=inet_addr("172.30.1.60")}, [16]) = 14
[pid  2422] getsockname(14, {sa_family=AF_INET, sin_port=htons(7754), sin_addr=inet_addr("172.30.1.60")}, [16]) = 0
[pid  2422] setsockopt(14, SOL_TCP, TCP_NODELAY, [1], 4) = 0
[pid  2422] setsockopt(14, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
[pid  2422] getsockopt(14, SOL_SOCKET, SO_OOBINLINE, [515004615020773376], [4]) = 0
[pid  2388] recvfrom(14, "GET /OPEN_", 10, MSG_PEEK, NULL, NULL) = 10
[pid  2388] recvfrom(14, "GET /OPEN_SESSION?LOGIN=HAS_ADMI"..., 4096, 0, NULL, NULL) = 246
[pid  2388] sendto(14, "HTTP/1.1 200 OK\r\nServer: MY_SER"..., 192, 0, NULL, 0) = 192
[pid  2388] sendto(14, "<?xml version='1.0' encoding = '"..., 680, 0, NULL, 0) = 680
[pid  2361] --- SIGIO (I/O possible) @ 0 (0) ---
[pid  2388] recvfrom(14, "", 4096, 0, NULL, NULL) = 0
[pid  2388] shutdown(14, 2 /* send and receive */) = 0

verwandte Informationen