사용중인 포트가 없는데 있다고 ?

오늘 굉장히 당황스러운 문제가 발생했습니다."8080포트가 이미 사용 중입니다."하지만 실제로 포트를 점유한 프로세스는 없는 기이한 상황이었어요. 🫤
port포트사용중포트사용중인포트Tomcat톰캣인텔리제이
avatar
2025.03.11
·
7 min read

😠😠😠

오늘 집에서 인텔리제이를 통해 톰캣 서버를 돌리려는데 굉장히 당황스러운 문제가 발생했습니다.

"8080포트가 이미 사용 중입니다."

하지만 실제로 포트를 점유한 프로세스는 없는 기이한 상황이었어요. 🫤


1 시도했지만 실패한 방법들 👀

제가 시도한 방법은 다음과 같았습니다.

1. 현재 사용 중인 포트 확인 및 종료

  • 결과: 사용 중인 포트가 없음.

2. 인텔리제이 내 프로세스 강제 종료

  • 결과: 실행 중인 프로세스가 없음.

3. 톰캣 서버 포트 변경

  • 결과: 8080~8099까지 모두 사용 중이라고 나옴.

4. 인텔리제이 캐시 초기화

  • 결과: 효과 없음.

5. PC 재부팅

  • 결과: 역시 효과 없음.

GPT에게 다른 방법을 물어봤으나.... 네트워크와 방화벽 문제일 가능성을 제시하더라구요 ?!

하지만 저는 로컬 환경인데 방화벽 문제라는 게 이해가 되질 않았습니다.

그래서 구글링을 하던 중 해답을 찾았어요 !!!! (출처 https://cr0c0.tistory.com/43)

---

해결 방법 😀

구글링을 통해 찾은 해결 방법은 다음과 같습니다.

명령 프롬프트(CMD)를 관리자 권한으로 실행한 뒤, 다음 명령어를 입력합니다.

net stop winnat

net start winnat
3928

위 두 명령어를 차례로 입력하면 Windows NAT 서비스(winnat)가 재시작되면서 제가 겪은 포트 문제가 해결됩니다!

사진과 같이 winnat이 종료되고 다시 시작된 후 서버를 실행해보시면 포트 문제가 해결된 것을 확인할 수 있습니다 ㅎㅎ


원인 분석 🔍

이 문제는 Windows NAT(Network Address Translation) 서비스(`winnat`)가 특정 포트를 내부적으로 점유하고 있었기 때문이였습니다 !

잠시 winnat에 대해 알아보자면

Windows NAT (`winnat`) 서비스란?

- `winnat` (Windows NAT, Windows Network Address Translation) 서비스는 네트워크 트래픽을 관리하고 가상화된 환경에서 포트 포워딩을 수행하는 역할을 함.

- 특히 Docker, WSL(Windows Subsystem for Linux), Hyper-V, VPN, Windows 컨테이너 등을 사용할 때 자동으로 포트를 예약함.

- 이 서비스가 활성화되면 일부 포트가 사용 중이 아니더라도 Windows가 내부적으로 점유한 상태로 남을 수 있음.

즉, Window는 네트워크 환경을 최적화하고, 내부적인 충돌을 방지하기 위해 특정 포트 범위를 자동으로 예약하는데 이 과정 중 Window가 특정 범위의 포트를 시스템적으로 예약해 다른 프로세스가 사용할 수 없게 막아두었다는 문제입니다 !!!

이 문제에 대한 근본적인 원인은 제 생각엔 Docker 때문이 아닌가 생각이 듭니다. Docker는 winnat을 사용하기 때문에 포트 예약이 더 빈번히게 이루어지고, 이러한 과정 중 8080 ~ 8099 범위의 포트를 점유하여 실행이 되지 않았던 것입니다 !

만약 포트와 서버에 대한 개념이 없었더라면 저는 아마 방화벽과 네트워크 사이에서 땀을 흘리고 있지 않았을까요 😭

마지막으로 Port에 대해 간략하게 알아보면서 오늘 글을 마무리하도록 하겠습니다 !


📚 포트(Port) 개념 간략 정리

포트(Port)는 컴퓨터가 네트워크에서 데이터를 주고받을 때 사용하는 논리적인 출입구입니다!

쉽게 말해, IP 주소가 "어느 집으로 갈지"를 결정한다면, 포트는 "어느 방(프로그램)으로 들어갈지"를 결정하는 역할을 합니다.

📦 IP 주소 = 아파트 주소

🚪 포트 = 각 세대(집)의 문 번호

👨‍💻 프로그램 = 집 안에 사는 사람

즉, 같은 주소(IP)라도, 몇 호(포트)인지 알아야 정확한 방(프로그램)으로 배달(데이터 전달)이 가능하다!

자주 쓰이는 주요 포트

서비스

포트 번호

HTTP (웹사이트)

80

HTTPS (보안 웹)

443

SMTP (이메일 전송)

25

SSH (원격 접속)

22

MySQL 데이터베이스

3306

Tomcat 기본 포트

8080


이 글로 비슷한 문제를 겪는 분들께 도움이 되길 바랍니다!!!!! 😊







- 컬렉션 아티클