DNS(Domain name Service)

도메인 이름 시스템은 사람이 읽을 수 있는 도메인 이름을 머신이 읽을 수 있는 IP 주소로 변환합니다.

DNS : 사람이 읽을 수 있는 문자열과 internet 프로토콜 기반 정보를 매칭시켜주는 시스템

  • Internet Corporation for Assigned Names and Numbers (ICANN)에서 관리

도메인(Domain) : 대상의 IP 주소 등의 정보와 맵핑되는 사람이 알아 볼 수 있는 문자열

  • 서브 도메인 : 도메인 중 스트링 앞에 추가 문자열이 붙은 도메인

    • 예 : text.example.com

  • APEX 도메인 : 도메인 중 앞에 추가 문자열이 없는 최상위 도메인

    • 예 : example.com

  • 레코드 (DNS Record) : 도메인이 어떤 방식으로 데이터와 매칭되는지 정의하는 기록

    • 다양한 레코드 종류가 있으며 각각 다른 정보와 매칭

    • 예 : A 레코드는 IPv4 주소, MX 레코드는 메일 서버

Domain Zone : 도메인의 정보를 담은 레코드의 집합

  • 예 : www.awsclassroom.kr/ lecture.awsclassroom.kr

Zone File : Domain Zone 정보를 저장한 텍스트 파일

DNS Query : 주어진 도메인에 해당하는 정보를 요청하는 쿼리

Name Server(NS): DNS Query를 Zone FIle을 기반으로 응답할 수 있는 서버

  • Authoritative : DNS 정보의 원본을 가지고 있는 최상위 NS 서버

  • None-Authoritative : Authoritative NS 서버를 조회하여 정보를 보관하고 있거나 응답하는 서버(캐시)

DNS Resolver : 사용자와 NS 서버 사이에 위치한 서버로 실제 유저의 요청에 따라 IP 주소 등의 정보를 확보하는 서버

  • 유저의 클라이언트가 제일 먼저 쿼리를 요청하는 대상이며 보통 ISP가 관리

DNS의 규모

  • 2024 7월 기준 약 3억 6천만개의 도메인 존재

    • 그리고 거의 모든 HTTP 통신에 매번 활용

  • 매우 큰 규모이며 이를 호스팅하기 위한 서버 구조에 큰 고민 필요

DNS의 구성

  • DNS는 계층 구조

    • 즉 최상위 도메인부터 차례대로 계층구조로 구성되어 있음

    • 실제 레코드는 가장 마지막 계층에서 보관 및 처리

맨 마지막에 도달해서야 Record를 얻을 수 있는 계층형 구조이다.

DNS Root

  • DNS 계층 구조의 최상위 레벨

    • 즉 DNS Query 수행 시 최초로 조회하는 거점

    • 다음 단계인 TLDs(Top Level Domain)의 Zone File을 가진 NS서버의 주소 정보 보유

  • IANA (Internet Assigned Numbers Authority) 에서 조율하는 13개의 주체에서 관리

    • A~M까지 각 관리 주체별로 다른 서버 주소

  • Root Hints File

    • DNS Root의 주소를 담은 파일

    • 각 DNS Resolver에 하드코딩

TLD의 Zone File을 준다.

Top Level Domains

  • DNS 계층 구조의 두 번째 레벨

    • 실질적으로 정보를 가지고 있는 최 상위 레벨

    • 예 : .com/ .org / .net / .info 등

  • 종류

    • Country Code TLDs : 각 나라에 할당된 두 자리 코드

      • 예 : .kr / .jp / .uk / .ai

    • Sponsered TLDs : 사설 조직이나 기관에 할당된 TLDs

      • 예 : .edu / .gov / .mil 등

  • 관리 주체 : TLDs Registry

    • 예:

      • .com / .net -> Verisign

      • .org -> Public Interest Registry

      • .kr -> Korea Internet & Security Agency (KISA)

  • 실제 도메인의 레코드를 관리하는 NS 서버의 주소 정보를 담은 Zone File 보유

NS 서버

  • 실제 도메인의 레코드를 가지고 있는 서버

    • 이 NS 서버의 주소를 TLDs에 등록해두면 클라이언트에서 DNS 쿼리에 따라 이쪽으로 도착

  • 해당 도메인 및 서브도메인들이 어떤 프로토콜의 어떤 주소로 맵핑되는지(레코드)에 관한 Zone File 보유

lecture. 어디로 가면 될까?

203.8.113.14로 가면 돼

