/proc/net/tcp
보거나 파일을 볼 때 /proc/net/tcp6
컴퓨터 자체에 열려 있는 포트를 볼 수 있습니다.
하지만 이러한 항목이 어떤 순서로 나열되어 있는지 궁금하십니까?
답변1
에서 언급했듯이이 커널 문서 파일,, 목록을 생성하는 실제 코드는 다음과 같습니다.Linux 커널 소스 파일.../net/ipv4/tcp_ipv4.c. 문서 파일에는 모든 청취 소켓이 먼저 나열되고 그 뒤에 설정된 연결이 나열되어 있다고 명시되어 있습니다.
어떤 종류의 추가 분류도 이루어지지 않습니다. 따라서 커널에 TCP 소켓 상태 저장이 다시 구현되면 정확한 순서(또는 비순서)가 변경될 수 있습니다. 즉, 다른 커널 버전이 매우 다른 작업을 수행할 수 있습니다.
다음과 관련된 네 가지 주요 기능이 있는 것 같습니다 /proc/net/tcp
.
tcp4_seq_start()
커널 TCP 데이터 구조를 탐색하기 위해 반복자를 시작합니다.tcp4_seq_show()
다양한 하위 기능을 사용하여 현재 레코드를 텍스트 줄로 번역합니다.tcp4_seq_next()
다음 데이터 레코드 찾기tcp4_seq_stop()
파일이 닫히거나 목록이 완료되면 반복자를 정리합니다.
목록을 생성하는 커널 데이터 구조개별 TCP 연결을 처리하는 데 사용되는 실제 데이터 구조입니다., 어떤 의미에서는 시스템 호출을 실행하는 프로세스의 동작으로 인해 항목이 삽입된다고 listen()
말할 수도 있습니다. connect()
별도의 "/proc/net/tcp 업데이트" 단계는 어디에도 없습니다.