DEVLOG|개발 블로그

DNS와 작동 원리 (Domain Name System)

March 25, 2020 9:00 AM:web, internet, dns

DNS(Domain Name System)

도메인이란 집 주소와 비슷하다. 현실 세계의 집을 웹 페이지에 빗대어 비유하자면 '경기도 성남시 ······'는 현실 세계에 있어 집의 주소가 되고, 웹 페이지에 있어서 주소란 'https://github.com/' 꼴로 표현된다. 친구를 만약 집에 초대한다면 현실 세계와 웹을 구분할 필요없이 집의 주소를 알려주고, "이 집으로 찾아와"라고 말하게 된다면 현실 세계에서는 이동해서 찾아가겠지만 웹에서는 브라우저를 통해 집을 찾아가게 된다.

친구의 웹 페이지를 방문하는 것은 매우 쉬운 일이다. 브라우저 주소창에 친구가 알려준 주소를 입력하고 엔터를 치면 친구의 집으로 단숨에 이동할 수 있다. 하지만 우리 눈에 보이지 않는 많은 행위가 내부에서 일어난다. 어찌됬건 컴퓨터 입장에서 보면 도메인 주소는 그 집으로 이동하기 위해서 결정적인 정보가 아니다. 컴퓨터들은 컴퓨터끼리 소통할 때 숫자를 이용해서 소통한다. 서로 누군지 아려면 그 숫자를 알아야 한다. 그 숫자가 바로 IP 주소이다.

하지만 친구 집으로 이동해달라고 컴퓨터에게 요청할 때 친구 집 주소를 숫자로 입력해야 한다면 매우 불편할 것이다. 그렇게 되면 친구의 집에는 사람이 자주 찾아오지 않을 것이다. 그래서 친구의 집을 어떠한 별칭으로 정한다. 그 친구는 172.10.xxx.xxx처럼 되어있는 자신의 집 주소를 **https://example.com**으로 정했다. 이 집 주소를 도메인이라고 한다.

이 도메인으로 컴퓨터에게 요청하면 컴퓨터는 당연히 알지 못하기 때문에 도메인에 대한 숫자로 된 집 주소를 알고있는 똑똑한 컴퓨터에게 물어봐야 한다. 이런 똑똑한 컴퓨터 중 가장 형님같은 존재인 **Root Name Server(루트 네임 서버)**라는 형님에게 물어본다. 이 형님은 요청이 온 도메인에 대해 어떤 DNS 서버가 관리하고 있는지에 대한 정보를 갖고있다. 이 형님에게 물어봤더니 TLD Server라는 곳으로 가라고 한다. 이 서버는 각종 최상위 도메인의 정보를 가지고 있는 서버다. 이 서버에게 물어봤더니 또 다른 곳으로 가라고 한다. 이제 가야할 곳은 각종 네임 서버를 제공하는 서버 주체로 이동한다 (예를 들어서 Amazon Route 53 Name Server같은 곳) 그리고 최종적으로 이 도메인 주소에 대한 IP 주소를 갖고 있는 네임 서버를 통해 IP 주소를 얻어 친구의 집에 이동할 수 있게 된다.

이 모든 것이 Domain Name System이 하는 일이다. 도메인에 대한 요청을 받아들여 컴퓨터가 이해할 수 있는 IP 주소로 매핑해준다.

작동 원리

Tree Domain

  • Local DNS 서버에 요청이 온 도메인에 대해 IP 주소 요청 있으면 IP 주소 반환하고 이동 없으면 다음 단계
  • Root Name Server에게 해당 도메인에 대해 질의
  • 해당 도메인을 관리하는 'xxx' 최상위 도메인에 대한 정보 받음
  • 최상위 도메인 서버에 해당 도메인에 대해 질의
  • 해당 도메인을 관리하는 DNS 서버에 대한 정보 받음
  • 해당 도메인을 관리하는 DNS 서버에 해당 도메인을 질의
  • Local DNS 서버에 IP 주소를 캐싱하고 이동

참고