도메인 등록

  • 도메인 등록 대행 (Domain Registrar)을 통해 등록

    • 도메인 등록 대행 (DomainTegistrar) : ICANN 에게 인증받고 TLDs Registry와 협의하여 도메인 등록의 권한을 가진 주체

    • 예 : 가비아 , GoDaddy, Cafe24, AWS Route 53

  • 등록할 때 TLDs Regisrty에 자신이 원하는 NS 서버 주소를 등록

    • 일종의 남은 슬롯에 자신의 NS 서버를 예치하는 개념

    • NS서버는 자신의 개인 NS 서버를 사용하거나 , DNS Hosting Service 업체에서 대여 가능

    • DNS Hosting Service : DNS 기능을 제공하는 주체체

DNS 질의 기본 흐름

클라이언트가 www.google.com에 접속하고 싶을 때 → "이 도메인이 어떤 IP 주소를 갖고 있는지 알려줘!"라고 DNS 서버에 묻는 과정입니다.


🧭 전체 흐름 요약

1. 사용자가 브라우저에 도메인 입력
2. 로컬 캐시 확인 (hosts 파일, DNS 캐시 등)
3. DNS 리졸버(로컬 DNS 클라이언트)가 DNS 서버에 질의 전송
4. DNS 서버(보통 ISP의 서버)가 응답 (있으면 바로)
   └ 없으면 루트 → TLD → 권한 서버 순서로 재귀적으로 조회
5. IP 주소 응답 받음 → 브라우저가 해당 IP에 TCP 연결 시도

🔢 세부 단계: 클라이언트 중심으로 본 요청 과정

1️⃣ 도메인 이름 입력

  • 사용자가 브라우저에 www.google.com 입력

2️⃣ 로컬 캐시 확인

  • 먼저 운영체제의 DNS 캐시, hosts 파일 등을 확인

  • 이미 IP 주소가 있다면 DNS 서버에 요청할 필요 없음

3️⃣ DNS 요청 전송

  • DNS 리졸버(운영체제 내부 클라이언트)가 DNS 요청 생성

  • 보통 UDP 포트 53 사용 (응답 크기가 크면 TCP도 사용 가능)

  • 요청 내용:

    • 질의 타입: A (IPv4 주소 요청), AAAA (IPv6), MX, CNAME

    • 질의 대상: www.google.com

4️⃣ 지정된 DNS 서버에게 질의

  • 보통 DHCP로 자동 설정된 ISP의 DNS 서버 (또는 8.8.8.8 같은 공개 DNS 서버)

  • 이 서버가 응답을 알고 있으면 바로 응답

5️⃣ 재귀 질의 (필요시)

  • 만약 DNS 서버가 IP 주소를 모르면, 대신 루트 DNS부터 질의 시작

    • 루트 서버 → .com 서버 → google.com 권한 서버

6️⃣ 클라이언트가 응답 받음

  • 응답 메시지에 다음 포함:

    • www.google.com142.250.206.196 같은 IP

    • TTL (유효 시간), 응답 타입 등

7️⃣ 브라우저가 IP로 TCP 연결 시도

  • TCP 3-way 핸드셰이크 후 HTTP 요청 전송


✉️ 실제 DNS 질의 메시지 구성 (요약)

필드
내용

Transaction ID

요청/응답 매칭용 식별자

Flags

요청/응답 여부, 재귀 여부 등

Questions

질의 도메인 이름 (www.google.com)

Answer RRs

(응답 시) IP 주소 포함

Authority RRs

관련 권한 서버 정보

Additional RRs

캐시 정보 등 부가 데이터


📦 실제 예시 (Wireshark 캡처)

Frame 1: 74 bytes on wire
DNS Query:
    Transaction ID: 0x1a2b
    Flags: Standard query (0x0000)
    Questions: 1
    Query: www.google.com, Type: A, Class: IN
Frame 2: 90 bytes on wire
DNS Response:
    Transaction ID: 0x1a2b
    Answers: 1
    Name: www.google.com
    Type: A
    Address: 142.250.206.196

✅ 정리표

단계
설명

1. 도메인 입력

사용자가 웹사이트 주소 입력

2. 캐시 확인

로컬 DNS 캐시/hosts 확인

3. DNS 요청 전송

UDP 53 포트로 질의 메시지 생성

4. DNS 서버 응답

직접 응답 또는 재귀 질의

5. 응답 수신

IP 주소 받아서 TCP 연결 시도


✅ 한 줄 요약

DNS는 사람이 기억하기 쉬운 도메인 이름을 실제 IP 주소로 변환해주는 서비스이며, 클라이언트는 DNS 서버에 UDP 53 포트로 질의하여 IP를 받아옵니다.

Last updated