저는 다른 기능들 중에서 tcp 연결을 추적하고 이를 프로세스의 pid와 연결하는 Linux(C++)용 프록시를 작업 중입니다. 이를 위해 /proc/net/tcp에서 inode를 가져온 다음 /proc/pid/fd의 모든 procs를 구문 분석하여 어떤 프로세스에 inode가 포함되어 있는지 확인합니다. 꽤 직설적 인.
문제는 때때로 클라이언트가 프록시가 프로세스의 fd를 구문 분석할 수 있는 것보다 더 빨리 연결을 열고 닫을 수 있다는 것입니다. /proc/net/tcp에 있는 "메모리 내 소켓 위치" 필드를 발견했습니다. https://www.kernel.org/doc/Documentation/networking/proc_net_tcp.txt
그리고 그것이 도움이 될지 궁금합니다. 모든 내용이 매우 빈약하게 문서화되어 있으며 온라인에서 이와 관련된 리소스를 찾지 못했습니다.
내 질문은 다음과 같습니다. 소켓 메모리 위치의 정확한 의미는 무엇이며, 어떻게 액세스할 수 있으며, 거기에서 무엇을 찾을 수 있습니까?
감사합니다.