내 프로그램은 TCP 소켓을 열어두고 그 이유를 추적하려고 합니다(저는 다양한 소켓을 사용합니다). lsof 명령은 다음을 표시합니다.
myprog 258981 root 56u sock 0,8 0t0 2429743 protocol: TCP
myprog 258981 root 57u sock 0,8 0t0 2430142 protocol: TCP
myprog 258981 root 58u sock 0,8 0t0 2430553 protocol: TCP
myprog 258981 root 59u sock 0,8 0t0 2430975 protocol: TCP
myprog 258981 root 60u sock 0,8 0t0 2431371 protocol: TCP
myprog 258981 root 61u sock 0,8 0t0 2431775 protocol: TCP
그래서 나는생각하다이는 마지막 TCP 소켓이 노드 2431775에서 열렸음을 의미합니다. 그래서 그 소켓에 대한 더 많은 정보를 찾으려고 노력 중이에요.
소켓(대상 주소 및 포트)에 대한 자세한 정보를 어떻게 찾을 수 있나요?
답변1
TCP 소켓에는 inode 번호가 없습니다(Plan9에서는 있을 수도 있음). 파일 시스템의 어느 곳에도 "매핑"되지 않습니다. 이를 UNIX 도메인 소켓과 혼동할 수 있습니다.
정보에서 무엇을 찾을 것으로 기대하는지 명확하지 않습니다. 무슨 일이 일어나고 있는지는 프로그램이 소켓을 생성하고 이를 적절하게 처리하지 않는다는 것입니다. 게다가, 처리하더라도 TCP 상태 머신이 예를 들어 미해결 ACK를 기다리고 있을 수 있습니다(사용자가 수행하는 작업과 수행 중인 작업에 따라 다름). 기계 구성 방법을 수행합니다). 따라서 코드에서 소켓이 생성된 위치를 살펴보세요. 혼란스럽다면언제이런 일이 발생하면 strace
도움이 될 수 있습니다.