DNS (Domain Name System)

ohyujeong·2023년 12월 24일
0

network

목록 보기
8/8

DNS (Domain Name System)


DNS는 인터넷 전화번호부와 같은 역할을 하여 사람들이 쉽게 웹 사이트의 주소를 찾을 수 있게 해준다.
사용자가 숫자로 된 IP 주소 대신 도메인 이름을 사용하여 웹 사이트에 접속을 하면, DNS는 그 도메인 이름에 해당하는 IP 주소를 찾아 넘겨준다.
이렇게 전화번호부에서 이름으로 연락처를 찾듯, 도메인 이름 example.com 으로 해당 웹 서버의 IP 주소 93.184.216.34 를 찾는 시스템을 DNS라고 한다.

DNS는 무수히 많은 도메인을 처리하기 위해 전 세계에 걸친 분산 시스템계층적 구조로 이루어져 있다.
분산 시스템을 통해 도메인을 . (dot)으로 구분해서 각 기관에서 관리하도록 하고, 이렇게 분산 시스템을 통해 나누어진 도메인은 계층적 구조로 IP 주소를 매핑한다.


용어 정리

웹 사이트 주소 www.example.com 을 다음과 같이 표현할 수 있다.

Host Name과 Domain Name으로 분류하는 방식

Host Name

  • Host란 네트워크에서 특정 IP 주소를 가지고 있는 컴퓨터를 의미한다.
  • 네트워크에서 장치를 식별하는 데 사용된다.

Domain Name / Domain / Root Domain

  • 인터넷에서 조직이나 개체를 나타내는 이름이다. 이 domain name 아래 여러 host가 존재할 수 있다.
  • 다음과 같이 한국의 domain 등록기관인 후이즈에서 이 domain name에 해당하는 부분을 입력하여 등록한다.

FQDN(Fully Qualified Domain Name)

  • Host Name과 Domain Name을 함께 명시하여 전체 경로를 모두 표기하는 것을 FQDN 이라고 한다.
  • FQDN은 DNS의 트리 구조에서 장치(컴퓨터)의 정확한 위치를 지정할 수 있어야 한다.
    예를 들어 mail.example.com 의 경우
    mail 은 host name이고 특정 이메일 서버를 가리킨다.
    example.com 은 domain name으로 인터넷 상에서 어떤 조직이나 개체를 나타낸다.
    ➡️ 이에 따라 mail.example.comexample.com domain 내에 위치한 mail 서버를 정확하게 식별할 수 있으므로 FQDN이다.

계층적으로 분류하는 방식

오른쪽에서 왼쪽으로 갈수록 상위레벨에서 하위레벨로 진행된다.

Root domain

  • 계층적으로 Domain을 표현할 때에도 'Root domain' 용어가 사용된다.
    최상위 레벨에 위치하는 domain 으로, 계층적 구조의 기점을 의미한다.
  • 'root' 나 'root level' 이라고도 사용되고 '.' 으로 표현된다.
  • 실제로 주소에는 보이지 않지만 모든 domain name의 가장 끝에 존재한다.

TLD (Top-Level Domain)

  • 전 세계적으로 표준화된 분류 체계를 따라 해당 Domain이 어떤 종류의 조직이나 목적으로 사용되는지를 나타낸다.
  • 예를 들어 .com 은 상업적 목적의 웹사이트에 사용되고, .gov는 정부 기관, .edu는 교육 기관, .kr은 한국에 속한 웹사이트를 나타낸다.

SLD (Second-Level Domain)

  • TLD 바로 앞에 위치한다.
  • 특정 웹사이트나 조직을 식별하는 데 사용된다.

Subdomain / Third-Level Domain

  • 기본 Domain name에 추가적인 접두어를 붙여 웹 사이트 내의 다양한 섹션 또는 기능을 구분하기 위해 사용된다.
  • 새로운 도메인을 구매하지 않고도 subdomain을 통해 웹사이트의 다양한 부분을 확장할 수 있어 비용 측면에서 효율적이다.
  • 통상 subdomain은 기본 domain name의 하위 doamin을 의미하는 용어로 사용되고 있는데, 더 큰 의미로는 부모 domain에 속하는 하위 domain을 의미한다.
    예를 들어 docs.aws.amazon.com 의 경우
    awsamazon.com 의 subdomain이고,
    docsaws.amazon.com 의 subdomain이라고 할 수 있다.

Host와 Subdomain의 차이점

