[TIL] DNS

김은혁·2023년 3월 28일
0

DNS (Domain Name System)

도메인 주소를 IP 주소로 바꿔주는 시스템

ex)
사람을 식별하는 방법

  • 주민번호, 이름, 여권번호
    인터넷 호스트, 라우터 식별하는 방법
  • IP주소 - datagram에 주소를 부여하기 위해 사용
  • "이름" (www.abc.com) - 사람이 사용

IP 주소와 이름을 어떻게 매핑할 것인가 ?
=> DNS

  • 분산된 데이터베이스: 여러 계층의 name server들로 구현됨
  • 애플리케이션 계층 프로토콜: 호스트와 네임서버들은 주소-이름 변환을 위해 통신함

DNS 서비스

  • 호스트 이름과 IP주소의 변환
  • host aliasing
    ㅁ 정식이름(canonical name), 별칭(alias name)을 관리
  • 부하 분산
    ㅁ 중복된 웹 서버들: 여러 IP주소가 하나의 이름에 연관되어 있음.

중앙집중식의 문제?

  • 서버의 고장이 전체를 마비시킴
  • 트래픽의 양
  • 중앙집중 DB까지의 거리
  • 유지관리

-> 확장성이 없다 => 분산식의 서버를 사용

분산 계층 데이터베이스

클라이언트가 www.amazon.com의 IP 주소를 찾는 과정
1. 클라이언트는 root server에 질의해 com DNS server를 알아낸다
2. 클라이언트는 .com DNS server에 질의해 amazon.com DNS server를 알아낸다
3. 클라이언트는 amazon.com DNS server에 질의해 www.amazon.com의 IP 주소를 알아낸다.

Root name server

  • 지역 name server가 이름을 변환하고자 할 때 접속한다
  • root name server
    ㅁ 매핑 정보를 모르면 책임 서버에 접속
    ㅁ 매핑 정보를 얻는다
    ㅁ 지역 네임 서버에 그 정보를 돌려준다

전세계에 13개의 logical root name server가 있다.

TLD 서버, 책임 DNS 서버

최상위 레벨 도메인(Top-Level Domain) 서버

  • com, org, net, edu, aero, jobs, museums 등과 최상위 국가 도메인(ex. uk, fr, ca, kr)을 책임진다
  • Network Solutions 사가 .com TLD 서버를 관리함
  • Educause 사가 .edu TLD 서버를 관리함

책임 (authoritative) DNS 서버

  • 각 기관은 자신의 DNS server를 가지고, 기관 내 호스트 들의 이름-IP 매핑을 제공한다
  • 기관에서 자체적으로 관리하거나, 또는 인터넷 서비스 제공자가 관리한다

로컬 DNS name server

  • 계층 구조에 정확히 들어맞지는 않는다
  • 각 ISP에 하나씩 있다
    ㅁ default name server라고도 한다
  • 호스트가 DNS 질의를 하면, 로컬 DNS 서버에 보내진다.
    ㅁ 캐시에 최근의 이름-주소 변환 쌍을 보관하고 있음
    ㅁ 프록시 역할을 하여, 질의를 DNS 계층 구조에 전달함

반복적 질의 (iterated query)

  • 질의를 받은 서버는 다음에 접속할 서버의 이름을 돌려준다
  • 난 모르지만 이 서버에 물어보시라 ~

재귀적 질의 (recursive query)

  • 질의를 받은 네임서버는 주소를 알아내서 돌려준다
  • 상위 계층에 과부하 ?

캐싱과 갱신

  • 네임 서버가 매핑 정보를 얻으면, 그것을 캐시에 저장한다
    ㅁ 캐시의 정보는 일정시간(TTL) 후에 무효화된다.
    ㅁ TLD server는 로컬 네임 서버에 캐싱된다
  • 캐싱된 내용은 낡은 정보일수도,,, (best effort 방식의 이름-주소 변환)
    ㅁ 만일 해당 이름의 호스트가 ip 주소를 바꾸면 TTL이 만료될 때까지 찾지 못할 수 있음
  • 갱신 / 통보 매커니즘이 IETF 표준으로 제안됨 : RFC 2136

DNS 레코드
DNS: 자원레코드 (resource records, RR)가 저장된 분산 DB
RR 형식 : (name, value, type, ttl)

  • type=A
    ㅁ name: 호스트 이름
    ㅁ value: IP 주소
  • type=NS
    ㅁ name: 도메인 (예: foo.com)
    ㅁ value: 이 도메인의 책임 네임 서버의 이름
  • type=CNAME
    ㅁ name: 별칭
    ㅁ 예를 들어 www.ibm.com은 사실 servereast.backup2.ibm.com
    ㅁ value: 정식 이름

DNS protocol, messages

  • query, reply 메시지는 같은 형식을 사용함
  • UDP 사용

0개의 댓글