Little bIT awesome

[네트워크] DNS 동작방식 본문

CS 공부/Computer Science

[네트워크] DNS 동작방식

까루카라 2024. 10. 29. 10:56

DNS란?

  • 웹사이트에 접속할 때, 외우기 어려운 IP 주소 대신에 도메인 이름을 사용
  • DNS : 도메인을 실제 네트워크상에서 사용하는 IP 주소로 바꾸고 해당 IP 주소로 접속하는 과정, 시스템 
  • DNS는 전세계적으로 약속된 규칙을 공유

 

  • 상위 기관에서 인증된 기관에게 도메인을 생성하거나 IP 주소로 변경할 수 있는 '권한'을 부여
  • DNS는 이처럼 (상위 기관과 하위 기관)과 같은 '계층 구조'를 가지는 분산 데이터베이스 구조를 가진다. 

 

DNS 구성 요소 (3)

1. 도메인 네임 스페이스(Domain Name Space)

2. 네임 서버 (Name Server) = 권한 있는 DNS 서버

3. 리졸버 (Resolver) = 권한 없는 DNS 서버

 

  • "이 도메인 이름은 이 IP 주소이다" 라는 '텍스트'를 저장하는 데이터베이스가 필요
  • 분산된 데이터가 어디 저장되어 있는지 찾을 프로그램, 찾았으면 해당 IP 주소로 이동할 프로그램(ex 브라우저)이 필요
  • 도메인 네임 스페이스라는 규칙(방법)으로 도메인 이름 저장을 분산
  • 네임 서버가 해당 도메인 이름의 IP 주소를 찾는다.
    - DNS 서버와 같은 말
    - 리졸버 서버 등 시스템 안에서 다른 역할을 하는 서버도 있기에 그냥 DNS 서버라고 하는 것보다 네임 서버라고 하는게 더 의미가 전달되는 듯
  • 리졸버가 DNS 클라이언트 요청을 네임 서버로 전달하고 찾은 정보를 클라이언트에게 제공하는 기능을 수행
    - 어떤 네임 서버에서 찾아야 하는지, 이미 캐시 되어있는지 등 해결 & 찾거나 못찾거나 이를 클라이언트에게 보고
    - 단말에 구현하는 것은 무리수 → 보통 리졸버가 구현되어 있는 네임 서버의 IP 주소만을 파악
    - ex) KT/LG/SK와 같은 ISP(통신사) DNS, 브라우저 우회 용도로 많이 쓰는 구글 DNS, 클라우드플레어와 같은 Public DNS 서버
    - Resolver = Recursive DNS Server = Local Server(of ISP) = Recursor

 

DNS 동작 방식 설명

  •  웹 브라우저가 리졸버 서버에게 요청  : "www.ccc.kr"의 IP 주소를 알려줘"
  • 리졸버 서버는 최상위 기관에서 관리하는 네임 서버에게 요청 : ".kr 이라는 도메인이 있나요?"
  • 최상위 기관에서 관리하는 네임 서버가 응답 : ".kr는 한국 국가 도메인임, .kr 네임 서버로 가보세요"
  • 해결사 서버는 이제는 .kr 네임 서버에게 요청 : “ccc.kr 있나요?”
  • .kr 네임 서버는 응답 : “~~ 서버로 가세요”
  • 해결사 서버는 가비아 네임 서버에게 요청 : “www.ccc.kr 있나요?”
  • 가비아 네임 서버는 응답 : "네 xxx.xxx.xxx.xxx 으로 가세요!”
  • 리졸버 서버는 웹 브라우저에게 알림 : "네 xxx.xxx.xxx.xxx 으로 가세요!”

 

DNS 구성 요소 : Domain Name Space

Domain Name Space

  • DNS는 전세계적인 거대한 분산 시스템
  • 도메인 네임 스페이스는 이러한 DNS가 저장 관리하는 계층적 구조를 의미
  • 최상위에 루트 DNS 서버가 존재하고 그 하위로 연결된 모든 노드가 연속해서 이어진 계층적 구조 (≈ 폴더 구조)

 

계층적 도메인 레벨 (Hierarchical Domain Level)

  • 하위 조직의 네임 스페이스를 할당하고 관리하는 방식은 각 하위 기관의 관리 책임자에게 위임
  • 예를 들어 "ccc.kr" 도메인은 "kr" 도메인을 관리하는 네임 서버에 등록되어있다. 
  • "blog.ccc.kr" 도메인을 생성하기 위해선 "kr" 도메인을 관리하는 네임 서버의 레코드를 수정하면 됨
  • 이러한 구조는 호스트 증가에 대한 관리가 효율적으로 이루어지는 것을 가능하게 함
  • AWS같은 호스팅에서 가비아에서 구매한 도메인을 사용하려면 route53에 생성된 네임서버를 가비아 도메인 네임서버에 추가 (가비아 도메인 "해당 IP 주소를 route53 네임서버에서 찾으시오")
  • (가비아에서 도메인 구매, route53에서 해당 도메인을 위한 호스팅 영역 생성, 가비아 도메인 관리에서 기본 네임서버를 route53으로 변경)

 

 

Fully Qualified Domain Nam(FQDN) 전체 도메인 이름

  • 도메인의 전체 이름을 표기하는 방식을 설명
  • 일반적으로 도메인 이름은 www.ccc.com에서 ccc.com을 의미하기 때문에 이런 용어로 구분
  • 도메인 이름 : ccc.com
  • 호스트 이름 : www
  • FQDN : www.ccc.com

 

