네트워크 포트 상태

네트워크 포트 상태

에서 각 네트워크 포트에 필요한 세부 정보를 얻을 수 있기를 원합니다 /etc/services. 각 포트의 상태를 얻기 위해 C++ 프로그램을 개발해야 한다면 어떻게 시작해야 합니까? 나는 내 프로그램에서 전화나 그와 유사한 것을 허용하지 않습니다 netstat. ss정보를 얻을 수 있는 파일이 파일 시스템에 있습니까?

답변1

AND에 대해 외부 조인을 구현하려는지 netstat -a -t -u또는 다른 것에 대해 구현하려는지는 아직 명확하지 않지만 다음은 도움이 될 수 있는 몇 가지 아이디어입니다./etc/servicesnetstat -a -t -u

  • TCP 및 UDP 포트 번호 범위는 1~65536입니다. /etc/services당신이 언급한 파일은 다음과 같습니다하위 집합~의유명한 항구그리고등록된 포트. 더 큰 목록은 다음 위치에 있습니다.IANA 서비스 이름 및 전송 프로토콜 포트 번호 레지스트리. 당신은 그것을 사용할 수 있습니다getService()검색에 나열된 모든 기록을 검색합니다 /etc/services.

  • /proc/net/tcpLinux에서는 파일 /proc/net/tcp6을 읽어 /proc/net/udp수신, 연결, 연결 또는 부분적으로 닫힌 모든 소켓과 해당 로컬 및 원격 주소와 포트의 목록을 얻을 수 있습니다 /proc/net/udp6. 출력은 netstat -a -t -u -n이 파일과 거의 동일하지만 더 아름답습니다. 주소, 포트 번호, 상태는 모두 16진수입니다. 다음 이름을 사용하여 상태 필드의 멋진 버전을 생성할 수 있습니다 /usr/include/netinet/tcp.h.

    낱낱이 세다
    {
      TCP_ESTABLISHED = 1,
      TCP_SYN_SENT,
      TCP_SYN_RECV,
      TCP_FIN_WAIT1,
      TCP_FIN_WAIT2,
      TCP_TIME_WAIT,
      TCP_닫기,
      TCP_CLOSE_WAIT,
      TCP_LAST_ACK,
      TCP_듣기,
      TCP_CLOSING
    };
  • FreeBSD에서는 호출할 수 sysctlbyname("net.inet.tcp.pcblist",...)있으며 구조체 배열을 검색합니다 xtcpcb. netstat이러한 구조가 어떻게 해석되는지 확인하려면 소스 코드를 살펴보는 것이 가장 좋습니다 .

답변2

netstat이것네트워킹의 기초를 학습하기 위한 도구입니다. 어떤 운영 체제를 사용하고 있는지 지정하지 않았지만 이 경우 Linux가 netstat -tun | awk '{ if ($4 ~ ":<portNumber>") print }'원하는 대부분의 작업을 수행해야 한다고 가정합니다. 콜론과 포트 번호로 끝나는 소켓을 선택하여 모든 TCP 및 UDP 소켓을 인쇄합니다.

sshd예를 들어, 내 시스템에 연결된 사람을 찾습니다 .

[root@xxx5b ~]# netstat -tun | awk '{ if ($4 ~ ":22") print }'
tcp        0     64 10.xxx.5.140:22             10.xxx.255.178:51976         ESTABLISHED
tcp        0      0 10.xxx.5.140:22             10.xx.255.178:58535         ESTABLISHED
[root@xxx5b ~]#

마음에 들지 않으면 언제든지 출력물을 시각적으로 스캔 awk할 수 있습니다 . netstat -tun | less목록에 포트가 없으면 netstat시스템에 심각한 문제가 있는 것입니다.

답변3

다음 명령을 사용하십시오.

nmap localhost -p 0-65535

그러면 시스템에 열려 있는 모든 포트가 나열됩니다.

관련 정보