"/proc/net/tcp"가 표시되는 순서는 무엇입니까?

"/proc/net/tcp"가 표시되는 순서는 무엇입니까?

/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 업데이트" 단계는 어디에도 없습니다.

관련 정보