감 잃지말고 개발하기

[Error][Java][Android] java.net.UnknownHostException 본문

Java/Error

[Error][Java][Android] java.net.UnknownHostException

persii 2022. 12. 19. 15:51

Error

java.net.UnknownHostException: Unable to resolve host "www.busanbank.co.kr":
No address associated with hostname

배경

MySQL DB에 저장되어 있는 URL 데이터를 안드로이드 스튜디오 가상 Emulator로 가져오는 도중 문제가 발생했다. 

 

원인

Thrown to indicate that the IP address of a host could not be determined.

 

이 오류는 일반적으로 호스트의 IP 주소를 찾지 못해 생긴 에러인데,

개발환경 혹은 서버에 설정된 DNS가 해당 도메인을 찾을 수 없을 때,

혹은 

VPN 환경이거나 (허용된 IP외에 외부 접근을 못할 때)

작성된 도메인 오타 또는 전후 공백이 있을 경우 해당 오류가 발생할 수 있다.


도메인주소로 접속을 시도해도 실제로는 도메인주소에 매칭된 IP를 찾아 통신한다
(www.google.com = 142.250.204.132)
도메인주소를 ip로 변환하는데 질의 우선순위는 DNS보다 Local의 hosts파일이 우선시 된다 
hosts파일은 내부망에 자체DNS가 없이 여러 서버를 사용할때 ip주소를 외우기 힘들기 떄문에 서버들에 이름을 붙여 Local의 hosts파일에 등록 해두고 사용했었다고 한다
요즘에는 hosts파일을 변조해서 다른 피싱사이트로 접속하게 만드는 악성 소프트웨어들이 나와서 hosts파일을 잘 사용하지 않게 된 것 같습니다


해결

도메인과 IP 주소를 매핑해놓은 로컬 hosts 파일을 이용해 웹서버의 DNS설정을 해준다.

 

1. cmd창을 열고 설정하고자 하는 도메인 주소의 IP를 확인한다. 

ping www.busanbank.co.kr

 

2. hosts 파일을 연다. 

Linux 경로
/etc/
Window 경로
C:\Windows\System32\drivers\etc

 

3. hosts의 하단에 'IP주소' + '호스트명'을 추가, 저장한다.

119.195.116.11 www.busanbank.co.kr

추가 설명

1. hosts 파일

웹상에서 DNS와 동일한 작업을 수행하는 파일. 

호스트 이름에 대응하는 IP주소가 저장되어 있어 도메인 이름 시스템(DNS)에서 주소 정보를 제공받지 않고도 서버의 위치를 찾게 해주는 파일이다.

 

hosts 파일에 설정된 도메인 정보는 로컬 호스트의 DNS 캐시 정보로 남기 때문에 DNS에 의한 질의보다 우선순위가 높다. 때문에 host 파일에 등록한 도메인 정보를 삭제하지 않으면 접속이 정상적으로 안 될 수 있다. 

 

2. DNS(Domain Name System)

더보기

※ Domain & IP 개념 ※
- IP 주소 : 2진수 32자리의 네트워크 주소
   ex. 네이버 홈페이지에 접속하고 싶다면 검색창에 네이버 홈페이지의 IP주소를 입력해야 한다.
          → 번거로움..
          Domain 주소를 만들어 외우기 어려운 IP주소를 대신하도록 만듦.

          → 도메인 이름과 IP 주소를 서로 연결시켜주는 것이 바로 DNS의 역할

DNS는 호스트의 도메인 이름을 웹사이트의 IP 주소로 변환하거나 반대의 경우를 수행할 수 있도록 개발된 데이터베이스 시스템이다.

그리고 이 DNS 시스템 안에서 둘을 이어주는 역할을 하는 서버를 DNS 서버라고 한다.

DNS 서버는 브라우저의 검색창에 도메인 이름을 입력하여 해당 사이트로 이동하기 전, 해당 도메인 이름과 매칭된 IP 주소를 확인하는 작업을 수행한다. 

 

DNS 처리 과정

  1. 브라우저의 검색창에 naver.com을 입력한다.
  2. DNS에서 naver.com에 해당하는 IP 주소(125.209.222.142)를 찾는다.
  3. 이 IP 주소에 해당하는 웹 서버로 요청을 전달하여 클라와 서버간에 통신할 수 있도록 한다.