Host 가 네트워크상의 실제 장치를 가리킨다면,
Subdomain은 DNS 내에서의 계층적 위치를 나타낸다.
이 두 용어는 하나의 웹사이트 주소를 설명할 때 다음과 같이 함께 사용될 수 있다.
➡️ mail.google.comdevelopers.google.com 에서 maildevelopers 는 모두 'google.com'의 subdomain이며, host라고 할 수 있다.


구성요소

DNS는 다음과 같이 구성된다.

  • DNS namespace (Domain namespace)
  • DNS server
    • DNS resolver
    • DNS name server
      • Root server
      • TLD server
      • Authoritative name server
  • DNS record
  • DNS query

각 구성요소들을 자세히 알아보자.

DNS namespace (Domain namespace)


DNS namespace는 위 그림과 같이 DNS가 저장하고 관리하는 domain의 계층적 구조이자 방법을 의미한다.
최상단에는 root domain(계층적 분류) "." 이 존재하고 그 아래에는 com , org 와 같은 여러 최상위 domain이 있고 그 아래에 이어서 두 번째, 세 번째 레벨의 domain이 있다.

DNS server

DNS Server는 다음 그림과 같이 동작한다.

DNS Resolver

DNS Resolver는 클라이언트 기기(예: 컴퓨터나 스마트폰)로부터 특정 domain name에 대한 쿼리를 받고, 필요한 domain 정보를 찾기 위해 여러 DNS name server에 추가적인 쿼리를 보내는 역할을 한다. 이 과정을 통해 최종적으로 domain의 IP 주소를 사용자에게 제공한다.

이렇게 domain name의 IP 주소를 얻게 되었다면 일정 기간동안 이 데이터는 캐싱되어 후에 같은 domain name 정보를 사용자가 요청했을 때 DNS name server에 요청하지 않고 빠르게 정보를 전달할 수 있게끔 한다.

DNS Resolver가 DNS name server들에 domain name에 대한 정보를 얻을때까지 요청을 계속한다는 점에서 재귀적인 특성을 가지고 있기 때문에 'Recursive server'라고도 불린다.

DNS Resolver와 같은 의미로 사용되는 용어들

다음과 같은 용어들이 있다면 DNS Resolver를 지칭하는 것이라고 보면 된다.

  • Recursive server
  • DNS Recursor
  • DNS Client
  • Local DNS server(of ISP) (LDNS)

DNS name server

  • Root server : DNS 계층의 최상위에 위치하며, TLD server의 IP 주소들을 저장해두고 안내하는 역할을 한다.

  • TLD server : .com, .net, .org, 국가 코드(kr, uk..) 와 같은 domain을 관리한다. 각 TLD 서버는 해당 domain 내의 모든 domain name에 대한 정보를 가지고 있다.

  • Authoritative name server (Name server) : 특정 domain에 대한 최종적인 정보인 DNS record(예:IP 주소)를 가지고 있는 서버로, DNS 쿼리의 마지막 종착지이다. domain과 IP 주소의 관계가 기록되고 그 기록을 관리하는 서버이다. 그래서 '권한이 있다'의 의미인 'Authoritative'가 붙는다.

DNS record

DNS record는 DNS server 중 Authoritative name server에 저장된 domain 정보와 그 단위를 의미하며, 그 record의 유형에 따른 domain 정보를 가지고 있다.
다음과 같이 여러 유형의 record가 있다.

DNS record 유형
ADomain name을 IPv4 주소로 매핑한다.
예를 들어, www.example.com 을 IP 주소 192.0.2.1 에 매핑한다.
AAAADomain name을 IPv6 주소로 매핑한다. A record의 IPv6 버전이다.
CNAME하나의 domain name을 다른 domain name으로 매핑한다.
예를 들어, blog.example.comwww.example.com 으로 리디렉션할 수 있다.
MXDomain의 이메일을 처리하는 서버의 주소를 지정한다.
이메일 서버의 우선순위도 설정할 수 있다.
TXTDomain에 관련된 임의의 텍스트를 저장할 수 있다.
SPF (Sender Policy Framework) 또는 DNS 기반의 이메일 인증 메커니즘에 사용된다.
NSDomain의 DNS 쿼리를 처리하는 네임서버를 지정한다.

Domain name을 해당 서버의 IP 주소로 변환하는 가장 기본적인 기능을 수행하는 A / AAAA record와,
한 domain name을 다른 domain name으로 매핑하는 CNAME record가 가장 일반적으로 사용된다.

