DNS와 동작원리

DNS란?

DNS(Domain Name System)은 사람이 읽을 수 있는 도메인 이름(예: www.naver.com)을 머신이 읽을 수 있는 IP주소(예: 222.122.195.6)로 변환하거나, 그 반대의 변환을 수행한다.

  • 인터넷 상의 DNS 시스템은 이름과 숫자 간의 매핑을 관리하여 마치 전화번호부와 같은 기능을 한다.
  • DNS 서버는 이름에 대한 요청을 IP 주소로 변환하여 최종 사용자가 도메인 이름을 웹 브라우저에 입력할 때 해당 사용자를 어떤 서버에 연결할 것인지를 제어한다. 이 요청을 ‘쿼리’라고 부른다.

DNS 서비스 유형

  1. 신뢰할 수 있는 DNS

    • 개발자가 퍼블릭 DNS이름을 관리하는 데 사용하는 업데이트 메커니즘을 제공한다.
    • 이를 통해 DNS 쿼리에 응답하여 도메인 이름을 IP주소로 변환한다.
    • 신뢰할 수 있는 DNS는 도메인에 대해 최종 권한이 있으며 재귀적 DNS 서버에 IP주소가 담긴 답을 제공할 책임이 있다.
  2. 재귀적 DNS

    • 대개 클라이언트는 신뢰할 수 있는 DNS 서비스에 직접 쿼리를 수행하지 않는다.
    • 대신 해석기 또는 재귀적 DNS 서비스라고 알려진 다른 유형의 DNS 서비스에 연결하는 경우가 일반적이다.
    • 재귀적 DNS 서비스는 호텔 컨시어지와 같은 역할을 하는데, DNS 레코드를 소유하고 있지 않지만 사용자를 대신해서 DNS 정보를 가져올 수 있는 중간자의 역할을 한다.
    • 재귀적 DNS가 일정 기간 동안 캐시된 또는 저장된 DNS 레퍼런스를 가지고 있는 경우, 소스 또는 IP 정보를 제공하여 DNS 쿼리에 답을 한다. 그렇지 않다면 해당 정보를 찾기 위해 쿼리를 하나 이상의 신뢰할 수 있는 DNS 서버에 전달한다.

DNS 기본적인 동작 원리

DNS는 신속하고 원활한 작동을 위해 계층적 구조로 이뤄진다.

  1. 위의 그림과 같이 PC 브라우저에서 www.naver.com을 입력한다. 그러면 PC는 미리 설정되어 있는 Local DNS(단말에 설정되어 있는 DNS, 위의 예시의 경우 203.248.252.2)에게 “www.naver.com이라는 hostname”에 대한 IP 주소를 물어본다.
  2. Local DNS에는 “www.naver.com에 대한 IP 주소”가 있을 수도 없을 수도 있다. 만약 있다면 Local DNS가 바로 PC에 IP주소를 주고 끝난다. (본 설명에서는 Local DNS에 “www.naver.com에 대한 IP 주소”가 없다고 가정하겠다.
  3. Local DNS는 이제 “www.naver.com에 대한 IP 주소”를 찾아내기 위해 다른 DNS 서버들과 통신(DNS 메시지)을 시작한다. 먼저 Root DNS 서버에게 “www.naver.com에 대한 IP 주소”를 요청한다. 이를 위해 각 Local DNS 서버에는 Root DNS 서버의 정보(IP 주소)가 미리 설정되어 있어야 한다. (Root DNS 서버는 전세계에 13대가 구축되어 있다. 미국에 10대, 일본/네덜란드/노르웨이에 각 1대씩이며, 우리나라의 경우 Root DNS 서버가 존재하지는 않지만 Root DNS 서버에 대한 미러 서버를 3대 운용하고 있다고 한다.)
  4. Root DNS 서버는 “www.naver.com의 IP 주소”를 찾을 수 없다. 그래서 Local DNS 서버에게 다른 DNS 서버를 알려주며 응답한다.
  5. 이 다른 DNS 서버는 “com 도메인”을 관리하는 DNS 서버이다.
  6. 이제 Local DNS 서버는 “com 도메인을 관리하는 DNS 서버”에게 “www.naver.com에 대한 IP 주소”를 요청한다.
  7. “com 도메인을 관리하는 DNS 서버”에도 해당 정보가 없다. 그래서 이 DNS 서버는 Local DNS 서버에게 다른 DNS 서버를 알려주며 응답한다.
  8. 이 다른 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 주소를 캐싱을 하고(매번 DNS 서버에 IP 주소를 요청할 필요가 없도록) 그 IP 주소 정보를 단말(PC)에 전달해준다.

Local DNS 서버가 여러 DNS 서버를 차례대로 (Root DNS 서버 → com DNS 서버 → naver.com DNS 서버) 물어봐서 그 답을 찾는 과정을 Recursive Query라고 부른다.


참고문헌

DNS란 무엇입니까 / AWS
DNS 기본 동작 설명 / NETMANIAS
DNS의 작동원리와 이를 공격하는 방법 / ITWorld news

Leave a comment