[Network] DNS의 구조와 동작방식

Cookie·2025년 2월 17일
0

Network

목록 보기
1/3

DNS가 어떤 역할을 하는지는 잘 알고있지만 그의 내부 구조와 자세한 동작방식에 대해서는 암기가 어렵고 습득이 느려서 정리해보고자함



❗들어가기 앞서

DNS의 기본 개념을 바탕으로, DNS의 내부 구조와 동작 방식을 더욱 깊이 탐구할 예정으로 기초 개념이 익숙하지 않다면 먼저 이해하고 넘어가는 것이 좋음
이 글에서는 기초개념은 간단하게 설명하고 지나가고자 함


💠DNS란?

DNS(Domain Name System)는 인터넷에서 사람이 이해하기 쉬운 도메인 이름(예: example.com)을 컴퓨터가 이해할 수 있는 IP 주소(예: 192.0.2.1 또는 2001:db8::1)로 변환하는 시스템임.

🔹DNS가 필요한 이유

  • IP 주소를 직접 기억하는 것은 어려움 → 사람이 이해하기 쉬운 도메인을 사용
  • 네트워크 구조가 변경되어도 도메인 이름은 유지 가능 → 유연한 관리 가능
  • 웹사이트, 이메일, 기타 인터넷 서비스의 근간이 되는 시스템

🔹간단하게 알아보는 DNS의 기본 동작 방식

  1. 사용자가 도메인 입력 → 브라우저에서 example.com 입력
  2. 로컬 DNS 캐시 확인 → 운영체제나 브라우저가 최근 조회한 결과 확인
  3. 재귀(Recursive) 쿼리 수행 → 캐시에 없으면 로컬 DNS 서버(예: ISP 제공 DNS)에 요청
  4. 계층적 네임서버 조회
    • 루트 네임서버(.) → 최상위 도메인(TLD) 네임서버(.com) → 도메인 네임서버(example.com)
  5. 최종 IP 주소 반환 → 브라우저가 해당 IP로 접속




🔍 DNS의 구조


1️⃣ Recursive DNS 서버

Recursive 서버는 일반적으로 반복적으로(Recursively) DNS 쿼리를 수행한 후 응답을 캐싱하여 빠르게 제공하기 때문에 캐시 서버(Cache Server)로도 불림

자신의 캐시 데이터를 조회한 후 데이터가 있으면 사용자 호스트로 결과를 반환함

만약 데이터가 없으면, 사용자 호스트를 대신해 최상위 Root 네임서버부터 시작해 도메인의 권한 있는 네임서버까지 재귀적 질의(Recursive Query) 를 수행한 후 그 결과를 반환함

  • 일반적 예시)
    : ISP(Internet Service Provider)가 제공해주는 DNS 서버가 해당함

🔹TTL (Time To Live)

  • Recursive 서버가 응답을 캐싱하는데, 이 데이터는 일정 시간이 지나면 만료됨
    -> TTL(Time To Live)이라고 하며, 도메인별로 설정 가능함
    • TTL이 낮으면,
      : 최신 데이터를 가져오지만 네트워크 부하 증가
    • TTL이 높으면,
      : 부하는 줄지만 변경 사항 반영이 느림.

2️⃣ Authoritative DNS 서버

Authoritative 서버는 관리하는/위임 받은 도메인을 가지고 있는 네임서버로 특정 도메인에 대한 정보를 관리하면서 해당 도메인에 대한 질의에만 응답해주는 네임서버

계층 구조에 따라, 권한 있는 네임서버는 자신이 관리하는 도메인의 정보를 직접 제공하거나, 하위 네임서버로 질의를 위임하여 사용자가 최종적으로 원하는 DNS 정보를 얻을 수 있도록 안내함

네임서버가 관리하는 도메인 영역을 존(Zone) 이라 하고 관리 도메인에 대한 정보를 담고 있는 파일을 존 파일(Zone File)이라 함

네임서버는 존 파일을 읽어, 존 데이터를 구정하고 이를 이용하여 질의에 응답함
DNS의 Zone

  • 일반적 예시)
    : 각 회사/사이트별 자신의 도메인인을 관리하는 DNS 서버




🔍 DNS의 동작 방식

DNS는 사용자가 입력한 도메인명을 IP 주소로 변환하기 위해 여러 단계의 질의(Query) 과정을 거침


1️⃣ 질의 순서

DNS 질의는 운영체제의 내부 캐시부터 시작하여, 최종적으로 네임서버까지 조회하는 방식으로 진행됨

✅ 기본적인 질의 순서

  1. 로컬 DNS 캐시 확인

    • 운영체제(OS)나 브라우저가 최근 조회한 DNS 결과를 캐시에서 먼저 확인
    • 캐시에 존재하면 바로 반환하고 종료
  2. hosts 파일 조회 (/etc/hosts or C:\Windows\System32\drivers\etc\hosts)

    • 로컬 시스템에서 설정한 도메인-IP 매핑이 있는지 확인
    • 존재하면 해당 IP 주소 반환
  3. 기본 네임서버(Default Name Server, Recursive DNS) 질의

    • ISP(인터넷 서비스 제공업체)나 회사 내부 DNS 서버로 질의
    • Recursive DNS 서버는 캐시를 확인한 후, 없다면 직접 네임서버 계층을 탐색

2️⃣ Recursive vs Iterative Query (재귀 vs 반복 질의)

DNS 질의 방식에는 재귀적 질의(Recursive Query)반복적 질의(Iterative Query) 가 있음.

🔹 재귀적 질의 (Recursive Query)

  • 사용자가 DNS 서버에 요청하면, 해당 DNS 서버가 직접 최종 응답을 찾아서 반환
  • Recursive DNS 서버(ISP 제공 DNS 등)가 수행

🔹 반복적 질의 (Iterative Query)

  • 요청받은 네임서버가 "나는 몰라, 이 네임서버에 물어봐"라고 안내하는 방식
  • 네임서버 계층(Root → TLD → Authoritative)에서 발생

🚀 결론
일반적인 사용자의 DNS 요청은 Recursive Query로 시작하여, 내부적으로 Iterative Query를 수행하는 방식임.


3️⃣ DNS 질의의 전체 흐름

  1. 사용자가 example.com에 접속
  2. 로컬 캐시/hosts 파일 확인
    • 캐시에 존재하면 바로 반환하고 종료
  3. Recursive DNS 서버(예: ISP 제공)로 요청
    • 캐시에 있으면 반환
    • 없으면 Root 네임서버로 재귀적 질의(Recursive Query) 수행
  4. Root 네임서버(.)가 TLD 네임서버로 안내
    • example.com.com을 관리하는 TLD(Top-Level Domain) 네임서버 정보 반환
  5. TLD 네임서버가 Authoritative 네임서버로 안내
    • example.com을 관리하는 최종 네임서버 정보 반환
  6. Authoritative 네임서버가 최종 IP 주소 반환
  7. Recursive DNS 서버가 응답을 캐싱하고, 사용자에게 최종 IP 주소 반환
  8. 사용자 브라우저가 해당 IP로 접속
profile
나만의 공부 일지... [임시 休]

0개의 댓글