나는 임베디드 장치에서 실행될 애플리케이션을 작성했습니다. 설치는 매우 간단합니다. 단지 busybox를 사용하는 것 외에 다른 것은 별로 없습니다. 이 소프트웨어에는 들어오는 TCP/IP 연결을 받아들이는 수신기 스레드가 포함되어 있습니다. 제가 사용하고 있는 포트번호가 장치 /etc/services
파일에 존재하지 않아서 포트가 사용 가능한 것은 알지만, 다른 유틸리티에서 사용할 수 없도록 포트를 어떻게든 등록해야 하는지 궁금합니다. 청취 포트를 등록하기 위해 명시적인 작업을 직접 수행해야 합니까? 아니면 소켓 시스템 기능이 뒤에서 이 모든 것을 처리합니까? 아니면 내가 사용하려는 포트가 존재하지 않는다는 사실이 /etc/services
내 애플리케이션의 해당 측면에 대해 전혀 걱정할 필요가 없다는 것을 의미합니까?
답변1
/etc/services
서비스 이름 확인에만 사용됩니다. 포트를 이름으로 참조하려는 경우가 아니면 이 파일을 업데이트할 필요가 없습니다. 그러나 자신의 정신을 위해서라면 어쨌든 추가하고 싶을 수도 있습니다.
포트 번호를 선택할 때 다음 사항을 고려할 수 있습니다.
root
<1024 포트에만 바인딩 할 수 있습니다 . 이는 민감한 시스템 포트(예: SSH용 포트 22)가 기회주의적 사용자 프로세스에 의해 손상되지 않도록 보호하기 위한 것입니다.- 32768 이상의 포트는 시스템에 의해 동적으로 할당될 수 있으며 일반적으로 나가는 연결에 사용됩니다.
코드가 포트에 성공적으로 바인딩되면 root
프로세스가 아닌 다른 어떤 것도 이를 사용할 수 없습니다.