DNS 구성 요소 : 네임 서버 (Name Server == DNS Server)

  • 문자열로 표현된 도메인 이름을 IP 주소로 변환시키기 위해서는 도메인 네임 스페이스의 트리 구조에 대한 정보가 필요
  • 이러한 정보를 가지고 있는 서버를 "네임 서버"라고 함
  • 데이터베이스의 역할(저장과 관리), 찾아주는 역할, 요청 처리 응답 구현
  • 전 세계에 13개의 Root DNS 서버가 구축되어 있음
    패킷의 실질적인 크기 제한으로 인해 루트 DNS 서버 수를 13개 서버 주소로 제한하도록 결정
    13개의 Root DNS의 정보는 모든 리졸버 안에 저장되어 있음(처음 리졸버를 구동할 때 모든 루트 서버 정보를 한 번에 받아야 하는데 이 때, UDP 패킷(512바이트) 크기 때문에 13개로 제한됨
  • DNS 서버를 복사한 미러 서버가 있음(부하 분산, 안정성, 속도 향상 등)

 

1. Root DNS 서버

  • ICANN이 관리하는 최상위 DNS 서버
  • TLD DNS 서버의 IP 주소를 저장하고 안내하는 역할

 

2. Top-Level Domain(TLD) DNS 서버

  • 도메인 등록 기관이 관리하는 서버
  • Authoritative DNS 서버의 주소를 저장하고 안내하는 역할
  • 도메인 판매 업체 (가비아 등)의 DNS 설정이 변경되면 도메인 등록 기관으로 전달되기 때문에 어떤 도메인이 어떤 판매업체에서 구매했는지 알 수 있는 것

 

3. Second-Level Domain(SLD) DNS 서버 (Authoritative DNS 서버 라고도 함)

  • 실제 개인 도메인과 IP 주소의 관계가 기록(저장, 변경)되는 서버이다. 
  • 그래서 권한의 의미인 Authoritative가 붙음.
  • 일반적으로 도메인/호스팅 업체의 네임서버를 말한다. 
  • 개인 DNS 구축해도 이 경우에 해당

 

4. 권한 없는 DNS 서버 (리졸버 서버, 리컬시브 서버, 리커서)

  • DNS 서버는 도메인 네임 스페이스를 위한 권한 있는 DNS 서버와 권한이 없는 DNS 서버로 구분된다.
  • 위 1,2,3은 권한 있는 DNS 서버이다.
  • 네임 스페이스를 위한 권한 있는 DNS 서버는 IP 주소와 도메인 이름을 매핑한다.
  • 네임 스페이스를 위한 권한 없는 DNS 서버는 질의를 통해 IP 주소를 알아내거나 캐시한다.
  • 구글 DNS, Cloudflare DNS, ISP DNS
    • PC의 스텁 리졸버가 쿼리 생성 (내장 리졸버)
    • 설정된 DNS 서버(재귀적 리졸버)로 전달
    • DNS 서버가 실제 질의 수행

 

 

 

Recursive Query (재귀적 질의)

  • 결과물 (IP 주소)를 돌려주는 작업
    결과적으로 Recursive 서버가 Recursive 쿼리를 웹 브라우저에 등에게 돌려주는 역할을 한다. 
  • Recursive 쿼리를 받은 Recursive 서버는 Iterative 하게 권한 있는 네임 서버로 Iterative 쿼리를 보내서
    결과적으로 IP 주소를 찾게 되고 해당 결과물을 응답한다.

 

Iterative Query (반복적 질의)

Recursive DNS 서버가 다른 DNS 서버에게 쿼리를 보내어 응답을 요청하는 작업

Recursive 서버가 권한 있는 네임 서버들에게 반복적으로 쿼리를 보내서 결과물 (IP 주소)를 알아낸다. 

Recursive 서버에 이미 IP 주소가 캐시 되어있다면 이 과정은 건너 뛴다. 

 

 

DNS 동작 과정 전체 예시

  1. 웹 브라우저에 www.hanamon.kr을 입력한다.
  2. 웹 브라우저는 이전에 방문한적 있는지 찾는다.
    • 브라우저 캐시 확인
    • OS 캐시 확인
    • 라우터 캐시 확인
    • ISP 캐시 확인 (Recursive DNS Server)
  3. ISP에서 DNS Iterative하게 쿼리를 날린다.
  4. ISP는 Authoritative DNS 서버에서 최종적으로 IP 주소를 응답받는다.
  5. ISP는 해당 IP 주소를 캐시한다.
  6. 웹 브라우저에게 응답한다.

https://hanamon.kr/dns%EB%9E%80-%EB%8F%84%EB%A9%94%EC%9D%B8-%EB%84%A4%EC%9E%84-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B0%9C%EB%85%90%EB%B6%80%ED%84%B0-%EC%9E%91%EB%8F%99-%EB%B0%A9%EC%8B%9D%EA%B9%8C%EC%A7%80/

 

 

'CS 공부 > Computer Science' 카테고리의 다른 글

[2주차] Computer Architecture(2/2)  (1) 2023.10.08
[1주차] Computer Architecture(1/2)  (0) 2023.09.29