대부분의 포트 번호와 달리 포트 0은 TCP / IP 네트워킹에서 예약 된 포트입니다. 즉, TCP 또는 UDP 메시지에서 사용해서는 안됩니다.
포트 0은 네트워크 프로그래밍, 특히 포트가 시스템 할당 동적 포트를 요청하는 데 사용되는 소켓 프로그래밍과 관련하여 Unix OS에서 특히 중요합니다. 포트 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 (수신 및 발신 메시지)의 트래픽을 차단하여 이러한 악용을 방지합니다.