관리 메뉴

개발 일기

DNS, 그리고 동작 방식 본문

backend/인터넷

DNS, 그리고 동작 방식

jonghyuck.hong

DNS란 뭘까?

DNS가 뭔지 모르는 사람일지라도 한번도 사용해보지 않은 사람은 없을 것이다. 

 

DNS란 Domain Name System의 줄임말이며 호스트의 도메인을 네트워크 주소로 변환하거나 그 반대의 역할을 수행하는 시스템이다.

DNS 서버는 클라이언트가 도메인 이름을 브라우저에 입력하면 사용자를 어떤 IP주소에 연결할 것인지를 제어해주고 이 요청을 쿼리라고 부른다.

 

왜 사람들은 DNS를 사용할까?

이유는 아주 간단하다. 지난번 인터넷이 어떻게 동작되는가?jonghyuck.tistory.com/16에서도 언급했지만 우리의 기억력이 아주아주 좋아서 내가 접속하는 곳의 IP 주소를 알고있다면 참 편할 것이다. 하지만 그게 말이 되는가? 다음과 같은 모습을 상상해보자.

 

인터넷이 어떻게 동작하는가?

참고 문헌: developer.mozilla.org/ko/docs/Learn/Common_questions/How_does_the_Internet_work 인터넷은 어떻게 동작하는가? - Web 개발 학습하기 | MDN 인터넷은 어떻게 동작하는가? 이 글에서는 인터넷의 개념..

jonghyuck.tistory.com

 

예시 : 

(가명) 창모는 아침에 네이버에 접속하기 위해 PC를 켜고 네이버의 주소인 192.492.482.184를 쳐서 들어갔다. 하지만 자신이 찾는 정보가 없어서 구글에 접속하기 위해 183.274.592.184를 주소창에 검색하고 들어갔다. 그런데 뭔가 접속이 되지 않았고 찾아보니 주소가 183.274.592.184 가 아닌 183.274.592.183으로 어제 변경되었다고 한다.결국 창모는 내가구글 IP주소가 변경된것까지 알아야 하냐?하고 불평을 하고 PC를 끄고 그날 하루를 날렸다.

 

정말 말도 안되는 예시일 수도 있지만 이는 충분히 가능한 일이다. 실제로 특정사이트의 IP는 변경되는경우도 많은데도 우리가 즐겨찾기나 google.com과 같은 주소로 접속할 수 있는것은 누군가(개발자) 바뀐 IP를 도메인에  다시 연결시켜주었기 때문이다. 심지어 더 최악의 경우도 발생할 수 있다. 그럼 왜 DNS를 사용해야 하는지 알았으니 어떻게 DNS가 동작하는지도 살펴보자.

 

동작방식

출처 : https://www.netmanias.com/ko/post/blog/5353/dns/dns-basic-operation

위 한장의 그림으로 도메인에 대한 동작을 알 수 있다. 

  1. PC 브라우저에서 www.naver.com 을 입력한다. 그러면 PC는 미리 설정되어 있는 DNS (단말에 설정되어 있는 이 DNS를 Local DNS라 부른다, 각 PC에는 고유의 설정된 Local DNS값이 존재한다.)에게 "www.naver.com이라는 hostname"에 대한 IP 주소를 물어본다.
  2. Local DNS에는 "www.naver.com에 대한 IP 주소"가 있을 수도 없을 수도 있다. 만약 있다면 Local DNS가 바로 PC에 IP 주소를 주고 끝나고 없다면 아래 과정을 따른다. 
  3. Local DNS는 이제 "www.naver.com에 대한 IP 주소"를 찾아내기 위해 다른 DNS 서버들과 통신(DNS 메시지)을 시작한다. 먼저 Root DNS 서버에게 "너 혹시 www.naver.com 에 대한 IP 주소 아니?"라고 물어본다. 이를 위해 각 Local DNS 서버에는 Root DNS 서버의 정보 (IP 주소)가 미리 설정되어 있어야 한다.
  4. 여기서 "Root DNS"라 함은 좀 특별한 녀석인데 이 Root DNS 서버는 전세계에 13대가 구축되어 있으며, 미국에 10대, 일본/네덜란드/노르웨이에 각 1대 그리고 우리나라의 경우 Root DNS 서버가 존재하지는 않지만 Root DNS 서버에 대한 미러 서버를 3대 운용하고 있다. 즉, 이 Root DNS란 전세계에 분포되어 있는 거대한 전화번호책 같은 존재이다.
  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라고 부른다.

 

  • http://www.naver.com/index.html    -> URL
  • www.naver.com                                ->   HOST NAME
  • .com                                                  ->   Top-level Domain Name
  • .naver.com                                         ->   Second-level Domain Name

 

위 내용은 www.netmanias.com/ko/post/blog/5353/dns/dns-basic-operation에 유창모 님이 설명하신 내용입니다. DNS에 대한 개념을 쉽게 설명해주셔서 참고 했습니다. 좀 더 구체적으로 들어갈수도 있겠지만 우선 이정도만 알고 다른 지식을 쌓는것도 좋은것 같아서 여기까지 설명하겠습니다.

'backend > 인터넷' 카테고리의 다른 글

웹호스팅이란 뭘까?  (0) 2021.03.18
도메인 이름 이란?  (0) 2021.03.15
브라우저, 그리고 동작 방식  (0) 2021.03.15
HTTP와 응답코드  (0) 2021.03.15
인터넷이 어떻게 동작하는가?  (0) 2021.03.12
Comments