실행하려는 프로그램이 '포트'가 차단되었다고 불평하거나, 네트워크에서 특정 '포트'가 열려 있으면 보안 문제가 될 수 있다는 글을 읽고 이 글을 찾아오셨을 가능성이 높습니다.
어느 쪽이든 이 글을 끝까지 읽고 나면 모두가 말하는 포트가 정확히 무엇인지 이해하게 되고, 내 컴퓨터에서 어떤 포트가 열려 있고 닫혀 있는지 직접 확인하는 방법까지 알게 될 것입니다.

네트워크 포트란 무엇인가?
먼저 알아야 할 것은 여기서 말하는 포트는 가상(virtual)이라는 점입니다. 공유기, TV, 게임 콘솔, 컴퓨터에 있는 물리적인 네트워크 단자와는 아무런 관계가 없습니다. 포트는 네트워크 하드웨어와 소프트웨어가 정보 트래픽을 체계적으로 관리하기 위한 일종의 구분 체계입니다.
도로의 전용 차선을 떠올려 보세요. 보도는 보행자용이고, 자전거 전용 차선이 있으며, 버스 전용 차선도 있습니다. 포트도 같은 역할을 합니다. 한 포트는 이메일 수신에 사용되고, 다른 포트는 파일 전송 요청이나 웹사이트 트래픽을 처리하는 식입니다.

포트에는 두 가지 대표적인 종류가 있으며, 내 시스템의 어떤 포트가 열려 있고 닫혀 있는지 확인하는 방법으로 넘어가기 전에 간단히 짚고 넘어갈 필요가 있습니다.
TCP 포트와 UDP 포트란?
현대 네트워크에서 사용되는 두 가지 주요 포트 유형은 TCP와 UDP입니다. 각각 전송 제어 프로토콜(Transmission Control Protocol)과 사용자 데이터그램 프로토콜(User Datagram Protocol)을 의미합니다. 즉, 이 두 포트 유형은 서로 다른 네트워크 프로토콜을 사용합니다.
프로토콜은 정보 비트를 어떻게 보내고 받을지에 대한 고유한 규칙 집합이라고 생각할 수 있습니다. 두 포트 유형 모두 인터넷과 가정용 네트워크가 작동하게 만드는 근본적인 인터넷 프로토콜(IP) 위에 구축되지만, 각각 적합한 용도가 다릅니다.

가장 큰 차이점은 UDP로 정보를 보낼 때 발신자가 통신을 시작하기 전에 수신자와 연결을 먼저 설정할 필요가 없다는 점입니다. 편지를 보내는 것과 비슷합니다. 상대방이 메시지를 받았는지 알 수 없고, 피드백을 받을 것이라는 보장도 없습니다.
반면 TCP는 전화를 거는 것과 더 유사합니다. 수신자가 연결을 '받아야' 하며, 누군가 의도적으로 전화를 끊을 때까지 양방향으로 정보가 오갑니다.
UDP 메시지는 일반적으로 지정된 UDP 포트에서 수신 대기 중인 모든 대상에게 네트워크로 브로드캐스트됩니다. 이러한 특성 덕분에 네트워크 운영과 관련된 관리성 메시지에 적합하고, VoIP(인터넷 전화) 스트리밍, 온라인 게임, 실시간 방송 송출에도 완벽합니다.

왜 그럴까요? 이러한 애플리케이션들은 UDP의 낮은 지연 시간과, 데이터가 완벽하지 않아도 충분히 유용한 지속적인 정보 스트림의 이점을 활용합니다. 화상 통화에서 약간의 잡음이 섞이는 것보다 통화 지연이 적은 것이 훨씬 중요하기 때문입니다.
TCP는 UDP보다 훨씬 널리 사용되며, 모든 데이터가 오류 없이 확실하게 수신되도록 보장합니다. UDP만의 특별한 장점이 필요하지 않은 거의 모든 통신은 TCP를 사용합니다.
기본적으로 열려 있는 포트는 무엇일까?
포트의 개수는 상당히 많습니다. 포트 번호는 0부터 65535까지 지정될 수 있습니다! 하지만 그렇다고 해서 어떤 애플리케이션이나 마음대로 아무 포트나 선택할 수 있는 것은 아닙니다. 잘 정립된 표준과 번호 범위가 존재하기 때문에 이 많은 포트 속에서도 체계를 파악할 수 있습니다.

