컴퓨터 네트워크

DNS의 구동과정

으엉어엉 2026. 1. 8. 09:22
728x90

DNS란 무엇이고, 왜 필요한가?

DNS(Domain Name System)는
사람이 읽을 수 있는 도메인 이름을 컴퓨터가 이해하는 IP 주소로 변환해주는 시스템이다.

예를 들어,

 
www.google.com → 142.250.xxx.xxx

인터넷 통신은 결국 IP 주소로 이루어지지만,
DNS 덕분에 우리는 IP를 외우지 않고도 서비스를 이용할 수 있다.


DNS 조회 과정 (Domain Name Resolution)

브라우저에 www.example.com을 입력했을 때 실제로 일어나는 일을 순서대로 살펴보자. 


인터넷 주소창에 도메인을 입력했을 때, 사용자가 원하는 웹 사이트로 연결되기까지는 보이지 않는 곳에서 수많은 통신 과정이 일어납니다. 이번 포스팅에서는 도메인 이름을 IP 주소로 변환하는 DNS(Domain Name System)의 전체 구동 과정과 성능 최적화의 핵심인 캐싱(Caching) 및 TTL에 대해 상세히 알아보겠습니다.

1. DNS 구동 과정 

DNS 조회는 효율성을 위해 캐시를 먼저 확인하고, 없을 경우에만 외부 서버로 질의하는 순서로 진행됩니다. 전체 흐름은 다음과 같습니다.

1단계: 브라우저 캐시 확인

가장 먼저 브라우저 내부의 DNS 캐시를 확인합니다.

  • 최근에 같은 도메인에 접속한 기록이 있다면 저장된 IP 주소를 즉시 반환합니다.
  • 특징: 별도의 네트워크 요청이 발생하지 않으므로 가장 속도가 빠릅니다.

2단계: OS(운영체제) DNS 캐시 확인

브라우저에 기록이 없다면, 시스템 호출(System Call)을 통해 운영체제에 질의합니다.

  • Windows의 경우 DNS Client Cache, macOS/Linux의 경우 systemd-resolved 등의 데몬이 담당합니다.
  • 운영체제의 hosts 파일 설정도 이 단계에서 확인합니다.

3단계: 로컬 DNS 서버(Recursive Resolver) 요청

운영체제 캐시에도 정보가 없다면, 비로소 외부 네트워크 통신이 발생합니다.

  • 사용자가 연결된 인터넷 회선(ISP)에서 제공하는 DNS 혹은 사용자가 직접 설정한 공용 DNS(8.8.8.8, 1.1.1.1 등)로 요청이 전달됩니다.
  • 이 서버를 로컬 DNS 또는 **리졸버(Resolver)**라고 부르며, 클라이언트를 대신해 IP를 찾아오는 역할을 수행합니다.

4단계: Root DNS 서버 조회

로컬 DNS 서버에도 캐시 데이터가 없다면, 전 세계 DNS의 최상위인 Root DNS 서버('.')에 질의합니다.

  • Root 서버는 도메인의 전체 IP를 알려주는 것이 아니라, .com, .net 같은 최상위 도메인을 관리하는 서버의 위치 정보를 반환합니다.
  • 응답 예시: ".com을 관리하는 TLD 서버의 주소는 여기입니다."

5단계: TLD DNS 서버 조회

로컬 DNS는 안내받은 TLD(Top-Level Domain) 서버에 다시 질의를 보냅니다.

  • .com, .kr, .org 등을 관리하는 서버입니다.
  • 응답 예시: "example.com 도메인의 권한을 가진 네임 서버(Authoritative Server)의 주소는 여기입니다."

6단계: Authoritative DNS 서버 조회 (최종)

마지막으로 도메인의 실제 관리 권한을 가진 Authoritative DNS 서버에 질의합니다.

  • AWS Route53, 가비아, 후이즈 등 도메인을 구매하고 관리하는 곳의 네임 서버가 이에 해당합니다.
  • 응답 예시: "www.example.com의 실제 IP 주소는 93.184.216.34입니다."

7단계: 응답 캐싱 및 결과 전달

최종 IP를 확보한 로컬 DNS 서버는 이 값을 자신의 캐시에 저장(TTL 시간만큼)한 뒤, 사용자 PC(브라우저)에 전달합니다. 브라우저는 받아온 IP를 통해 웹 서버에 HTTP/HTTPS 요청을 보냅니다.


2. DNS 캐싱(Caching)이 필요한 이유

DNS 조회 과정은 위에서 본 것처럼 여러 단계의 서버를 거쳐야 합니다. 만약 매 접속마다 이 과정을 반복한다면 네트워크 지연(Latency)이 발생하여 웹 서핑 속도가 현저히 느려질 것입니다.

이를 방지하기 위해 DNS는 캐싱을 전제로 설계된 시스템입니다. 한 번 조회한 정보는 아래의 여러 계층에 분산 저장되어 재사용됩니다.

  1. 브라우저: 가장 빠르고 즉각적인 응답
  2. 운영체제: 브라우저 간 공유되는 캐시 영역
  3. 로컬 DNS 서버: 같은 네트워크/ISP 사용자들 간에 공유되는 캐시

3. TTL(Time To Live)의 개념과 전략

캐싱은 속도를 높여주지만, IP 주소가 변경되었을 때 즉시 반영되지 않는 문제를 야기할 수 있습니다. 이를 제어하기 위한 장치가 바로 **TTL(Time To Live)**입니다.

TTL이란?

DNS 응답 결과(IP 주소 등)를 얼마나 오랫동안 캐시에 저장해도 되는지를 초(Seconds) 단위로 지정한 값입니다.

  • 예시: example.com A 93.184.216.34 (TTL = 300)
  • 해석: 300초(5분) 동안은 다시 물어보지 말고 저장된 IP를 사용하라.

TTL 장단점 비교

구분 TTL이 길 때 TTL이 짧을 때
장점 DNS 요청 수 감소

사용자 응답 속도 향상

서버 부하 감소
IP 변경 시 빠른 전파 가능

서버 장애 시 유연한 대처(Failover) 유리
단점 IP 변경 시 전파 속도가 느림

과거 IP로 접속되는 문제 발생 가능
DNS 질의량 폭증

네트워크 비용 및 로컬 DNS 부하 증가

실무에서의 TTL 설정 전략

서비스의 성격과 상황에 따라 적절한 TTL 값을 설정하는 것이 중요합니다.

  1. 일반적인 웹 서비스 (300 ~ 3600초)
    • IP 변경이 잦지 않은 일반적인 상황에서는 5분에서 1시간 정도로 설정하여 쿼리 비용을 절감합니다.
  2. 장애 대비 / 배포 직전 (30 ~ 60초)
    • 서버 마이그레이션이나 중요 업데이트를 앞두고 있다면, 변경 사항이 빠르게 전파되도록 TTL을 미리 1분 내외로 줄여놓습니다.
  3. CDN 및 글로벌 서비스 (가변적)
    • GSLB(Global Server Load Balancing) 등을 사용하는 경우 상황에 따라 매우 짧은 TTL을 사용하기도 합니다.
728x90

'컴퓨터 네트워크' 카테고리의 다른 글

네트워크 exception  (0) 2024.12.24
Network program - 2  (0) 2024.12.24
Network program  (0) 2024.12.24
네트워크 - 기본 이론  (2) 2024.12.24
InputStream, OutputStream  (1) 2024.12.22