포트 0은 어떤 용도로 사용됩니까?

포트 0은 실제 포트 번호가 아니지만 용도가 있습니다.

대부분의 포트 번호 와 달리 포트 0은 TCP / IP 네트워킹에서 예약 된 포트입니다. 즉, TCP 또는 UDP 메시지에서 사용해서는 안됩니다.

포트 0은 시스템 할당, 동적 포트를 요청하기 위해 네트워크 프로그래밍, 특히 유닉스 소켓 프로그래밍에서 특별한 의미를 지닙니다. 포트 0은 시스템에 알맞은 포트 번호를 찾도록 지시하는 와일드 카드 포트와 같습니다.

TCP 및 UDP의 네트워크 포트는 0부터 65535까지입니다. 0과 1023 사이의 포트 번호는 시스템 포트 또는 잘 알려진 포트로 정의됩니다. IANA (Internet Assigned Numbers Authority)는 인터넷에서이 포트 번호의 공식 용도 목록을 유지 관리하며 시스템 포트 0은 사용되지 않습니다.

네트워크 프로그래밍에서 포트 0 작동 방식

네트워크 소켓 연결을 구성하려면 원본 및 대상 쪽 모두에 하나의 포트 번호가 할당되어 있어야합니다. 송신자 (발신지)가 보낸 TCP 또는 UDP 메시지에는 포트 번호가 모두 포함되어있어 메시지 수신자 (대상)가 올바른 프로토콜 끝점으로 응답 메시지를 보낼 수 있습니다.

IANA는 웹 서버 (포트 80)와 같은 기본 인터넷 응용 프로그램을 위해 지정된 시스템 포트를 미리 할당했지만 많은 TCP 및 UDP 네트워크 응용 프로그램에는 자체 시스템 포트가 없으며 실행을 시작할 때마다 장치의 운영 체제 에서 포트 번호를 얻어야합니다.

소스 포트 x 호를 할당하기 위해 응용 프로그램은 bind ()와 같은 TCP / IP 네트워크 기능을 호출하여 하나를 요청합니다. 응용 프로그램은 특정 번호를 요청하기를 원할 경우 bind ()에 고정 (하드 코딩) 된 번호를 제공 할 수 있지만 시스템의 다른 실행중인 응용 프로그램이 현재이 번호를 사용하고 있기 때문에 이러한 요청이 실패 할 수 있습니다.

또는 연결 매개 변수로 bind ()에 포트 0을 대신 제공 할 수 있습니다. 그러면 운영 체제가 TCP / IP 동적 포트 번호 범위에서 사용 가능한 적절한 포트를 자동으로 검색하고 반환합니다.

응용 프로그램에는 실제로 포트 0이 아니라 다른 동적 포트가 부여됩니다. 이 프로그래밍 규칙의 장점은 효율성입니다. 각 응용 프로그램이 유효한 포트를 얻을 때까지 여러 포트를 시도하기위한 코드를 구현하고 실행해야하는 대신, 응용 프로그램은 운영 체제를 사용하여이를 수행 할 수 있습니다.

Unix, Windows 및 기타 운영 체제는 포트 0 처리시 약간의 차이가 있지만 동일한 일반 규약이 적용됩니다.

포트 0 및 네트워크 보안

포트 0에서 수신 대기중인 호스트로 인터넷을 통해 전송되는 네트워크 트래픽은 네트워크 공격자로부터 우연히 또는 잘못 프로그래밍 된 응용 프로그램에 의해 생성 될 수 있습니다. 호스트가 포트 0 트래픽에 응답하여 생성하는 응답 메시지는 공격자가 해당 장치의 동작 및 잠재적 인 네트워크 취약성에 대해 더 많이 알 수 있도록 도와줍니다.

많은 인터넷 서비스 제공 업체 (ISP) 는 이러한 공격으로부터 보호하기 위해 포트 0 (수신 및 발신 메시지 모두 )에서 트래픽을 차단합니다.