포트 0~1023은 가장 중요하고 핵심적인 네트워크 서비스들과 연결되어 있습니다. 번호가 낮은 포트가 먼저 배정되었기 때문에 당연한 결과입니다. 예를 들어 이메일용 SMTP 프로토콜은 포트 25를 독점적으로 사용합니다.
포트 1024~49151은 '등록된 포트(registered ports)'라고 불리며, 1194번 포트의 OpenVPN이나 1433·1434번 포트의 Microsoft SQL처럼 중요한 공통 서비스에 할당됩니다.
나머지 포트 번호는 '동적(dynamic)' 또는 '개인(private)' 포트로 알려져 있습니다. 이 포트들은 예약되어 있지 않아 누구나 네트워크에서 특정 서비스를 지원하기 위해 사용할 수 있습니다. 유일한 문제는 같은 네트워크에서 두 개 이상의 서비스가 동일한 포트를 사용하려 할 때 발생합니다.

모든 중요한 포트를 하나하나 나열하는 것은 불가능하지만, 다음의 대표적인 포트들은 외워두면 유용합니다:
- 20 – FTP (파일 전송 프로토콜)
- 22 – SSH (보안 셸)
- 25 – SMTP (간이 우편 전송 프로토콜)
- 53 – DNS (도메인 이름 시스템)
- 80 – HTTP (하이퍼텍스트 전송 프로토콜)
- 110 – POP3 (우체국 프로토콜)
- 143 – IMAP (인터넷 메시지 접근 프로토콜)
- 443 – HTTPS (HTTP 보안)
수천 개의 일반적인 포트 번호가 존재하기 때문에 가장 쉬운 방법은 범위를 기억하는 것입니다. 이를 통해 특정 포트가 예약되어 있는지 아닌지 판단할 수 있습니다. 물론 구글 검색을 활용하면 특정 포트를 사용하는 서비스가 무엇인지 순식간에 찾아볼 수도 있습니다.
Windows에서 열린 포트 찾기

TCP와 UDP 포트에 대한 기본 지식을 모두 갖췄으니, 이제 내 컴퓨터에서 어떤 포트가 열려 있고 사용 중인지 확인하는 과정으로 들어가 보겠습니다.
다행히 Windows에는 현재 컴퓨터에서 다양한 애플리케이션과 서비스가 어떤 포트를 사용 중인지 보여주는 매우 유용한 명령어가 내장되어 있습니다.
- 먼저 시작 메뉴를 열고 CMD를 검색합니다.

- CMD를 마우스 오른쪽 버튼으로 클릭한 후 관리자 권한으로 실행을 선택합니다.

- 명령 프롬프트가 열리면 다음을 입력합니다:
Netstat -ab

- 읽기도 전에 빠르게 스크롤되는 긴 정보 목록을 걱정하지 마세요. CTRL+C와 CTRL+V를 사용해 해당 정보를 메모장이나 다른 텍스트 편집기에 복사해서 붙여넣으면 됩니다.
- 대괄호 안의 정보는 해당 포트를 사용 중인 프로그램의 이름입니다. TCP 또는 UDP는 그 포트에서 사용 중인 프로토콜을 나타내며, 숫자는 IP 주소와 콜론(:) 뒤의 포트 번호로 구성됩니다.
차단된 포트 검사하기

위 방법으로 어떤 포트가 어떤 애플리케이션에 의해 사용되고 있는지는 알 수 있지만, Windows 방화벽이 어떤 포트를 적극적으로 차단하고 있는지는 알려주지 않습니다.
- 다시 시작 메뉴를 열고 CMD를 검색합니다.
- CMD를 마우스 오른쪽 버튼으로 클릭한 후 관리자 권한으로 실행을 선택합니다.
- 명령 프롬프트가 열리면 다음을 입력합니다:
netsh firewall show state

