DNS 개념잡기 - (2) DNS 구성 요소 및 분류(DNS Resolver, DNS 서버)
2. DNS 기능
DNS 기능은 크게 정보를 제공하는 기능과 이름을 변환하는 기능으로 나눌 수 있다.
(1) DNS 서버는 이름에 대한 정보를 제공한다.
(2) Resolver는 이름을 변환하는 기능을 제공한다.
2-1. IP 주소 조사하는 방법 - DNS Resolver
IP 주소를 조사하는 방법을 쉽게 말하자면 가장 가까운 DNS 서버에 www.example.co.kr 라는 서버의 IP 주소를 알려주세요 라고 질문 하는 것이다. 그렇게 되면 DNS 서버가 ‘해당 서버의 IP 주소는 xxx.xxx.xxx.xxx 이다’ 라는 정보를 알려준다.
Q. 브라우저는 어떻게 해서 DNS 서버를 조회할 수 있고 IP 정보를 받을수 있는 것일까?
DNS 서버에 요청하여 조회한다는 것은 DNS 서버에 요청을 하고 반송되는 응답을 받는과정이 이루어진다는 것이다. 이러한 과정은 DNS 서버에 대해 클라이언트로 동작한다고 볼 수 있으며 이 역할을 DNS Resolver가 수행한다.
2-1-1. DNS Resolver 역할
Resolver는 DNS 서버에 대한 클라이언트로 동작한다.
① Resolver는 DNS 서버에 조회 메시지를 보내며
② 거기에 반송되는 응답 메시지를 클라이언트에게 전달한다.
이에, DNS Resolver는 Name Resolution을 실행하는 역할을 수행한다고도 말할 수 있다..
※ Name Resolution: DNS 원리를 사용하여 IP 주소를 조사하는 것
- Resolver의 실체는 Socket 라이브러리에 들어있는 부품화한 프로그램이다. 이를 통해 애플리케이션에서 간단히 Resolver를 호출하여 이용할 수 있다.
- 도메인명에서 IP 주소를 조사할 때 브라우저는 Socket 라이브러리의 Resolver를 이용한다.
💡 Socket 라이브러리
네트워크의 기능을 호출하기 위한 프로그램 부품집이며 사전에 만들어진 부품을 통해 프로그래밍 작업 수고를 덜 수 있다.
2-2. DNS 서버
2-2-1. DNS 서버 분류 개요
인터넷이 상용화가 됨에 따라 많은 사용자가 생성하고 삭제하는 도메인 리스트들을 실시간으로 업데이트를 DNS 1대로는 불가능하다.
그렇기에 데이터베이스를 분산시켜서 다수의 DNS 서버에 등록하고 다수의 DNS 서버가 연대하여 어디에 정보가 등록되어 있는지 찾아내는 구조다.
DNS에는 도메인명이 계층적인 구조에 기인하여 수많은 인터넷 주소 아래 원하는 주소를 효율적으로 찾아갈 수 있다.
2-2-2. DNS의 계층적 구조 특징
- 역트리 구조로 최상위 Root로부터 Top-Level, Second-Level, Third Level(Subdomain) 방향으로 원하는 주소를 단계적으로 찾아간다.
- 도메인 주소의 경계를 점(” . ”)으로 표시하며 뒤에서 앞으로 역방향으로 해석한다.
- 계층별 길이는 최대 63바이트까지 사용할 수 있고 도메인 계층을 구분하는 구분자 “.”를 포함한 전체 도메인 네임의 길이는 최대 255바이트까지 사용할 수 있다.
- 한 대의 DNS 서버에 복수의 도메인을 등록할 수 있다. 도메인 하나하나에 각각의 DNS 서버가 존재 하는 것은 아니다. 일반적으로 통신사의 DNS 서버에 다수 도메인의 정보를 등록하는 형태가 그 예이다.
2-2-3. DNS 계층적 Server 분류
Root Name Server
- DNS 서버의 최상위 네임서버로 DNS 해석부터 발생한 DNS 요청에 대하여 적절한 TLD 네임서버 정보를 반환한다.
TLD 네임서버 (Top Level Domain Name Server)
- .com, .net 또는 URL의 마지막 점 뒤에 오는 것 같은 일반적인 도메인 확장자를 공유하는 모든 도메인 이름의 정보를 유지한다.
- 루트 네임서버로부터 응답을 받은 후 권한 있는 네임 서버를 지정하여 반환한다.
Authoritative Name Server
- 일반적으로 IP 주소를 확인하는 확인자의 마지막 단계이며 도메인 이름에 고유한 정보를 포함하여 DNS 서버에 Response 한다.
2-3. DNS Cache 기능
한 대의 DNS 서버에 복수 도메인의 정보를 등록할 수 있다고 정말로 각 도메인에 한대씩 DNS 서버가 존재한다고 단정할 수 없다.
위에 내용에서 도메인 별 다른 DNS 서버를 사용하였지만 현실에는 상위와 하위의 도메인을 같이 등록하는 경우도 있다. 이 경우 상위 DNS 서버에 조회하면 하위 DNS 서버를 한 개 건너뛰고, 그 아래 DNS 서버에 관한 정보가 돌아온다.
즉, 최상위 루트 도메인에서 차례대로 따라가는 원칙과 달리 움직일 수 있다.
DNS서버는 한 번 조사한 이름을 캐시에 기록할 수 있으며 조회한 이름에 해당하는 정보가 캐시에 있으면 그 정보를 회답함으로서 그 자리에서 계층 구조를 아래로 향하여 찾을 수 있다.
이 정보라는 것이 반드시 DNS 서버 위치에 대한 정보를 함축하지 않는다. 조회한 이름이 등록되지 않은 경우에도 이름이 존재하지 않는다는 정보 역시 캐시에 보존할 수 있다. 이렇게 이름이 존재하지 않는 경우에도 빠르게 회답할 수 있다.
도메인을 쿼리하는데 있어 먼저 OS → Local 캐시를 조회하고 로컬 캐시에 없는 도메인은 DNS 서버로 쿼리한다.
참조
- 성공과 실패를 결정하는 1%의 네트워크 원리
'Computer Science > Network' 카테고리의 다른 글
[Network] 웹 주소를 입력하였을 때 일어나는 일 (0) | 2024.03.10 |
---|---|
[Network] HTTPS 동작 상세 과정 (0) | 2022.11.27 |
DNS 개념잡기 - (1) 도메인 명과 IP 주소를 구분하여 사용하는 이유 (0) | 2022.01.24 |
댓글