PC는 인터넷 연결을 유지하기 위해 '포트(port)'라고 불리는 수천 개의 디지털 출입구를 관리합니다. 네트워크 문제를 해결하거나 의심스러운 활동을 탐지해야 할 때처럼, 이러한 포트의 사용 현황을 확인해야 하는 상황은 생각보다 자주 발생합니다. 이 글에서는 Windows에서 포트를 가장 확실하게 확인할 수 있는 다양한 방법을 소개합니다.
명령 프롬프트로 포트 확인하기
Windows에서 포트를 확인하는 가장 일반적인 방법은 내장 도구인 netstat(Network Statistics)를 활용하는 것입니다. netstat 명령어에는 여러 스위치 옵션이 있지만, 여기서는 모든 정보를 한 번에 확인할 수 있는 전체 명령어를 사용해 보겠습니다.
명령 프롬프트를 관리자 권한으로 실행한 뒤 아래 명령어를 입력하세요.
netstat -abno
그러면 열려 있는 포트 목록과 해당 포트를 사용하는 Windows 프로세스가 함께 표시됩니다. 목록이 상당히 길 수 있는데, 포트를 추적할 때 주로 봐야 할 항목은 로컬 주소(Local Address), 상태(State), PID입니다.
- 로컬 주소: PC의 IP 주소와 포트 번호가 콜론(:)으로 구분되어 표시됩니다. 예를 들어
0.0.0.0:135라면135가 포트 번호입니다. - 상태: LISTENING 또는 ESTABLISHED로 표시됩니다. LISTENING은 프로그램이 연결을 기다리는 중이라는 뜻이고, ESTABLISHED는 실제 연결이 맺혀 데이터를 주고받고 있다는 의미입니다.
- PID: 프로세스 ID(PID)는 각 프로세스를 식별하는 고유 번호입니다. 포트 옆에 프로세스 이름이 표시되지 않을 경우, 작업 관리자에서 이 PID로 프로세스를 찾을 수 있습니다.
이 정보를 활용하면 특정 포트에서 실행 중인 프로그램을 파악하고, 충돌을 일으키는 프로세스를 종료할 수도 있습니다. 포트 포워딩을 설정할 때도 이 정보가 필수적입니다.
데이터가 너무 많아 원하는 내용을 찾기 어렵다면 findstr 명령어를 함께 사용하면 됩니다. 예를 들어 443 포트의 상태만 보고 싶다면 netstat -ano | findstr :443을 입력하세요. 프로세스 이름이 findstr 출력 형식을 깨뜨릴 수 있어 -b 옵션을 제외했지만, 반드시 빼야 하는 것은 아닙니다.
PowerShell로 포트 확인하기
좀 더 깔끔하게 정리된 목록을 원한다면 PowerShell을 사용하는 것이 좋습니다. Get-NetTCPConnection과 Get-NetUDPEndpoint 명령어를 사용하면 사용 중인 모든 포트를 보기 좋은 행과 열 형태로 확인할 수 있습니다.
PowerShell을 관리자 권한으로 실행한 후, TCP 연결을 보려면 Get-NetTCPConnection, UDP 연결을 보려면 Get-NetUDPEndpoint를 입력하세요. 로컬 IP 주소, 포트 번호(LocalPort 항목), 상태, PID(OwningProcess 항목)가 표시됩니다. 만약 PID가 보이지 않는다면 PowerShell 창을 전체 화면으로 전환한 뒤 명령어를 다시 실행해 보세요.
아쉽게도 이 목록에는 프로세스 이름이 표시되지 않습니다. PID를 확인한 뒤 작업 관리자에서 대조하여 어떤 프로그램인지 찾아야 합니다.
리소스 모니터로 포트 확인하기
GUI 환경을 선호한다면 리소스 모니터(Resource Monitor)가 좋은 선택입니다. Windows 검색창에 "리소스 모니터"를 입력해 리소스 모니터를 실행하세요.
네트워크 탭으로 이동한 뒤 수신 대기 포트(Listening Ports) 섹션을 열면 프로세스 이름, PID, 포트 번호, 프로토콜 등 필요한 모든 정보를 확인할 수 있습니다. 특히 방화벽 상태(Firewall Status) 열이 있어 특정 포트의 현재 방화벽 상태를 바로 알 수 있으며, 포트가 차단된 경우에도 쉽게 파악할 수 있습니다.
열 제목을 클릭하면 목록을 정렬할 수 있습니다. 예를 들어 포트 열을 클릭해 정렬하면 원하는 포트를 빠르게 찾을 수 있습니다. 충돌하는 프로세스를 발견했다면 리소스 모니터 안에서 바로 종료할 수도 있습니다. 네트워크 활동이 있는 프로세스 섹션을 열고 해당 프로세스를 마우스 오른쪽 버튼으로 클릭한 뒤 프로세스 끝내기를 선택하면 됩니다.
TCPView로 포트 확인하기
타사 프로그램 설치를 꺼리지 않고 포트 상황을 더 세밀하게 제어하고 싶다면, 가볍고 강력한 무료 도구인 TCPView를 사용해 보세요. 실행 즉시 모든 프로세스와 그에 연결된 포트 목록이 나타납니다.
이 도구가 다른 방법보다 뛰어난 점은 포트가 열리고 닫히며 패킷을 주고받는 과정을 실시간으로 볼 수 있다는 것입니다. 초록색, 빨간색, 노란색 하이라이트만 주의 깊게 살펴보면 됩니다. 열 제목을 클릭해 목록을 재정렬할 수도 있어, 원하는 프로세스나 동일한 포트를 두고 경쟁하는 프로세스들을 쉽게 찾을 수 있습니다.
종료하고 싶은 프로세스나 연결을 발견하면 해당 항목을 마우스 오른쪽 버튼으로 클릭한 뒤 End process(프로세스 끝내기)를 선택하세요. Close Connection(연결 닫기)을 클릭하면 프로세스 자체는 유지하면서 특정 포트에서의 수신 대기만 중단시킬 수도 있습니다.
이러한 방법으로 얻은 정보는 포트 차단 오류 메시지처럼 문제를 이미 어느 정도 알고 있을 때 가장 유용합니다. 네트워크 문제를 전반적으로 진단 중이라면, 관련 진단 명령어를 함께 실행해 원인을 찾고 해결하는 것이 좋습니다.