컴퓨터 네트워킹에서 포트 번호(port number)는 메시지를 보내는 쪽과 받는 쪽을 식별하기 위한 주소 정보의 일부입니다. 포트 번호는 TCP/IP 네트워크 연결과 함께 사용되며, IP 주소에 덧붙이는 추가 식별자라고 설명할 수 있습니다.
네트워크에서 포트 번호란 무엇인가?
포트 번호를 사용하면 한 대의 컴퓨터에서 실행되는 여러 응용 프로그램이 네트워크 자원을 동시에 공유할 수 있습니다. 가정용 공유기(라우터)와 각종 소프트웨어는 이러한 포트를 기반으로 동작하며, 경우에 따라 포트 번호 설정을 직접 구성할 수 있도록 지원하기도 합니다.
참고: 네트워크 포트는 소프트웨어적인 개념으로, 네트워크 장비에 케이블을 꽂는 물리적 포트와는 전혀 다른 것입니다.
포트 번호의 작동 원리
포트 번호는 네트워크 주소 지정과 밀접한 관련이 있습니다. TCP/IP 네트워킹 환경에서 TCP와 UDP는 모두 IP 주소와 함께 작동하는 일련의 포트를 사용합니다.
포트 번호는 전화 내선 번호와 유사하게 이해할 수 있습니다. 회사의 전화 교환기가 하나의 대표 전화번호를 사용하면서 각 직원에게 내선 번호를 배정하는 것처럼, 컴퓨터도 하나의 기본 주소(IP 주소)와 여러 개의 포트 번호를 통해 들어오고 나가는 연결을 처리합니다.
한 건물의 모든 직원이 하나의 전화번호를 함께 사용할 수 있는 것처럼, 하나의 IP 주소로도 라우터 뒤에 있는 다양한 응용 프로그램과 통신할 수 있습니다. 즉, IP 주소는 목적지 컴퓨터를 식별하고, 포트 번호는 그 컴퓨터 안의 특정 응용 프로그램을 식별하는 역할을 합니다.
이는 메일 프로그램, 파일 전송 프로그램, 웹 브라우저 등 어떤 응용 프로그램이든 마찬가지입니다. 예를 들어 웹 브라우저에서 웹사이트를 요청하면, 브라우저는 HTTP 프로토콜을 위해 80번 포트를 통해 통신합니다. 그러면 데이터가 같은 포트로 되돌아와 해당 포트를 지원하는 프로그램, 즉 웹 브라우저 화면에 표시됩니다.
포트 번호의 범위
TCP와 UDP 모두 포트 번호는 0부터 65535까지 사용됩니다. 낮은 번호대는 잘 알려진 인터넷 프로토콜에 할당되어 있습니다. 대표적인 예로 SMTP에는 25번 포트, FTP에는 21번 포트가 사용됩니다.
특정 응용 프로그램이 사용하는 포트 값을 확인하려면 자주 사용되는 TCP 및 UDP 포트 번호 목록을 참고하고, 애플 소프트웨어의 경우 애플 제품이 사용하는 TCP/UDP 포트 목록을 확인하면 됩니다.
포트 번호를 직접 다뤄야 하는 경우
일반적으로 네트워크 장비와 소프트웨어가 포트 번호를 자동으로 처리하기 때문에, 평범한 네트워크 사용자는 포트 번호를 볼 일도 없고 특별히 조작할 필요도 없습니다. 하지만 다음과 같은 상황에서는 포트 번호를 직접 접하게 될 수 있습니다.
- 포트 포워딩(Port Forwarding): 네트워크 관리자는 방화벽을 통과하도록 특정 응용 프로그램의 포트를 허용하기 위해 포트 포워딩을 설정해야 할 수 있습니다. 가정용 네트워크에서도 공유기의 설정 화면에서 포트 포워딩을 지원하며, 대표적인 활용 사례는 공유기 기본 방화벽이 차단하는 비표준 포트를 사용하는 온라인 게임입니다.
- 네트워크 프로그래밍: 네트워크 개발자는 소켓 프로그래밍 등을 수행할 때 코드에 포트 번호를 직접 지정해야 하는 경우가 있습니다.
- URL에 포트 명시: 웹사이트 URL에 특정 TCP 포트 번호를 포함해야 하는 경우도 있습니다. 예를 들어 https://localhost:8080/은 기본 포트 80 대신 8080번 포트를 사용합니다. 이런 형태는 일반 소비자 환경보다 소프트웨어 개발 환경에서 더 자주 볼 수 있습니다.
열린 포트와 닫힌 포트
네트워크 보안 분야에서도 포트 번호는 공격 취약점과 방어 대책의 핵심 요소로 자주 언급됩니다. 포트는 크게 열린 포트(open port)와 닫힌 포트(closed port)로 분류할 수 있습니다. 열린 포트는 새로운 연결 요청을 기다리는(listening) 응용 프로그램이 연결되어 있는 반면, 닫힌 포트에는 그러한 응용 프로그램이 없습니다.
포트 스캐닝(port scanning)이라는 과정은 각 포트 번호로 테스트 메시지를 전송하여 어떤 포트가 열려 있는지 확인합니다. 네트워크 전문가들은 포트 스캐닝을 활용해 공격자에게 노출된 정도를 진단하고, 불필요한 포트를 닫는 방식으로 네트워크를 잠그는(lockdown) 조치를 취합니다. 반면 해커들은 포트 스캐너를 이용해 악용 가능한 열린 포트를 찾아냅니다.
Windows에서는 netstat 명령어를 사용하면 현재 활성화된 TCP 및 UDP 연결에 대한 정보를 확인할 수 있습니다.