본문 바로가기
IT 기본지식

DNS 동작 방식 | Resolver, Root, TLD, Nameserver

by 내기록 2022. 8. 27.
반응형

DNS와 도메인

서버와 같은 단말기(호스트)는 IP 주소로 식별됩니다. 특정 웹 사이트에 접속하기 위해서는 웹 브라우저에 해당하는 웹 서버의 IP 주소를 입력하여 접속해야 하지만, 실제로는 IP 주소가 아닌 URL(https://www.sunrise-min.tistory.com)을 사용해서 접속합니다.

 

여기에는 DNS 방식이 사용된다. DNS란 URL에 포함된 이름에 해당하는 서버의 IP 주소를 알아내는 방식입니다.

사용자는 URL을 입력하지만 실제는 DNS가 백그라운드에서 도메인명(sunrise-min.tistory.com)에 해당하는 IP 주소를 확인하고 그 IP 주소를 가진 서버에 접속합니다.

https://performanceconnectivity.com/dns/

 

URL은 sunrise-min.tistory.com 과 같은 도메인명과 www나 ftp같은 호스트명으로 구성됩니다.

호스트명과 도메인명을 연결한 것을 FQDN(Fully Qualified Domain Name)이라고 합니다.

www.sunrise-min.tistory.com

 

URL은 FQDN에 파일명을 덧붙여 기술하는 방식이다. 파일이 있다면 /파일명.파일 형식을 도메인 뒤에 붙여 표기하면 됩니다.

 

 

 

DNS 작동 원리

 

컴퓨터가 도메인 이름과 연결된 IP 주소를 찾으려면 먼저 DNS 클라이언트, 일반적으로 웹 브라우저를 통해 DNS 쿼리를 수행합니다. 그런 다음 쿼리는 재귀 resolver 라고도 하는 재귀 DNS 서버로 이동합니다.

https://www.cloudflare.com/ko-kr/learning/dns/what-is-dns/

 

1. 사용자가 웹 브라우저에 'example.com'을 입력하면 쿼리는 인터넷으로 이동하며 DNS recursive resolver가 수신합니다.
2. resolver는 DNS 루트 네임 서버(.)를 쿼리합니다.
3. 루트 서버는 해당 도메인에 대한 정보를 저장하는 최상위 도메인(TLD) DNS 서버(예: .com 또는 .net)의 주소로 확인자에 응답합니다. example.com을 검색할 때 우리의 요청은 .com TLD를 가리킵니다.
4. 확인자는 .com TLD에 요청을 합니다.
5. TLD 서버는 도메인의 이름 서버인 example.com의 IP 주소로 응답합니다.
6. 마지막으로 recursive resolver는 도메인의 네임 서버로 쿼리를 보냅니다.
7. example.com의 IP 주소가 네임 서버에서 resolver로 반환됩니다.
8. DNS resolver는 처음에 요청된 도메인의 IP 주소로 웹 브라우저에 응답합니다.

 

DNS 검색의 8단계에 따라 example.com의 IP 주소가 반환되면 브라우저는 웹 페이지에 대한 요청을 할 수 있습니다.

9. 브라우저는 IP 주소로 HTTP 요청을 합니다.
10. 해당 IP의 서버는 브라우저에서 렌더링할 웹 페이지를 반환합니다.

 

 

DNS server types

모든 DNS 서버는 네 가지 카테고리 : 재귀 resolver, 루트 네임서버, TLD 네임서버, 권한 있는 네임서버로 분류됩니다. 

캐싱이 없는 일반적인 DNS 조회에서는 이 네 가지 DNS 서버가 함께 작동하여 지정된 도메인 IP 주소를 클라이언트에 전달하는 작업을 완료합니다.

 

 

DNS Recursive Resolver란?

 

https://www.cloudflare.com/ko-kr/learning/dns/what-is-dns/

 

재귀 resolver(DNS recursor라고도 함)는 DNS 쿼리의 첫 단계입니다. 재귀 resolver는 클라이언트와 DNS 네임서버 사이의 중개자 역할을 합니다. 재귀 resolver는 웹 클라이언트로부터 DNS 쿼리를 받은 후 캐시된 데이터로 응답하거나 요청을 루트 네임서버로 보내고 또 다른 요청을 TLD 네임서버로 보낸 후 마지막 요청을 권한 있는 네임서버로 보냅니다. 재귀 resolver는 요청된 IP 주소가 있는 권한 있는 네임서버로부터 응답을 받은 후 응답을 클라이언트에 보냅니다.

 

* 모든 DNS 해석기에는 소프트웨어에 내장된 13개의 IP 루트 서버 주소 목록이 있습니다. DNS 조회가 시작될 때마다 recursor의 첫 번째 통신은 13개의 IP 주소 중 하나와 이루어집니다.

 

이 과정 중 재귀 resolver는 권한 있는 네임서버에서 받은 정보를 캐시합니다. 클라이언트가 다른 클라이언트가 최근에 요청한 도메인 이름의 IP 주소를 요청하면 확인자는 네임서버와의 통신 프로세스를 우회하고 캐시에서 요청한 레코드를 클라이언트에 전달할 수 있습니다.

 

 

 

DNS 루트 네임서버란?

https://anggeum.tistory.com/entry/DNS-%EA%B0%9C%EB%85%90%EC%9E%A1%EA%B8%B0-2-DNS-%EA%B5%AC%EC%84%B1-%EC%9A%94%EC%86%8C-%EB%B0%8F-%EB%B6%84%EB%A5%98DNS-Resolver-DNS-%EC%84%9C%EB%B2%84

 

https://www.cloudflare.com/ko-kr/learning/dns/glossary/dns-root-server/

 

13개의 DNS 루트 네임서버가 모든 재귀 resolver에 알려져 있으며 이들은 재귀 resolver가 DNS 레코드를 요청하는 과정의 첫 단계입니다. 루트 서버는 도메인 이름을 포함한 재귀 확인자의 쿼리를 수용하며 루트 네임서버는 해당 도메인의 확장자(.com,. net, .org, etc.)에 따라 재귀 확인자를 TLD 네임서버에 보내 응답합니다. 

참고로, 13가지 유형의 루트 네임서버가 있지만 전 세계에 각각의 사본이 다수 있으며, 빠른 응답을 제공합니다. 루트 네임서버의 모든 인스턴스를 더한다면, 전체 서버 수는 632개입니다(2016년 10월 기준).

 

TLD 네임서버란?

TLD(Top Lever Domain) 네임서버는 .com, .net 또는 URL의 마지막 점 뒤에 오는 것 같은 일반적인 도메인 확장자를 공유하는 모든 도메인 이름의 정보를 유지합니다. 예를 들어 TLD 네임서버는 ‘.com’으로 끝나는 모든 웹사이트의 정보를 갖고 있습니다. 사용자가 google.com을 검색하는 경우 재귀 확인자는 루트 네임서버로부터 응답을 받은 후 쿼리를 .com TLD 네임서버에 보내고, 해당 네임서버는 해당 도메인의 권한 있는 네임서버를 가리켜 응답합니다.

TLD 서버는 두 가지로 구분합니다.

  • 일반 최상위 도메인: 국가별로 고유하지 않은 도메인으로, 가장 잘 알려진 일반적인 TLD에는 .com, .org, .net, .edu 및 .gov가 있습니다.
  • 국가 코드 최상위 도메인: 여기에는 국가 또는 주와 관련된 모든 도메인이 포함됩니다. 예로는 .uk, .us, .kr 및 .jp가 포함됩니다.

 

 

권한 있는 네임서버(Authoritative DNS server)란?

https://www.cloudflare.com/ko-kr/learning/dns/what-is-dns/

재귀 resolver가 TLD 네임서버로부터 응답을 받으면, resolver는 해당 응답을 권한 있는 네임서버로 보냅니다.
일반적으로 권한 있는 네임서버는 IP 주소를 확인하는 resolver의 마지막 단계로 DNS 리소스 레코드를 실제로 보관하고 책임지는 서버입니다. 이 서버는 DNS 조회 체인의 맨 아래에 있는 서버로 쿼리된 리소스 레코드로 응답하여 웹 브라우저가 웹 사이트 또는 다른 웹 리소스에 액세스하는 데 필요한 IP 주소에 도달할 수 있도록 합니다. 

권한 있는 네임서버는 도메인 이름에 고유한 정보(예: google.com)를 포함하는 도메인의 IP 주소를 재귀 resolver에 제공합니다.

 

 

(참고)

쿼리가 foo.example.com 또는 blog.cloudflare.com과 같은 하위 도메인에 대한 경우 하위 도메인의 CNAME 레코드를 저장하는 권한을 가진 네임 서버 뒤에 추가 네임 서버가 추가됩니다.

https://www.cloudflare.com/ko-kr/learning/dns/what-is-dns/

 

 

 

 

References

https://www.cloudflare.com/ko-kr/learning/dns/what-is-dns/

https://www.cloudflare.com/ko-kr/learning/dns/dns-server-types/

 

반응형

댓글