Backend/Internet

[Internet] DNS and how it works?

lakelight 2022. 7. 11. 12:24
728x90
반응형

DNS (Domain Name System)

인터넷을 이용할 때 사용자가 외우기 어려운 IP주소(ex. 123.223.43.12) 대신 식별하기 쉬운 도메인 이름을 사용할 수 있습니다. 도메인 이름을 사용한다면 도메인 주소를 실제 네트워크 상의 IP 주소로 변환해주어야 합니다. 그 역할을 하는 것이 DNS Domain Name System 입니다.

DNS 등장 배경

초기에는 호스트 수가 많지 않아 랜카드를 이용해 hosts.txt 파일을 이용했지만 업데이트가 늦고, 호스트 수가 증가함에 따라 한계에 도달하여 계층 구조, 분산데이터베이스 구조를 가지는 Domain Name System이 나오게 되었습니다.

DNS 구성 요소

  1. Domain Name Space
  2. Name Server
  3. Resolver
  • Domain Name Space

DNS는 거대한 분산 네이밍 시스템입니다. 도메인 네임 스페이스는 DNS가 저장/관리하는 계층적 구조를 의미합니다. 최상위 루트 DNS 서버가 존재하고 그 하위로 연결된 모든 노드도 계층 구조로 되어있습니다.

* Hierarchical Domain Level(HDL) 계층적 도메인 레벨

네임 스페이스의 트리 구조는 최상위 레벨부터 순차적으로 계층적 소속 관계를 나타내며, 하위 조직의 네임 스페이스를 할당하고 관리하는 방식은 각 하위 기관의 관리 책임자에게 위임됩니다.

예를 들면 lakelight.com 도메인은 com 도메인을 관리하는 네임 서버에 등록되어 있고, www.lakelight.com  은 lakelight.com 도메인을 관리하는 네임서버에 등록되어 있습니다. 이러한 위임 구조는 호스트의 증가에 대한 관리가 효율적으로 이루어지는 것을 가능하게 합니다.

* Fully Qualified Domain Name(FQDN) 전체 도메인 이름

도메인 전체 이름을 표기하는 방식 으로 FQDN www.lakelight.kr 일 때 도메인 이름lakelight.kr 이고 호스트 이름www 입니다. 

  • Name Server

문자열로 표현된 도메인 이름을  IP주소변환시키기 위해서 네임 스페이스의 트리 구조에 대한 정보가 필요합니다. 이러한 정보를 가지고 있는 서버를 네임 서버라고 합니다.

 - Root DNS 서버
ICANN 이 직접 관리하는 절대 존엄 서버입니다.
TLD DNS 서버 IP 주소를 저장하고 안내하는 역할을 합니다.

 - Top-Level Domain(TLD) DNS 서버
도메인 등록 기관이 관리하는 서버입니다.
Second-Level DNS 서버의 주소를 저장하고 안내하는 역할을 합니다.

 - Second-Level Domain(SLD) DNS 서버
실제 개인 도메인과 IP 주소의 관계가 기록되는 서버입니다.
개인 DNS 구축해도 이 경우에 해당한다.

 - subdomain(권한 없는) DNS 서버
질의를 통해 IP 주소를 알아내거나 캐시한다.

  • Resolver

웹 브라우저와 같은 DNS 클라이언트의 요청네임 서버로 전달하고 네임 서버로부터 정보를 받아 클라이언트에게 제공하는 기능을 수행합니다.  수많은 네임 서버에 접근하여 사용자로 부터 요청 받은 도메인의 IP 정보를 조회하고 브라우저에게 전달합니다.

 

DNS 동작 과정

  1. 웹 브라우저가 도메인 이름 호출
  2. 브라우저 캐시, OS 캐시, 라우터 캐시, ISP 캐시를 확인하여 방문한 이력 찾기
  3. ISP에서 DNS Iterative하게 쿼리 (도메인에 맞는 IP 주소 찾기)
  4. ISP는 Second-Level DNS 서버에서 최종적으로 IP 주소 받기
  5. ISP는 해당 IP 주소 캐시
  6. 웹 브라우저에게 서버와 통신이 가능한 IP 주소 응답

DNS Query

DNS 서버의 이름을 확인하기 위해 요청하는 방법입니다.
Query는 Recursive(재귀적) 또는 Iterative(반복적)으로 구분됩니다. DNS

Recursive Query

IP 주소를 돌려주는 작업입니다.
Recursive 쿼리를 받은 Recursive 서버는 Iterative 하게 권한 있는 네임 서버로 Iterative 쿼리를 보내서 IP 주소를 찾고 해당 IP 주소를 응답합니다.

Iterative Query

Local DNS 서버가 다른 DNS 서버에게 쿼리를 보내어 답을 요청하는 작업입니다.
Recursive 서버가 권한 있는 네임 서버들에게 반복적으로 쿼리를 보내서 IP 주소를 알아냅니다.
Recursive 서버에 이미 IP 주소가 캐시 되어 있다면 이 과정은 건너 뜁니다.

Recursive Query + Iterative Query 작동 흐름

  1. 클라이언트가 Domain에 따른 IP 주소를 요청했을 때 Recursive Query를 보내 Recursive 서버에 해당 Domain에 IP 주소가 캐시되어 있는지 확인합니다.
  2. 캐시되어 있다면 IP 주소를 반환하고 없다면 Iterative Query를 각각의 DNS서버에 보내서 Domain에 맞는 IP 주소를 찾습니다.
  3. IP 주소를 찾았다면 Recursive 서버에 IP 주소를 저장시키고 동일한 도메인을 요청하면 해당 IP를 반환해줍니다.

 

결론

DNS에 대한 개념을 한번더 포스팅하면서 정리할 수 있었습니다.
DNS는 계층구조이며 분산데이터베이스 구조라는 것이 흥미로웠고, 내부적으로
어떻게 동작하는지도 알게 되었습니다.

또 흥미로웠던 점은 DNS가 Recursive Query와 Iterative Query를 통해
Domain 이름에 맞는 IP주소를 가져온다는 것입니다.

[참고]

1. DNS(Domain Name System) 란? - 개돌킹의 블로그

2. DNS 이해를 돕기 위한 이미지 - eYewated

3. DNS란? - HANAMON

4. Resolve 이해를 돕기 위한 이미지 - cloudflare.com

728x90
반응형