Standard Port 사전 완벽 가이드
네트워크 포트 번호는 컴퓨터 네트워크에서 특정 서비스나 애플리케이션을 식별하는 데 사용되는 논리적 주소입니다. TCP/IP 통신에서 IP 주소가 컴퓨터를 식별한다면, 포트 번호는 해당 컴퓨터에서 실행 중인 특정 프로세스나 서비스를 식별합니다. 포트 번호는 0부터 65535까지의 범위를 가지며, IANA(Internet Assigned Numbers Authority)에 의해 관리됩니다.
포트 번호의 분류
포트 번호는 크게 세 가지 범위로 나뉩니다. Well-Known Ports(0~1023)는 HTTP(80), HTTPS(443), SSH(22) 등 널리 알려진 서비스에 할당된 포트입니다. Registered Ports(1024~49151)는 MySQL(3306), PostgreSQL(5432), Redis(6379) 등 특정 애플리케이션에 등록된 포트입니다. Dynamic/Private Ports(49152~65535)는 임시 연결에 사용되는 동적 포트입니다.
방화벽 설정과 포트
서버 운영 시 방화벽 설정은 필수적인 보안 작업입니다. 불필요한 포트를 차단하고 필요한 포트만 개방하는 것이 기본 원칙입니다. 웹 서버라면 80(HTTP)과 443(HTTPS) 포트를, 데이터베이스 서버라면 해당 DB의 포트만 허용하는 것이 일반적입니다. 이 도구를 활용하면 각 포트의 용도를 빠르게 확인하여 안전한 방화벽 정책을 수립할 수 있습니다.
TCP와 UDP의 차이
TCP(Transmission Control Protocol)는 연결 지향 프로토콜로 데이터의 순서 보장과 신뢰성 있는 전송을 제공합니다. HTTP, HTTPS, SSH, FTP 등 대부분의 웹 서비스가 TCP를 사용합니다. UDP(User Datagram Protocol)는 비연결 프로토콜로 빠른 전송 속도를 제공하지만 신뢰성은 보장하지 않습니다. DNS 조회, 스트리밍, 온라인 게임 등에서 주로 사용됩니다.
자주 묻는 질문 (FAQ)
Q. Well-Known Port와 Registered Port의 차이점은 무엇인가요?
A. Well-Known Port(0~1023)는 IANA가 공식적으로 지정한 포트로, HTTP(80), HTTPS(443), SSH(22) 등 범용적으로 사용되는 서비스에 할당됩니다. 리눅스에서는 이 범위의 포트를 열려면 루트 권한이 필요합니다. Registered Port(1024~49151)는 특정 애플리케이션이나 서비스가 등록하여 사용하는 포트로, MySQL(3306), PostgreSQL(5432) 등이 여기에 해당합니다. 일반 사용자 권한으로도 사용할 수 있습니다.
Q. 하나의 포트를 여러 서비스가 동시에 사용할 수 있나요?
A. 기본적으로 같은 프로토콜(TCP 또는 UDP)에서 하나의 포트를 동시에 두 개 이상의 프로세스가 바인딩할 수 없습니다. 그러나 TCP와 UDP는 별개의 프로토콜이므로, 예를 들어 포트 53은 DNS가 TCP와 UDP 모두에서 사용합니다. 또한 SO_REUSEPORT 옵션을 사용하면 동일 포트를 여러 프로세스가 공유할 수 있습니다.
Q. 서버 방화벽에서 어떤 포트를 열어야 하나요?
A. 최소 권한 원칙에 따라, 서비스에 꼭 필요한 포트만 열어야 합니다. 웹 서버라면 80(HTTP)과 443(HTTPS), SSH 접속이 필요하면 22(또는 변경된 SSH 포트), 데이터베이스는 가능하면 외부에 노출하지 않고 내부 네트워크에서만 접근 가능하도록 설정하는 것이 안전합니다. 이 포트 사전을 활용하여 각 포트의 용도를 확인하고 불필요한 포트는 반드시 차단하세요.
Q. 포트 스캐닝이란 무엇인가요?
A. 포트 스캐닝은 특정 서버에서 어떤 포트가 열려 있는지 확인하는 기술입니다. Nmap 같은 도구를 사용하여 수행하며, 서버의 보안 취약점을 파악하는 데 활용됩니다. 자신의 서버에 대해 정기적으로 포트 스캐닝을 수행하여 불필요하게 열린 포트가 없는지 점검하는 것이 좋습니다.