Daily Dev Q&A: DNS

2026. 1. 14. 19:07·Archive/Daily Dev Q&A

Topic (오늘의 주제)

DNS (Domain Name System)와 동작 원리

Why (왜 사용하는가? 왜 중요한가?)

  • 실무: 사용자는 복잡한 **IP 주소(예: 142.250.196.14)**를 외울 수 없습니다. DNS는 이를 사람이 기억하기 쉬운 **도메인 이름(예: https://www.google.com/search?q=google.com)**으로 변환해 주는 인터넷의 전화번호부 역할을 합니다.
  • 구조적 의미: 클라이언트와 서버 사이의 추상화 계층입니다. 서버를 이전하여 IP가 바뀌더라도, DNS 설정만 바꾸면 사용자는 동일한 도메인으로 계속 접속할 수 있습니다(유연성).
  • 면접 의도: "주소창에 www.google.com을 쳤을 때 일어나는 과정"을 설명할 때 가장 먼저 등장하는 단계로, 네트워크의 계층 구조와 캐싱(Caching) 전략을 이해하고 있는지 확인합니다.

Core Concept (핵심 개념 정리)

요소 내용
개념 정의 사람이 읽을 수 있는 **도메인 이름(Domain Name)**을 기계가 읽을 수 있는 IP 주소로 변환(Resolving)해 주는 시스템.
구성 요소 1. Resolver (Local DNS): 클라이언트의 요청을 받아 DNS 서버들을 찾아다니는 심부름꾼 (주로 ISP나 통신사가 제공).

2. Root Server (.): 최상위 관리자. TLD 서버 위치를 알려줌.

3. TLD Server (.com, .kr): 최상위 도메인(.com 등)을 관리하는 서버.

4. Authoritative Server: 실제 도메인의 IP 정보를 가지고 있는 최종 네임 서버 (AWS Route53, 가비아 등).
주요 레코드 A: 도메인 → IPv4 주소

AAAA: 도메인 → IPv6 주소

CNAME: 도메인 → 다른 도메인 (별칭)

NS: 네임 서버 정보

TXT: 텍스트 정보 (주로 소유권 인증, 이메일 보안에 사용)
동작 흐름 Client → Hosts 파일 확인 → Local DNS Cache 확인 → ISP Resolver 요청 → Root Server → TLD Server → Authoritative Server → IP 획득 → 접속.

Interview Answer Version (면접 답변식 요약)

"DNS는 인터넷의 전화번호부로, 사용자가 입력한 도메인 이름을 실제 서버의 IP 주소로 변환해 주는 시스템입니다.

사용자가 도메인을 입력하면 먼저 로컬 캐시와 Hosts 파일을 확인하고, 없으면 ISP의 Resolver가 Root, TLD, Authoritative 네임 서버 순으로 재귀적(Recursive) 질의를 수행하여 IP를 찾아옵니다.

이 과정에서 성능 향상을 위해 각 단계마다 **캐싱(Caching)**이 적극적으로 사용됩니다."

Practical Tip (사용시 주의할 점 or 활용 예)

1. TTL (Time To Live) 관리

  • DNS 레코드에는 캐시 유효 시간인 TTL이 있습니다.
  • 활용: 서버 이전을 계획 중이라면, 며칠 전에 미리 TTL을 매우 짧게(예: 60초) 줄여놔야 합니다. 그래야 DNS 변경 시 전 세계 사용자에게 빠르게 전파되어 서비스 중단을 막을 수 있습니다.

2. 개발 단계에서의 Hosts 파일 활용 (/etc/hosts)

  • 도메인을 샀지만 아직 DNS 설정이 전파되지 않았거나, 로컬 개발 환경을 실제 도메인처럼 테스트하고 싶을 때 사용합니다.
  • DNS 서버에 묻기 전에 내 컴퓨터의 hosts 파일을 가장 먼저 참조하기 때문에, 여기서 특정 도메인의 IP를 강제로 지정할 수 있습니다.
    • Mac/Linux: /etc/hosts
    • Windows: C:\Windows\System32\drivers\etc\hosts

3. CNAME vs A Record

  • A Record: example.com -> 1.2.3.4 (직접 IP 연결. 빠름)
  • CNAME: www.example.com -> example.com (별칭 연결. IP가 바뀌어도 도메인만 유지하면 되므로 관리가 편하지만, DNS 조회를 한 번 더 해야 함.)
  • 주의: Root Domain(example.com)에는 표준 스펙상 CNAME을 사용할 수 없습니다. (Alias Record나 A Record를 써야 함).

예상 꼬리질문 정리

  1. Q: 브라우저 캐시, OS 캐시, DNS 서버 캐시의 차이는?
    • 핵심 키워드: 가장 먼저 브라우저가 자체 캐시를 확인하고, 없으면 OS의 캐시(hosts 등)를 확인하며, 그래도 없으면 DNS 서버(Resolver)로 나갑니다. 계층적인 캐시 구조입니다.
  2. Q: DNS 조회 방식 중 Recursive Query와 Iterative Query의 차이는?
    • 핵심 키워드: Recursive(재귀): "나 대신 찾아와 줘" (Client -> Resolver). Iterative(반복): "주소 알려줄 테니 네가 직접 가서 물어봐" (Resolver <-> Root/TLD).
  3. Q: DNS를 이용한 로드 밸런싱(GSLB)에 대해 아시나요?
    • 핵심 키워드: 하나의 도메인에 여러 개의 IP를 등록하여, DNS 요청이 올 때마다 라운드 로빈(Round Robin) 등으로 IP를 번갈아 알려주어 트래픽을 분산하는 기법입니다.

'Archive > Daily Dev Q&A' 카테고리의 다른 글

Daily Dev Q&A: Inner Join vs Outer Join  (1) 2026.01.19
Daily Dev Q&A: ApplicationContext  (0) 2026.01.19
Daily Dev Q&A: N+1 문제 & 해결책  (0) 2026.01.13
Daily Dev Q&A: Spring MVC  (0) 2026.01.13
Daily Dev Q&A: JPA vs MyBatis  (0) 2026.01.09
'Archive/Daily Dev Q&A' 카테고리의 다른 글
  • Daily Dev Q&A: Inner Join vs Outer Join
  • Daily Dev Q&A: ApplicationContext
  • Daily Dev Q&A: N+1 문제 & 해결책
  • Daily Dev Q&A: Spring MVC
tlsgkstj
tlsgkstj
짱구의 성장 일기
  • tlsgkstj
    코딩하는 짱구
    tlsgkstj
  • 전체
    오늘
    어제
    • 분류 전체보기 (159)
      • About (1)
      • Projects (35)
        • Personal Projects (21)
        • Team Projects (14)
      • Engineering (20)
        • CS & Tools (0)
        • Backend Core (15)
        • Frontend (1)
        • Infra & Cloud (2)
        • AI & Tools (1)
      • Trouble Shooting & Issues (0)
      • Growth & Career (38)
        • Interview Prep (0)
        • Retrospectives (38)
      • Archive (65)
        • TIL (8)
        • Daily Dev Q&A (56)
  • 블로그 메뉴

    • 홈
    • About
    • Projects
    • Tech Stack
    • Dev Log
    • GitHub
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    커리어리셋
    프로젝트회고
    spring
    backend
    OrphanRemova
    til
    Spring비교
    DevFestIncheon2025
    jpa
    devlog
    Project_Review
    java
    aws_s3
    network
    REACT
    SpringBoot
    프로덕트개발자
    클로드코드
    경기기후바이브코딩
    데브페스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
tlsgkstj
Daily Dev Q&A: DNS
상단으로

티스토리툴바