Windows에서 프로그램이나 개발 서버를 실행하다 보면 “해당 포트가 이미 사용 중입니다”, “Address already in use”, “Port is already in use”와 같은 오류를 만날 수 있습니다.
예를 들어 웹 개발 과정에서 8080 포트를 사용하려는데 다른 프로그램이 이미 해당 포트를 점유하고 있다면 새 프로그램이 정상적으로 실행되지 않을 수 있습니다.
이럴 때 무작정 컴퓨터를 재부팅하기보다 CMD에서 netstat -ano 명령어를 사용하면 현재 어떤 포트가 사용되고 있는지 확인하고, 해당 연결과 관련된 PID(Process ID)까지 찾을 수 있습니다.
PID를 확인한 다음 tasklist 또는 작업 관리자를 이용하면 그 PID가 실제로 어떤 프로그램인지 추적할 수 있습니다.
이번 글에서는 netstat -ano 사용법부터 LISTENING 상태 확인, 특정 포트 검색, PID 확인, tasklist를 이용한 프로그램 찾기, 포트가 이미 사용 중일 때 점검하는 방법까지 자세히 알아보겠습니다.
netstat -ano란?
netstat는 Windows에서 현재 컴퓨터의 네트워크 연결, 포트, TCP 상태 등을 확인할 수 있는 명령어입니다.
여기에 -a, -n, -o 옵션을 함께 사용한 명령어가 다음과 같습니다.
netstat -ano
각 옵션은 다음과 같은 의미를 가집니다.
-a
현재 활성 연결뿐 아니라 수신 대기 상태의 TCP 포트와 UDP 관련 정보를 폭넓게 표시합니다.
-n
IP 주소와 포트 번호를 가능한 한 숫자 형태로 표시합니다.
-o
각 연결과 관련된 프로세스의 PID를 함께 표시합니다.
즉, netstat -ano는 현재 사용 중인 네트워크 연결과 포트를 숫자로 확인하면서 해당 연결을 사용하는 프로세스의 PID까지 함께 보는 명령어라고 이해하면 쉽습니다.
CMD에서 netstat -ano 실행하는 방법
먼저 Windows에서 명령 프롬프트를 실행합니다.
작업 표시줄 검색창에 다음과 같이 입력합니다.
cmd
검색 결과에서 명령 프롬프트를 실행합니다.
이제 다음 명령어를 입력합니다.
netstat -ano
Enter 키를 누르면 현재 네트워크 연결과 수신 대기 포트 등의 정보가 표시됩니다.
결과가 많으면 처음에는 상당히 복잡해 보일 수 있습니다.
하지만 특정 포트를 찾는 것이 목적이라면 모든 줄을 읽을 필요는 없습니다.
findstr 명령어와 조합하면 원하는 포트만 빠르게 검색할 수 있습니다.
netstat -ano 결과는 어떻게 읽을까?
실행 결과는 환경에 따라 다음과 비슷한 형태로 나타납니다.
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 4321
위 값은 설명을 위한 예시입니다.
각 항목은 다음과 같이 이해하면 됩니다.
Proto
TCP 또는 UDP와 같은 프로토콜 정보를 표시합니다.
Local Address
현재 컴퓨터에서 사용하는 IP 주소와 포트 번호를 나타냅니다.
Foreign Address
통신 상대방의 주소와 포트 정보를 나타냅니다.
State
TCP 연결의 현재 상태를 보여줍니다.
PID
해당 연결 또는 포트와 관련된 프로세스의 Process ID입니다.
특정 포트를 어떤 프로그램이 사용하고 있는지 찾는 것이 목적이라면 Local Address와 PID를 가장 중요하게 보면 됩니다.
특정 포트만 찾는 가장 간단한 방법
예를 들어 현재 8080 포트가 어떤 프로세스에서 사용되고 있는지 확인하고 싶다고 가정하겠습니다.
다음 명령어를 실행합니다.
netstat -ano | findstr :8080
여기서 |는 파이프(Pipe)입니다.
앞에서 실행한 netstat -ano의 결과를 뒤의 findstr 명령어로 전달합니다.
그리고 findstr은 그중에서 :8080 문자열이 포함된 줄을 찾아줍니다.
결과가 다음처럼 나왔다고 가정해보겠습니다.
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 4321
가장 오른쪽의 4321이 PID입니다.
즉, PID 4321인 프로세스가 8080 포트를 사용하고 있다는 단서를 얻은 것입니다.
왜 포트 앞에 콜론(:)을 붙일까?
특정 포트를 검색할 때 다음과 같이 입력하는 경우가 많습니다.
findstr :8080
단순히 8080이라고 검색할 수도 있지만 주소나 PID 등의 다른 숫자에 8080이 포함되는 경우까지 검색될 수 있습니다.
포트는 일반적으로 다음과 같이 주소 뒤에 콜론과 함께 표시됩니다.
0.0.0.0:8080
127.0.0.1:8080
192.168.0.10:8080
따라서 :8080 형태로 검색하면 포트 번호를 찾는 목적에 조금 더 적합합니다.
LISTENING 상태는 무엇을 의미할까?
특정 서버 프로그램이나 서비스가 포트를 열고 들어오는 TCP 연결을 기다리고 있다면 LISTENING 상태를 볼 수 있습니다.
예를 들어 다음과 같습니다.
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 4321
이는 PID 4321과 관련된 프로세스가 로컬 8080 포트에서 TCP 연결 요청을 기다리는 상태로 해석할 수 있습니다.
개발 서버, 웹 서버, 데이터베이스, 원격 관리 서비스 등 다양한 프로그램이 특정 포트에서 LISTENING 상태를 가질 수 있습니다.
다만 LISTENING이라고 해서 해당 포트가 무조건 인터넷 전체에 공개되어 있다는 의미는 아닙니다.
Windows 방화벽, 공유기 NAT, 바인딩 주소 및 네트워크 환경에 따라 외부에서 실제로 접근 가능한지는 달라질 수 있습니다.
0.0.0.0:8080은 무슨 뜻일까?
netstat 결과에서 다음과 같은 주소를 볼 수 있습니다.
0.0.0.0:8080
일반적으로 0.0.0.0에 바인딩된 LISTENING 소켓은 해당 시스템의 여러 IPv4 인터페이스에서 해당 포트를 수신하도록 구성된 상태와 관련될 수 있습니다.
반면 다음과 같은 형태도 볼 수 있습니다.
127.0.0.1:8080
127.0.0.1은 루프백 주소입니다.
이 경우 해당 서비스가 로컬 컴퓨터 내부에서만 접근하도록 바인딩되어 있을 수 있습니다.
따라서 같은 8080 포트를 사용하더라도 Local Address가 무엇인지 함께 확인하는 것이 중요합니다.
PID로 실제 프로그램 찾는 방법
netstat에서 PID를 확인했다고 해서 바로 어떤 프로그램인지 알 수 있는 것은 아닙니다.
이때 앞에서 살펴본 tasklist 명령어를 사용할 수 있습니다.
PID가 4321이라고 가정하겠습니다.
다음 명령어를 실행합니다.
tasklist /FI "PID eq 4321"
결과에 해당 PID와 관련된 실행 파일 이름이 나타날 수 있습니다.
예를 들어 설명을 위해 다음과 같은 결과가 나왔다고 해보겠습니다.
example.exe 4321
그렇다면 PID 4321과 관련된 프로세스가 example.exe라는 것을 확인할 수 있습니다.
따라서 기본적인 흐름은 다음과 같습니다.
netstat -ano | findstr :8080
→ 8080 포트의 PID 확인
tasklist /FI "PID eq 4321"
→ PID에 해당하는 프로그램 확인
이 두 명령어를 함께 기억하면 매우 유용합니다.
포트에서 프로그램까지 한 번에 추적하는 순서
특정 포트가 사용 중이라는 오류가 발생했다고 가정하겠습니다.
예를 들어 3000 포트입니다.
먼저 다음 명령어를 실행합니다.
netstat -ano | findstr :3000
결과에서 PID를 확인합니다.
예를 들어 다음처럼 표시되었다고 가정합니다.
TCP 0.0.0.0:3000 0.0.0.0:0 LISTENING 5678
PID는 5678입니다.
이제 다음 명령어를 실행합니다.
tasklist /FI "PID eq 5678"
그러면 5678번 PID를 사용하는 프로세스 이름을 확인할 수 있습니다.
정리하면 다음과 같습니다.
1단계: 포트 검색
netstat -ano | findstr :3000
2단계: PID 확인
결과의 가장 오른쪽 숫자를 확인합니다.
3단계: 프로세스 확인
tasklist /FI "PID eq 5678"
이렇게 하면 포트 → PID → 프로그램 순서로 추적할 수 있습니다.
작업 관리자에서 PID 확인하는 방법
CMD의 tasklist 대신 Windows 작업 관리자를 사용할 수도 있습니다.
작업 관리자를 실행한 뒤 세부 정보 화면 등에서 PID 열을 확인할 수 있습니다.
netstat에서 찾은 PID와 동일한 번호를 찾아 해당 프로세스를 확인하는 방식입니다.
따라서 자신에게 편한 방법을 선택하면 됩니다.
CMD 중심으로 확인하고 싶다면
tasklist /FI "PID eq 번호"
GUI에서 확인하고 싶다면
작업 관리자에서 PID 확인
CMD 명령어를 공부하는 목적이라면 tasklist와 연계해서 사용하는 방법을 알아두는 것이 좋습니다.
ESTABLISHED 상태는 무엇일까?
netstat 결과에는 LISTENING 외에도 ESTABLISHED 상태가 나타날 수 있습니다.
ESTABLISHED는 TCP 연결이 설정되어 실제로 통신할 수 있는 상태와 관련됩니다.
예를 들어 다음과 같은 형태입니다.
TCP 192.168.0.10:51000 203.0.113.10:443 ESTABLISHED 4321
이는 로컬 시스템의 특정 포트와 외부 주소의 포트 사이에 연결이 설정되어 있음을 보여주는 예시입니다.
웹 브라우저, 메신저, 게임 및 클라우드 프로그램 등을 사용하면 ESTABLISHED 연결이 여러 개 나타날 수 있습니다.
따라서 ESTABLISHED 항목이 많다고 해서 그것만으로 문제가 있다는 의미는 아닙니다.
TIME_WAIT는 문제가 있는 상태일까?
netstat에서 TIME_WAIT가 많이 표시되어 걱정하는 경우가 있습니다.
TIME_WAIT는 TCP 연결이 종료된 뒤 일정 시간 상태를 유지하는 정상적인 과정에서 나타날 수 있습니다.
특히 웹 브라우저처럼 짧은 연결을 많이 생성하고 종료하는 프로그램을 사용할 때 TIME_WAIT 항목이 여러 개 보일 수 있습니다.
따라서 TIME_WAIT가 많다는 이유만으로 바이러스나 네트워크 오류라고 판단해서는 안 됩니다.
특정 문제를 진단하려면 프로그램의 동작과 포트 상태, 연결 수의 변화 등을 함께 살펴보는 것이 좋습니다.
UDP 포트에서는 LISTENING이 안 보일 수도 있을까?
TCP와 UDP는 동작 방식이 다릅니다.
TCP에서는 LISTENING, ESTABLISHED 등의 연결 상태가 표시될 수 있지만 UDP는 TCP처럼 연결 상태를 관리하지 않습니다.
따라서 netstat 결과의 UDP 항목에서는 TCP의 LISTENING과 같은 State 값이 동일한 방식으로 나타나지 않을 수 있습니다.
예를 들어 다음과 같은 형태를 볼 수 있습니다.
UDP 0.0.0.0:5353 *:* 4321
따라서 UDP 포트를 찾을 때는 Local Address와 PID를 중심으로 확인하면 됩니다.
netstat -ano에서 PID가 0 또는 4로 나오면?
Windows에서는 일부 네트워크 항목이 시스템 수준의 프로세스와 관련되어 있을 수 있습니다.
예를 들어 PID 4는 일반적인 Windows 환경에서 System 프로세스와 연관되어 표시될 수 있습니다.
이런 항목을 발견했다고 해서 강제로 종료하려고 해서는 안 됩니다.
Windows 시스템 자체의 네트워크 기능이나 커널 수준 서비스가 해당 연결에 관여할 수 있기 때문입니다.
특히 시스템 PID를 대상으로 taskkill을 시도하는 것은 위험할 수 있습니다.
먼저 해당 포트가 왜 사용되고 있는지 Windows 기능이나 서비스와의 관련성을 확인하는 것이 중요합니다.
PID를 찾았다고 바로 프로세스를 종료해도 될까?
그렇지 않습니다.
PID를 찾는 것과 프로세스를 종료하는 것은 별개의 문제입니다.
예를 들어 8080 포트를 사용하는 프로그램을 찾았는데 자신이 실행한 개발 서버라는 것을 확인했다면 정상적으로 프로그램을 종료하면 됩니다.
반면 정체를 알 수 없는 Windows 서비스나 시스템 프로세스라면 무작정 종료하지 않는 것이 좋습니다.
프로세스를 강제 종료하면 저장되지 않은 데이터가 사라지거나 Windows 기능이 제대로 작동하지 않을 수 있습니다.
따라서 기본 순서는 다음과 같습니다.
포트 확인 → PID 확인 → 프로세스 이름 확인 → 프로그램의 역할 확인 → 필요한 경우 정상적인 종료
강제 종료는 마지막 수단으로 생각하는 것이 좋습니다.
특정 PID를 taskkill로 종료하는 방법
확인한 프로세스가 자신이 종료하려는 프로그램이라는 사실이 명확하다면 taskkill을 사용할 수 있습니다.
예를 들어 PID가 4321인 프로세스를 종료하려면 다음과 같습니다.
taskkill /PID 4321
일반적인 종료가 되지 않고 강제 종료가 꼭 필요한 경우 다음과 같은 명령도 사용할 수 있습니다.
taskkill /PID 4321 /F
하지만 /F는 강제 종료 옵션입니다.
저장되지 않은 데이터가 손실될 수 있으므로 습관적으로 사용하지 않는 것이 좋습니다.
먼저 프로그램 자체의 종료 기능을 이용하고, 정상적인 종료가 불가능한 상황에서만 taskkill을 검토하는 것이 안전합니다.
“포트가 이미 사용 중입니다” 오류 해결 흐름
개발 서버나 애플리케이션을 실행하다가 포트 충돌 오류가 발생했다면 다음 순서로 확인할 수 있습니다.
예를 들어 8080 포트가 문제라고 가정합니다.
먼저:
netstat -ano | findstr :8080
PID를 확인합니다.
다음으로:
tasklist /FI "PID eq 확인한PID"
어떤 프로그램인지 확인합니다.
자신이 이전에 실행해둔 서버 프로그램이 남아 있는 것이라면 정상적인 방법으로 종료합니다.
프로그램을 종료할 수 없고 강제 종료가 필요한 경우에만 taskkill 사용을 검토합니다.
또는 프로그램 설정에서 다른 포트를 사용하도록 변경할 수도 있습니다.
즉, 포트 충돌을 해결하는 방법이 반드시 기존 프로세스 강제 종료 하나뿐인 것은 아닙니다.
80번 포트를 사용하는 프로그램 확인하기
웹 서버와 관련된 작업에서는 80번 포트를 확인해야 하는 경우가 있습니다.
다음과 같이 사용할 수 있습니다.
netstat -ano | findstr :80
다만 이 방식은 :80이라는 문자열이 포함된 여러 결과를 반환할 가능성이 있습니다.
보다 정확하게 결과를 판단하려면 Local Address에서 실제 포트가 80인지 직접 확인해야 합니다.
결과에서 PID를 찾은 뒤:
tasklist /FI "PID eq 번호"
를 이용해 프로세스를 확인할 수 있습니다.
443 포트 확인하기
HTTPS와 관련된 443 포트를 확인하려면 다음과 같이 사용할 수 있습니다.
netstat -ano | findstr :443
단, 웹 브라우저를 사용하는 일반적인 환경에서는 외부 서버의 443번 포트와 연결된 항목도 매우 많이 표시될 수 있습니다.
따라서 단순히 443이라는 숫자만 보고 내 컴퓨터가 443 포트를 서버처럼 열고 있다고 판단해서는 안 됩니다.
반드시 Local Address, Foreign Address, State를 구분해서 확인해야 합니다.
내 컴퓨터에서 443 포트를 LISTENING하고 있는 항목과 외부 서버의 443 포트로 연결하고 있는 항목은 서로 다른 의미입니다.
Local Address와 Foreign Address를 헷갈리지 않는 방법
특정 포트를 사용하는 프로그램을 찾을 때 가장 흔한 실수 중 하나입니다.
예를 들어 다음과 같은 결과가 있다고 가정하겠습니다.
TCP 192.168.0.10:51000 203.0.113.10:443 ESTABLISHED 4321
여기서 내 컴퓨터의 포트는 51000입니다.
상대방의 포트가 443입니다.
따라서 이 결과를 보고 “내 컴퓨터가 443 포트를 사용해서 서버를 열고 있다”고 해석하면 안 됩니다.
반대로 다음과 같은 결과라면:
TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 5678
로컬 시스템에서 443 포트를 수신 대기하고 있는 항목으로 볼 수 있습니다.
따라서 Local Address = 내 컴퓨터 쪽, Foreign Address = 통신 상대 쪽이라는 차이를 기억해야 합니다.
netstat -ano로 해킹 여부를 확인할 수 있을까?
netstat를 실행하면 모르는 외부 IP 주소가 많이 나타나기 때문에 해킹을 당한 것이 아닌지 걱정할 수 있습니다.
하지만 일반적인 Windows PC에서도 웹 브라우저, 클라우드 동기화, 업데이트, 메신저, 보안 프로그램 등 여러 소프트웨어가 인터넷 서버와 통신합니다.
따라서 모르는 IP 주소가 있다는 이유만으로 악성 연결이라고 판단할 수 없습니다.
netstat는 연결 정보를 보여주는 진단 도구이지 안전한 연결과 악성 연결을 자동으로 판정하는 보안 프로그램이 아닙니다.
의심되는 프로세스가 있다면 PID를 확인한 후 프로세스 이름, 실행 파일 위치, 디지털 서명, 설치된 프로그램 여부 등을 함께 살펴보는 것이 좋습니다.
악성코드가 의심된다면 Windows 보안 등 신뢰할 수 있는 보안 프로그램으로 별도 검사를 진행해야 합니다.
netstat -ano와 netstat -ab 차이
netstat에는 -b 옵션도 있습니다.
이 옵션을 이용하면 각 연결이나 수신 포트를 만드는 데 관여한 실행 파일과 관련된 정보를 표시할 수 있습니다.
예를 들어 다음과 같은 형태로 사용할 수 있습니다.
netstat -ab
하지만 -b는 충분한 권한이 필요할 수 있으며 결과를 표시하는 데 시간이 더 걸릴 수 있습니다.
일반적인 포트 추적에서는 다음 조합이 간단합니다.
netstat -ano
→ PID 확인
tasklist
→ PID를 프로그램 이름으로 확인
이 방식은 각각의 명령어 역할을 이해하기에도 좋습니다.
netstat -ano 결과를 파일로 저장하는 방법
연결 상태를 기록하거나 나중에 비교하고 싶다면 결과를 텍스트 파일로 저장할 수 있습니다.
다음과 같이 입력합니다.
netstat -ano > netstat.txt
현재 CMD 작업 경로를 기준으로 netstat.txt 파일이 생성됩니다.
바탕 화면에 직접 저장하고 싶다면 환경에 따라 다음과 같이 사용할 수도 있습니다.
netstat -ano > "%USERPROFILE%\Desktop\netstat.txt"
저장된 파일에는 IP 주소, 포트 및 PID 등이 포함될 수 있습니다.
인터넷 커뮤니티 등에 파일을 공유할 경우 공개할 필요가 없는 네트워크 정보는 먼저 확인하는 것이 좋습니다.
netstat 결과를 일정 간격으로 계속 확인할 수 있을까?
네트워크 상태가 계속 변하는 것을 관찰해야 한다면 netstat 자체의 간격 옵션을 활용하는 방법이 있습니다.
다만 일반적인 사용자가 특정 포트 하나를 확인하는 목적이라면 명령을 필요할 때 다시 실행하는 것만으로도 충분합니다.
실시간에 가까운 네트워크 모니터링이 필요하다면 Windows의 리소스 모니터나 전문적인 네트워크 분석 도구가 더 편리할 수도 있습니다.
netstat의 장점은 별도의 프로그램을 설치하지 않고 CMD에서 즉시 확인할 수 있다는 점입니다.
netstat 명령어가 너무 많은 결과를 보여줄 때
현재 PC에서는 수많은 프로그램과 Windows 서비스가 동시에 네트워크를 사용할 수 있습니다.
따라서 netstat -ano 결과가 수십 줄 또는 그 이상 나오는 것은 이상하지 않습니다.
전체 결과를 하나씩 읽기보다 목적에 맞게 필터링하는 것이 효율적입니다.
특정 포트를 찾으려면:
netstat -ano | findstr :8080
특정 PID를 찾으려면:
netstat -ano | findstr 4321
처럼 활용할 수 있습니다.
다만 숫자만 검색할 경우 다른 주소나 포트에 같은 숫자가 포함되어 의도하지 않은 결과가 함께 나올 수 있으므로 결과의 각 열을 직접 확인해야 합니다.
netstat -ano와 tasklist 조합 핵심 정리
특정 포트를 사용하는 프로그램을 찾는 전체 과정은 생각보다 간단합니다.
예를 들어 8080 포트를 찾겠습니다.
1. 포트 확인
netstat -ano | findstr :8080
2. PID 확인
결과 오른쪽의 PID를 찾습니다.
예: 4321
3. 프로세스 확인
tasklist /FI "PID eq 4321"
4. 프로그램 역할 확인
실제 자신이 실행한 프로그램인지, Windows 서비스인지 확인합니다.
5. 필요한 경우 종료
프로그램 자체에서 정상 종료합니다.
정상 종료가 되지 않고 대상이 명확한 경우:
taskkill /PID 4321
강제 종료가 꼭 필요한 경우에만:
taskkill /PID 4321 /F
이 순서를 기억하면 특정 포트 충돌 문제를 훨씬 체계적으로 확인할 수 있습니다.
netstat -ano 사용할 때 흔히 하는 실수
첫 번째는 Foreign Address의 포트를 내 컴퓨터 포트라고 생각하는 것입니다.
특정 로컬 포트를 찾는다면 Local Address를 확인해야 합니다.
두 번째는 LISTENING 포트가 있다는 이유만으로 해킹이라고 판단하는 것입니다.
정상적인 프로그램과 Windows 서비스도 포트를 열 수 있습니다.
세 번째는 PID를 찾자마자 taskkill /F를 실행하는 것입니다.
먼저 어떤 프로세스인지 확인해야 합니다.
네 번째는 예전에 확인했던 PID를 다시 사용하는 것입니다.
PID는 프로세스가 다시 실행되면 달라질 수 있습니다.
다섯 번째는 netstat 결과만으로 외부 접근 가능 여부를 확정하는 것입니다.
방화벽, NAT, 공유기 설정 등의 다른 요소도 영향을 줍니다.
여섯 번째는 모르는 외부 IP가 있다는 이유만으로 악성 프로그램이라고 판단하는 것입니다.
실제 프로세스와 프로그램을 함께 확인해야 합니다.
netstat -ano 주요 명령어 정리
전체 연결, 포트와 PID를 확인합니다.
netstat -ano
8080 포트를 검색합니다.
netstat -ano | findstr :8080
3000 포트를 검색합니다.
netstat -ano | findstr :3000
특정 PID의 프로그램을 확인합니다.
tasklist /FI "PID eq 4321"
확인한 프로세스를 정상적인 taskkill 방식으로 종료합니다.
taskkill /PID 4321
강제 종료가 꼭 필요한 경우:
taskkill /PID 4321 /F
netstat의 전체 옵션을 확인합니다.
netstat /?
처음 사용하는 경우에는 모든 옵션을 외우기보다 netstat -ano → PID → tasklist 흐름부터 익히는 것이 좋습니다.
netstat와 netstat -ano의 차이
기본 netstat만 실행해도 현재 활성 TCP 연결 등의 정보를 확인할 수 있습니다.
하지만 특정 포트를 사용하는 프로그램을 찾으려면 PID가 필요합니다.
이때 -o 옵션이 포함된 netstat -ano가 유용합니다.
netstat
→ 기본적인 네트워크 연결 확인
netstat -ano
→ 연결·수신 포트 등을 숫자로 확인하고 PID까지 표시
따라서 7번에서 살펴본 기본 netstat가 현재 네트워크 연결 상태를 이해하는 입문 명령어라면 이번 netstat -ano는 특정 포트와 실제 프로세스를 연결해서 추적하는 실전 활용법이라고 볼 수 있습니다.
마무리
Windows의 netstat -ano 명령어는 현재 컴퓨터에서 사용 중인 네트워크 연결과 포트를 확인하고 각 항목과 관련된 PID(Process ID)를 찾을 수 있는 매우 유용한 CMD 명령어입니다.
특히 특정 프로그램을 실행했을 때 “포트가 이미 사용 중입니다”라는 오류가 발생한다면 다음 흐름을 기억하면 됩니다.
먼저 원하는 포트를 검색합니다.
netstat -ano | findstr :8080
결과에서 가장 오른쪽에 있는 PID를 확인합니다.
예를 들어 PID가 4321이라고 가정하면 다음 명령어를 사용합니다.
tasklist /FI "PID eq 4321"
이제 해당 PID가 실제로 어떤 프로그램과 관련되어 있는지 확인할 수 있습니다.
즉,
포트 → PID → 프로세스
순서입니다.
그리고 프로세스가 자신이 종료하려는 프로그램이라는 사실을 정확하게 확인한 경우에만 정상적인 종료 방법을 사용합니다.
필요하다면 다음과 같이 taskkill을 사용할 수 있습니다.
taskkill /PID 4321
/F를 붙인 강제 종료는 저장되지 않은 작업이나 시스템 동작에 영향을 줄 수 있으므로 마지막 수단으로 사용하는 것이 좋습니다.
또한 netstat 결과의 Local Address와 Foreign Address를 반드시 구분해야 합니다. 외부 서버가 사용하는 443 포트를 보고 자신의 PC에서 443 포트를 LISTENING하고 있다고 잘못 해석하면 안 됩니다.
7번의 기본 netstat가 네트워크 연결 상태를 이해하는 글이었다면 이번 17번은 그보다 한 단계 깊게 들어가 특정 포트를 사용하는 프로그램을 실제로 찾아내는 방법에 초점을 맞췄습니다.
다음 단계에서는 sfc, DISM, netstat처럼 Windows 문제 해결에 자주 사용되는 CMD 명령어를 계속 확장해 각 명령어가 언제 필요한지 실전 상황과 함께 알아보겠습니다.