tech.junha.kr

[DNS] 동작 원리를 꼼꼼하게 살펴보자!

1. Domain

네트워크 통신에는 고유의 주소(IP 주소)가 필요하다.

이때 IP는 사람이 이해하고 기억하기 어렵기 때문에, 각 ip에 이름을 부여했고 이를 도메인이라고 한다.

예를 들어 142.250.207.14의 도메인은 google.com이다.

2. DNS (Domain Name System)

DNS는 도메인을 입력하면 IP 주소를 변환해준다. 정확히는, 인터넷 도메인 주소 체계로 TCP/IP의 응용 계층에서, www.example.com과 같은 주 컴퓨터의 도메인 이름을 192.168.1.0과 같은 IP 주소로 변환하고, 라우팅 정보를 제공하는 분산형 데이터베이스 시스템이다.

쉽게 말해, 도메인에 연결된 서버의 주소를 찾아주는 역할을 하며 도메인 서버, 네임 서버라고도 불린다.

3. DNS 서버 종류 구분

실제론 위의 그림처럼 단순한 구조로 되어있지 않다. 도메인 수가 너무 많기 때문에, DNS 서버 종류를 계층화해서 단계적으로 처리한다. 특히, 도메인의 총 관리는 ICANN에서 하기 때문에, DNS 서버도 최상위 도메인에서 개인 도메인의 서브 도메인까지 도메인 이름의 분류와 마찬가지로 디렉토리/계층 형태로 구분된다.

  • Root DNS Server: ICANN이 직접 관리하는 절대 존엄 서버로, TLD DNS 서버 IP들을 저장해두고 안내하는 역할
  • TLD(최상위 도메인) DNS Server: 도메인 등록 기관(Registry)이 관리하는 서버로, Authoritative DNS 서버 주소를 저장해두고 안내하는 역할을 함. 어떤 도메인 묶음이 어떤 Authoritative DNS Server에 속하는지 아는 이유는 도메인 판매 업체(Registrar)의 DNS 설정이 변경되면 도메인 등록 기관(Registry)으로 전달이 되기 때문임.
  • Authoritative DNS Server: 실제 개인 도메인과 IP 주소의 관계가 기록/저장/변경되는 서버. 그래서 권한의 의미인 Authoritative가 붙음. 일반적으로 **도메인/호스팅 업체의 ‘네임서버’**를 말하지만, 개인 DNS 서버 구축을 한 경우에도 여기에 해당함.
  • Recursive DNS Server: 인터넷 사용자가 가장 먼저 접근하는 DNS 서버임. 위 3개의 DNS 서버를 매번 거친다면 효율이 구데기일수 밖에 없으니, 한 번 거친 후 얻은 데이터를 일정 기간(TTL/Time to Live) 동안 캐시라는 형태로 저장해 두는 서버임. 직접 도메인과 IP 주소의 관계를 기록/저장/변경하지는 않고 캐시만을 보관하기 때문에, Authoritative와 비교되는 의미로 반복의 Recursive가 붙음. 대표적인게 KT/LG/SK와 같은 ISP(통신사) DNS 서버가 있고, 브라우저 우회 용도로 많이 쓰는 구글 DNS, 클라우드플레어와 같은 Public DNS 서버가 있음.

DNS 서버는 모두 위 4가지 DNS 서버 종류 중 하나에 속함. 특히, 브라우저는 캐시가 저장된 Recursive 서버를 사용하고, 실제 네임서버를 설정하는 곳은 Authoritative 서버라는 점만 주의해서 이해하자. 나머지 두 서버는 컨트롤할 수 있는 영역도 아니고 언급되는 경우도 적으니 전반적인 이해를 위해서만 요런게 있네 정도로 생각하자.

4. DNS 전체 과정

전체 과정: 결국은 계층별로 DNS 서버 주소 따라가다 Authoritative DNS Server에서 정보 얻음.

  1. 브라우저에서 Nesite.com을 검색하고, 사용하고 있는 통신사인 KT DNS 서버에게 도메인 주소에 해당하는 IP 주소를 요청함. (브라우저 기본 DNS 설정이 통신사 DNS 서버이기 때문)

  2. ISP 서버에선 캐시 데이터가 없다는 걸 확인하고 루트 DNS 서버에게 어디로 가야 하는지 요청함(캐시가 있다면 8.로 건너 뜀.)

  3. 루트 서버는 TLD DNS 서버 주소만 관리하기 때문에, ***.com 도메인을 보고는 COM 최상위 도메인을 관리하는 TLD DNS 서버 주소를 안내함.

  4. ISP 서버는 COM 서버에게 어디로 가야 하는지 다시 요청함.

  5. COM 서버는 가비아 DNS 서버에서 해당 도메인이 관리되고 있는 걸 확인하고 안내함.

  6. ISP 서버는 가비아 서버에게 또 다시 요청함.

  7. 가비아 서버는 “Nesite.com = 12.123.123.123”이라는 정보를 확인하고 이 IP를 알려줌. 동시에 ISP 서버는 해당 정보를 캐시로 기록해 둠.

  8. ISP 서버는 브라우저에게 힘들게 알아 낸 12.123.123.123 주소를 안내함.

  9. 브라우저는 12.123.123.123 IP 주소를 갖고 있는 호스팅 서버에게 웹사이트를 출력하라고 요청함.

  10. 드디어 보임.

이렇게 크게 한 번 보고 나면 도메인/호스팅 업체의 네임서버 설정이 실제 인터넷 사용자들에게 어떻게 영향을 미치고, 네임서버 변경 시 도메인 전파 시간이란 게 왜 발생하는 건지 이해가 될 거라고 본다.

출처: 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/