백엔드

DNS와 작동원리

배게 2022. 9. 9. 09:03
728x90

1. DNS 란?

 

사전적인 정의부터 보자.

도메인 네임 시스템(Domain Name System, DNS)은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었다.

위키백과에서는 DNS를 이렇게 설명하고 있다.

예를 들면 우리가 자주 접하는 naver.com, google.com 모두 DNS를 가진 DN(Domain Name)이라고 할 수 있다.

이들은 사실 문자열의 탈을 쓴 IP라고 볼 수 있다.

 

cmd에서 구글과 naver의 DN을 적어 ping을 확인해보자.

 

보다시피 google.com 의 IP 주소는 172.217.161.174

naver.com의 IP 주소는 210.89.164.90 각각 확인할 수 있다.

(naver.com에서는 ping을 받아오는걸 실패했는데, 네이버에서 막아놨다고 한다.)

 

이렇게 DN을 통해 자기 컴퓨터가 사이트의 어느 IP주소로 연결되는지 확인할 수 있다.

(자신과 가까운 DNS 서버를 통해 IP주소를 받아온다.)

 

 

 

2. DNS를 사용하는 이유

 

솔직히 네이버에 접속하기 위해 인터넷창에 곧바로 네이버 IP주소를 입력하는 사람은 없겠죠? 있다고 해도 그 많은 사이틀의 IP주소를 일일이 외워서 기억하는 분들은 없을 겁니다. 길고 복잡한 IP주소를 외울 수 없기 때문에 문자 주소를 사용하기 위해 DNS를 사용하게 됩니다.

 

 

 

 

 

 

★ DNS 동작과정

  1. 이제 아래 그림과 같이 PC 브라우저에서 www.naver.com을 입력한다. 그러면 PC는 미리 설정되어 있는 DNS (단말에 설정되어 있는 이 DNS를 Local DNS라 부름)에게 "www.naver.com이라는 hostname"에 대한 IP 주소를 물어본다.
  2. Local DNS에는 "www.naver.com에 대한 IP 주소"가 있을 수도 없을 수도 있다. 만약 있다면 Local DNS가 바로 PC에 IP 주소를 주고 끝난다. 없다면 3번으로 넘어간다.
  3. Local DNS는 이제 "www.naver.com에 대한 IP 주소"를 찾아내기 위해 다른 DNS 서버들과 통신(DNS 메시지)을 시작한다. 먼저 Root DNS 서버에게 "너 혹시 www.naver.com에 대한 IP 주소 아니?"라고 물어본다. 이를 위해 각 Local DNS 서버에는 Root DNS 서버의 정보 (IP 주소)가 미리 설정되어 있어야 한다.
  4. Root DNS란?전세계에 13대가 구축되어 있다. 미국에 10대, 일본/네덜란드/노르웨이에 각 1대씩... 그리고 우리나라의 경우 Root DNS 서버가 존재하지는 않지만 Root DNS 서버에 대한 미러 서버를 3대 운용하고 있다고 한다.
  5. Root DNS 서버는 "www.naver.com의 IP 주소"를 모른다. 그래서 Local DNS 서버에게 "난 www.naver.com에 대한 IP 주소 몰라. 나 말고 내가 알려주는 다른 DNS 서버에게 물어봐~" 라고 응답을 한다.
  6.  다른 DNS 서버 "com 도메인"을 관리하는 DNS 서버이다.
  7. 이제 Local DNS 서버는 com 도메인을 관리하는 DNS 서버에게 다시 "너 혹시 www.naver.com에 대한 IP 주소 아니?"라고 물어본다.
  8. 역시 "com 도메인을 관리하는 DNS 서버"에도 해당 정보가 없다. 그래서 이 DNS 서버는 Local DNS 서버에게 "난 www.naver.com에 대한 IP 주소 몰라. 나 말고 내가 알려주는 다른 DNS 서버에게 물어봐~"라고 응답을 한다. 이 다른 DNS 서버는 "naver.com 도메인"을 관리하는 DNS 서버이다.
  9. 이제 Local DNS 서버는 "naver.com 도메인을 관리하는 DNS 서버"에게 다시 "너 혹시 www.naver.com에 대한 IP 주소 있니?"라고 물어본다.
  10. "naver.com 도메인을 관리하는 DNS 서버"에는 "www.naver.com 호스트네임에 대한 IP 주소"가 있다. 그래서 Local DNS 서버에게 "응! www.naver.com에 대한 IP 주소는 222.122.195.6이야~"라고 응답을 해 준다.
  11. 이를 수신한 Local DNS는 www.naver.com에 대한 IP 주소를 캐싱을 하고(이후 다른 넘이 물어보면 바로 응답을 줄 수 있도록) 그 IP 주소 정보를 단말(PC)에 전달해 준다.

 

이와 같이 Local DNS 서버가 여러 DNS 서버를 차례대로 (Root DNS 서버 -> com DNS 서버 -> naver.com DNS 서버) 물어봐서 그 답을 찾는 과정을 Recursive Query라고 부릅니다.

 

 

 

 

 

 

 

 

 




 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

출처 : https://velog.io/@goban/DNS%EC%99%80-%EC%9E%91%EB%8F%99%EC%9B%90%EB%A6%AC