DNS query

DNS query는 앞서 알아보았듯이 사용자의 기기가 DNS server에 특정 domain name에 대한 정보를 요청하는 프로세스를 뜻한다.

DNS serverDNS query를 받고 저장된 DNS record를 조회하여 domain name에 대응하는 IP 주소를 찾아서 사용자에게 응답한다.
여기서 DNS query는 recursive query(재귀적)와 iterative query(반복적) 이렇게 두 가지 유형으로 분류된다.

Recursive query (재귀적 쿼리)

사용자(Client)와 DNS resolver 간에 사용되는 query이다.
사용자의 기기가 DNS server에 domain name에 해당하는 IP 주소를 요청하면(1번), DNS Resolver는 해당 정보를 찾거나, 찾을 수 없으면 오류 메시지를 반환한다(8번).
이처럼 Recursive query는 최종 결과를 얻고 그 결과를 클라이언트에게 전달하는 전체적인 조회 과정을 의미한다.

Iterative query (반복적 쿼리)

DNS resolver와 DNS name server 간에 사용되는 query이다.
그림에서 2~7번과 같이 Root - TLS - Authoritative 로 이어지는 각 단계에서 domain name에 대한 정보를 질의하고, 이전 단계에서 받은 정보를 이용하여 검색 범위를 좁혀나간다. 이처럼 Iterative query는 DNS server가 domain name에 대한 정보를 얻을 때까지 여러 DNS name server에 반복적으로 질의를 하는 과정을 의미한다.

DNS Resolver는 이렇게 Recursive query와 Iterative query 두 가지 쿼리를 혼합하여 빠르고 정확하게 domain 정보를 찾는다.

작동 방식

다음은 example.com 을 DNS 조회하는 절차이다.

  1. 사용자가 브라우저(클라이언트)에서 example.com 을 입력한다.
  2. 클라이언트는 example.com 의 IP 주소를 찾기 위해 DNS resolver로 요청을 보낸다.
  3. DNS resolver는 DNS 캐시의 존재 여부를 확인한다.
    3-1. DNS resolver는 우선 브라우저 캐시에서 example.com 에 대한 기존 조회 결과가 있는지 확인한다.
    3-2. 브라우저 캐시에 없다면 OS 캐시를 확인한다.
    3-3. OS 캐시에 없다면 라우터 캐시를 확인한다.
    3-4. 캐싱된 IP 주소가 있다면 클라이언트로 전달한다.

위 단계를 거치고도 캐싱된 IP 주소가 없다면 다음과 같이 DNS name server에 반복적으로 query하여 IP 주소를 얻는다.

  1. DNS resolver가 Root server로 .com TLD server IP 주소 요청을 보낸다.
  2. Root server는 .com TLD server의 IP 주소를 응답한다.
  3. DNS resolver가 TLD server로 example.com 도메인의 Authoritative server 의 IP 주소 요청을 보낸다.
  4. TLD server는 example.com 도메인의 Authoritative server IP 주소를 응답한다.
  5. DNS resolver가 Authoritative server에 example.com 도메인의 IP 주소 요청을 보낸다.
  6. Authoritative server는 example.com 도메인의 IP 주소를 응답한다.
  7. DNS resolver는 최종적으로 얻게 된 IP 주소를 클라이언트로 전달하고 자신의 로컬 캐시에 저장한다.
  8. 브라우저(클라이언트)가 얻게된 서버의 IP 주소로 HTTP 요청을 한다.
  9. example.com 웹 페이지의 데이터와 콘텐츠를 클라이언트에게 전송한다.

GSLB (Global Server Load Balancing)

DNS에서는 동일한 도메인 이름에 여러개의 IP 주소를 설정하여 로드밸런싱을 할 수 있다.
하지만 DNS는 설정된 IP 주소의 서버가 정상인지 여부를 확인하지 않고 무조건 응답하여 가용성이 떨어질 수 있다.
이를 해결하기 위한 방법으로 GSLB를 사용할 수 있다.

GSLB는 DNS와 동일하게 동작하면서 동시에 로드 밸런서처럼 도메인에 연결된 서비스가 정상적인지 Health check를 수행하여 Health check에 실패한 서버는 DNS 응답에서 제외한다.
즉, 등록된 도메인에 대한 서비스가 정상인지 상태를 체크하고, 정상인 레코드(IP 주소)만 사용하여 가용성을 높인다.
또한 DNS 요청이 오면 지리적으로 가까운 서버를 반환하거나 네트워크 거리가 가까운 서버를 반환한다.

