윈도우11을 사용하다 보면 네트워크 연결 문제나 특정 프로그램의 통신 오류로 인해 포트 점검이 필요한 경우가 많습니다. 예를 들어, 로컬 서버를 구동하거나 온라인 게임, NAS, CCTV, 리모트 접속 프로그램(예: 원격 데스크톱, OBS, SQL 서버 등)을 사용할 때 포트가 닫혀 있으면 연결이 이루어지지 않습니다.
특히 방화벽이나 백신이 포트를 차단하고 있는지, 혹은 특정 애플리케이션이 이미 해당 포트를 점유하고 있는지 구분해서 확인해야 할 때가 있습니다.
이 경우 명령 프롬프트와 파워쉘 명령어를 활용해 어떤 포트가 열려 있는지 확인하고, TCP/UDP 통신이 정상 작동하는지 진단할 수 있습니다.
목차
1. netstat 명령어로 열린 포트 확인하기
가장 기본적인 방법은 명령 프롬프트(cmd)를 이용하는 것입니다.
netstat은 현재 컴퓨터에서 열려 있는 모든 포트와 네트워크 연결 상태를 한눈에 확인할 수 있는 명령어로, TCP와 UDP 프로토콜 기반의 연결 정보를 표시해줍니다. 또한 프로그램이 어떤 포트를 사용 중인지, 외부와 어떤 연결이 이루어지고 있는지를 빠르게 파악할 수 있습니다.
시작 버튼을 클릭한 다음, 검색 상자에 cmd를 입력하고 명령 프롬프트를 관리자 권한으로 실행합니다. 그리고 다음 명령어를 실행합니다.
netstat -ano
- -a : 모든 연결과 대기 중인 포트를 표시
- -n : 주소와 포트를 숫자로 표시
- -o : 각 연결에 대한 프로세스 ID(PID) 표시
표시된 목록에서 “LISTENING” 상태인 항목이 현재 열려 있는 포트입니다. PID 번호를 확인한 뒤, 어떤 프로그램이 해당 포트를 사용하는지 알고 싶다면 다음 명령을 실행합니다.
tasklist | find "PID번호"
출력 내용이 많아 가독성이 떨어진다면 findstr 명령을 함께 사용해 특정 포트만 검색할 수 있습니다.
netstat -ano | findstr "80"
2. PowerShell로 TCP, UDP 포트 상태 확인하기
PowerShell에서는 Get-NetTCPConnection 명령어를 통해 현재 열린 TCP 포트의 상태를 정밀하게 확인할 수 있습니다.
이 명령어는 netstat보다 가독성이 높고 결과를 객체 형태로 출력하기 때문에, 특정 포트나 상태만 선택적으로 필터링하기에 매우 유용합니다.
참고 : UDP 포트를 확인하려면 Get-NetUDPConnection 명령어로 치환하면 됩니다.
Get-NetTCPConnection
이 명령은 모든 TCP 연결의 로컬/원격 주소, 포트, 상태, 프로세스 ID를 표시합니다. 다만 ProcessName은 기본적으로 표시되지 않기 때문에, 아래와 같이 Get-Process를 조합하면 프로세스 이름까지 함께 볼 수 있습니다.
Get-NetTCPConnection | Select-Object LocalAddress, LocalPort, State, OwningProcess, `
@{Name='ProcessName';Expression={(Get-Process -Id $_.OwningProcess).ProcessName}}
이렇게 하면 현재 열린 모든 TCP 포트와 연결 상태, 해당 포트를 점유 중인 프로세스 이름까지 한눈에 확인할 수 있습니다.
특정 포트가 열려 있는지 확인하려면 -LocalPort 매개변수를 이용합니다.
Get-NetTCPConnection -LocalPort 8380
특정 포트를 사용 중인 프로세스 이름을 함께 보려면 Select-Object 구문을 추가해서 다음처럼 작성합니다.
Get-NetTCPConnection -LocalPort 8380 | Select-Object LocalAddress, LocalPort, State, OwningProcess, `
@{Name='ProcessName';Expression={(Get-Process -Id $_.OwningProcess).ProcessName}}
3. 특정 포트 개방 여부 테스트
Test-NetConnection 파워쉘 명령어는 지금 이 컴퓨터에서, 다른 컴퓨터의 특정 포트로 연결이 가능한지를 테스트하는 명령어입니다. 즉, 특정 포트가 외부에 열려 있는지 확인할 때 사용할 수 있습니다.
예를 들어, 집 밖에서 회사 서버의 원격 포트(3389)가 열려 있는지 확인하고 싶다면, 내 노트북(집)에서 아래와 같이 실행합니다.
Test-NetConnection -ComputerName 서버IP -Port 3389
명령 실행 후 결과에 TcpTestSucceeded : True가 표시되면, 해당 서버의 3389 포트가 외부에서 열려 있고 접속 가능한 상태입니다.
반대로 False일 경우, 방화벽이나 라우터, 혹은 서버 자체 설정에서 포트가 닫혀 있을 가능성이 높습니다.
서버 IP를 localhost로 바꾸면 내 컴퓨터의 특정 포트 개방 여부를 확인할 수 있으니 참고하시길 바랍니다.
4. 리소스 모니터에서 열린 포트 확인하기
리소스 모니터는 시각적으로 보기 편하고, 프로세스·포트·서비스의 연관 관계를 한 번에 파악할 수 있어 초보자에게 유용합니다.
Ctrl + Shift + Esc를 눌러 작업 관리자를 열고, 상단의 [성능] → [리소스 모니터 열기]를 클릭합니다.
리소스 모니터 창에서 [네트워크] 탭 → [수신 대기 포트(Listening Ports)]를 선택합니다.
현재 열려 있는 포트 목록, 프로토콜(TCP/UDP), 방화벽 상태, 해당 포트를 사용 중인 프로세스를 자세히 확인할 수 있습니다.
특정 프로그램을 종료하거나 방화벽 규칙을 적용하기 전에, 여기에서 실제로 포트가 열려 있는지를 미리 점검하면 좋습니다.
마치며
윈도우11에서는 netstat, PowerShell, 리소스 모니터 등 다양한 방법으로 열린 포트를 확인할 수 있습니다.
서버 운영자나 네트워크 관리자라면, 포트가 정상적으로 열려 있는지 수시로 점검하는 습관이 중요합니다. 프로세스 ID(PID)와 함께 확인하면 원치 않는 서비스가 포트를 점유하는 문제도 쉽게 해결할 수 있습니다.
FAQ
프로그램의 프로세스 이름을 확인한 뒤 tasklist | find “프로세스이름”으로 확인할 수 있습니다. 명령어를 사용하기 어렵다면 본문을 참고해 리소스 모니터를 활용해 보세요.
findstr 명령을 함께 사용하세요. 예: netstat -ano | findstr :443
윈도우 방화벽 외에 공유기 포트포워딩 또는 ISP 차단 여부도 함께 확인해야 합니다.
Test-NetConnection -ComputerName [내 IP] -Port [번호] 명령어를 사용해 보세요.
윈도우 방화벽에서 인바운드 규칙을 추가하거나, 해당 포트를 사용하는 프로그램이 실행 중인지 확인하세요.