평소와 다름없이 인텔리제이를 실행할려고 하던 중 다음과 같은 에러를 만나게 되었다. 사실 예전 같으면 재부팅을 통해서 해결될거라 생각하고 시도했었고 실제로도 해당 문제를 해결할 수 있었다.
좀 더 근본적인 문제점을 찾아보고자 확인했고 오류를 곰곰히 읽어보던 중 아래 문장을 확인했다.
간단하게 생각하면 주소가 이미 사용중, 즉 포트가 이미 사용중이란 뜻인데 이 부분에서 의문을 느꼈다. 그렇다면 어떤 프로그램이 할당중인 것일까?
과거 Docker 학습과 리눅스 체제를 연습하기 위해 윈도우에 리눅스 환경을 설치했다. 당연히 1차원적인 해결방법은 Hyper-V 서비스를 중지하면 해결이다! 이 때문에 재부팅을 할 경우 포트 번호가 재할당되어 프로그램이 실행된 것이다.
그러나 결국 양자택일이라는 소리 아닌가..?
내가 알고있는 기본적인 포트 번호 할당 원리이다. 무수히 많은 프로그램이 실행되는 중 왜 이런 충돌이 발생하는 것일까? 분명히 포트 번호가 부족할리는 없는데...
이런 생각을 하면서 이곳저곳 구글링을 해보니 동적 포트 범위를 확인해보라는 글이 있었고 한 번 나도 확인해보았다.
ipv4, ipv6 둘 다 udp 와 tcp 의 범위가 다르다. 원래 이런 것인가? 아님 내 컴퓨터가 이상한 것일까?? 이 부분은 공식 문서를 통해 해결할 수 있었다.
TCP/IP의 기본 동적 포트 범위
IANA(Internet Assigned Numbers Authority) 권장 사항 을 준수하기 위해 Microsoft는 나가는 연결에 대한 동적 클라이언트 포트 범위를 늘렸습니다. 새 기본 시작 포트는 49152이고 새 기본 끝 포트는 65535입니다. 이 증가는 1025~5000의 기본 포트 범위를 사용했던 이전 버전의 Windows 구성에서 변경된 것입니다.
위 글을 보면 동적 포트 범위 시작이 49152 인 것을 확인할 수 있다.
-> 아니 그렇다면 나는 왜??
확인해보니 윈도우 과거 업데이트때 포트 범위가 잘못 설정되는 버그가 존재했는데 이후 업데이트가 진행되었음에도 불구하고 이 범위가 그대로 유지된 것이다..
어쨌든 해결하면 되는 거니까!
원하는 대로 둘 다 변경이 되었다. UDP 같은 경우 정상적으로 설정된 거 같으니 이제는 문제가 없을 것이다. 근데 이 부분이 또 다른 문제를 만드는 건 아닐 지 조금은 두렵기도 하다..