작동 방식

DNS 작동방식과 같지만 중간에 GSLB가 추가된 형태이다.
그림에서 DNS Resolver 와 Authoritative name server 사이에 위치한다.

  1. 사용자가 브라우저(클라이언트)에서 Domain name example.com 을 입력한다.
  2. 클라이언트는 example.com 의 IP 주소를 찾기 위해 DNS resolver로 요청을 보낸다.
  3. DNS resolver가 Root server로 .com TLD server IP 주소 요청을 보내고, 응답받는다.
  4. DNS resolver가 .com TLD server 로 example.com 도메인의 Authoritative server 의 IP 주소 요청을 보내고, 응답받는다.
  5. DNS resolver가 Authoritative server에 example.com 도메인의 IP 주소 요청을 보낸다.
  6. Authoritative server가 GSLB에게 위임했기 때문에 GSLB가 Health check 결과와 설정된 분산 방식에 따라 선택된 IP 주소를 응답한다. 그림의 경우 1.1.2.1 이 Health check에 실패했고, 정상 상태인 1.1.1.1 IP 주소를 응답했다.
  7. GSLB에서 IP 주소를 응답받은 DNS resolver는 클라이언트에게 example.com 의 IP 주소를 1.1.1.1 로 최종 응답한다.

GSLB와 DNS 비교

재해 복구 (Disaster Recovery)

DNS는 Health Check가 되지 않아 서버 장애가 발생해도 장애 서버로 연결 요청을 하지만
GSLB는 주기적인 Health Check를 통해 장애 서버가 체크되면 장애 서버를 제외한 정상 서버로 연결 요청을 한다.
만약 위와 같은 장애 상황에서 DNS가 Round Robin 방식의 로드밸런싱을 사용하고 있었다면 50%의 사용자들은 장애 서버로 연결될 것이다.

로드밸런싱 (Site Load Balancing)

DNS는 Health Check가 되지 않아 설정된 서버가 오버로드 상태가 되어도 해당 서버로 연결을 요청하지만
GSLB는 부하 상태를 주기적으로 체크하여 부하가 균등하게 분배될 수 있도록 도와준다.

네트워크 근접성 (Network Proximity)

DNS는 클라이언트와 서버 사이 Network 구간의 Round Trip Time(왕복지연시간)을 측정하지 않는다.
GSLB는 클라이언트와 서버 사이 Round Trip Time을 측정하여 클라이언트가 응답이 빠른 서버로 연결되도록 해준다.

지리적 근접성 (Geographic Proximity)

만약 DNS가 Round Robin 방식을 사용하고 있다면 사용자는 지리적 위치를 고려하지 않고 해외의 서버에 연결될 수 있는 확률을 가지게 된다.
반면 GSLB는 사용자의 지리적 위치를 고려하여 지리적으로 가까운 서버와 접속할 수 있다.


참고

https://hanamon.kr/dns%EB%9E%80-%EB%8F%84%EB%A9%94%EC%9D%B8-%EB%84%A4%EC%9E%84-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B0%9C%EB%85%90%EB%B6%80%ED%84%B0-%EC%9E%91%EB%8F%99-%EB%B0%A9%EC%8B%9D%EA%B9%8C%EC%A7%80/
https://gentlysallim.com/dns%EB%9E%80-%EB%AD%90%EA%B3%A0-%EB%84%A4%EC%9E%84%EC%84%9C%EB%B2%84%EB%9E%80-%EB%AD%94%EC%A7%80-%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC/
https://www.cloudflare.com/ko-kr/learning/dns/what-is-dns/
https://webhostinggeeks.com/guides/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://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
root domain
https://raventools.com/marketing-glossary/root-domain/
DNS record
https://www.cloudflare.com/learning/dns/dns-records/
DNS query
https://www.cloudns.net/blog/recursive-dns-server/
hostname, subdomain, fqdn
https://superuser.com/questions/887173/what-is-a-hostname-versus-a-computer-name-versus-a-subdomain-versus-www/887183#887183
https://superuser.com/questions/59093/difference-between-host-name-and-domain-name?rq=1
GSLB
https://zigispace.net/1218
https://coding-start.tistory.com/339
https://manvscloud.com/?p=447

profile
거친 돌이 다듬어져 조각이 되듯

0개의 댓글