이 명령은 Windows 방화벽 설정에 따라 차단된 포트와 열린 포트를 표시해 줍니다.
이 명령이 더 이상 권장되지 않는다는(deprecated) 안내 메시지가 표시될 수 있지만, 새로운 명령어는 우리가 원하는 정보를 보여주지 않습니다. 따라서 당분간 'show state' 명령이 포트 정보를 얻는 가장 빠르고 간편한 방법입니다.
Windows 방화벽이 포트를 차단하지 않는다고 해서 공유기나 ISP(인터넷 서비스 제공업체)가 차단하지 않는다는 의미는 아닙니다. 따라서 마지막으로 외부에서 차단이 발생하고 있는지 확인해야 합니다.
- 시작 메뉴를 열고 CMD를 검색합니다.
- CMD를 마우스 오른쪽 버튼으로 클릭한 후 관리자 권한으로 실행을 선택합니다.
- 명령 프롬프트가 열리면 다음을 입력합니다:
netstat -ano | findstr -i SYN_SENT

목록에 아무것도 표시되지 않으면 차단되는 항목이 없다는 뜻입니다. 반대로 일부 포트가 목록에 나타난다면 해당 포트들이 차단되고 있다는 의미입니다. Windows에서 차단하지 않는 포트가 여기에 표시된다면, 다른 포트로 변경하는 것이 어렵다면 공유기 설정을 점검하거나 ISP에 문의해 보는 것이 좋습니다.
포트 상태를 한눈에 파악하는 유용한 도구
명령 프롬프트는 빠르고 간편한 도구이지만, 포트 구성을 더 체계적으로 파악할 수 있도록 도와주는 세련된 서드파티 애플리케이션들도 있습니다. 여기서 소개하는 두 가지는 그중에서도 인기 있는 예시입니다.
SolarWinds 무료 포트 스캐너

SolarWinds는 다운로드를 위해 이름과 개인 정보를 입력해야 하지만, 실제 정보를 입력할지 여부는 사용자의 선택에 달려 있습니다. 여러 무료 도구를 테스트한 끝에 SolarWinds를 선택했는데, Windows 10에서 정상적으로 작동하면서도 사용하기 쉬운 인터페이스를 갖춘 유일한 도구였습니다.
또한 바이러스 오탐(false positive)을 일으키지 않는 유일한 도구이기도 했습니다. 포트 스캔 소프트웨어의 큰 문제 중 하나는 보안 업체들이 이를 악성코드로 간주하는 경향이 있다는 점입니다. 그래서 대부분의 사용자는 이런 도구에서 발생하는 바이러스 경고를 무시하게 되는데, 이는 오탐과 실제 바이러스를 구분할 수 없기 때문에 위험한 습관입니다.
SolarWinds는 몇 가지 조건이 붙긴 하지만, 실제로 광고된 대로 작동하며 사용법도 간단합니다.
CanYouSeeMe

이름에서 짐작할 수 있듯이 이것은 애플리케이션이 아닌 웹사이트 서비스입니다. 외부 데이터가 로컬 포트를 통과할 수 있는지 확인하기 좋은 첫 번째 출발점입니다. IP 주소를 자동으로 감지하므로 사용자는 테스트할 포트 번호만 지정하면 됩니다.
그러면 해당 포트가 차단되었는지 여부를 알려주며, 이후 차단 원인이 컴퓨터, 공유기, 아니면 인터넷 서비스 제공업체 측에 있는지 직접 추적해야 합니다.
결론
대부분의 사용자에게 포트는 크게 신경 쓸 필요가 없는 영역입니다. 운영체제, 애플리케이션, 네트워크 장비가 알아서 관리해 주기 때문입니다.
하지만 문제가 발생했을 때는 이야기가 달라집니다. 열린 포트를 확인해 수상한 활동을 탐지하거나, 소중한 정보가 어디서 막히고 있는지 정확히 파악할 수 있는 도구를 손에 쥐고 있다면 어떤 상황에도 침착하게 대응할 수 있습니다.