lsofはプロトコルを示しています:TCP

lsofはプロトコルを示しています:TCP

私は走り、sudo lsof -p $(pidof foo)これらをたくさん得ました。これが何を示すかを知っている人はいますか?プロセスから来るものであることを知っていますが、ポート/IPアドレスはありません。

COMMAND    PID USER   FD      TYPE             DEVICE  SIZE/OFF      NODE NAME
foo   115450 root  592u     sock                0,7       0t0 957442022 protocol: TCP
foo   115450 root  593u     sock                0,7       0t0 956964126 protocol: TCP
foo   115450 root  594u     sock                0,7       0t0 957091053 protocol: TCP
foo   115450 root  595u     sock                0,7       0t0 957498237 protocol: TCP
foo   115450 root  596u     sock                0,7       0t0 957077603 protocol: TCP
foo   115450 root  597u     sock                0,7       0t0 957211699 protocol: TCP

答え1

Stephen Harrisの返信がコメントとして投稿され、削除された場合は返信として投稿します。

アプリケーションはTCPドメ​​インにソケットを作成しましたが(おそらくソケット(2)を介して)、どのポートにもソケットをバインドしませんでした(例:connect(2)、listening(2)、またはバインディング(2)を介して)。

答え2

ソケットを誤って使用しているコードを見つけるには、「-e Trace = network」オプションと一緒にstraceを試してください。例えば、

[pid 16700] getsockopt(6, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
[pid 16700] getpeername(6, {sa_family=AF_INET, sin_port=htons(12345), 
 sin_addr=inet_addr("10.4.50.77")}, [112->16]) = 0
[pid 16700] getsockname(6, {sa_family=AF_INET, sin_port=htons(23456), 
 sin_addr=inet_addr("10.4.100.60")}, [112->16]) = 0
[pid 16700] setsockopt(6, SOL_TCP, TCP_NODELAY, [1], 4) = 0
[pid 16700] setsockopt(6, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
[pid 16700] setsockopt(6, SOL_TCP, TCP_KEEPINTVL, [15], 4) = 0
[pid 16700] setsockopt(6, SOL_TCP, TCP_KEEPIDLE, [15], 4) = 0

関連情報