카테고리 없음

DNS(Domain Name Service)

곰돌이볼 2023. 7. 20. 22:29

호스트 식별자


  • 호스트 식별자
    • 호스트 이름(hostname)
      • 사람들이 인식하기 쉬움
      • 호스트 위치에 대한 정보 제공 X
      • 가변 길이의 알파뉴메릭 문자로 구성됨
      • 라우터 처리가 어려움
    • IP 주소
      • 4byte 구성
      • 계층구조
      • 호스트 위치에 대한 정보 찾기 가능

 

DNS


  • DNS(Domain Name System)
    • 주요 역할 : 호스트 이름 → IP 주소 변환
    • DNS 서버들의 계층구조로 구현된 분산 데이터베이스
    • 호스트가 분산 데이터베이스로 질의할 수 있도록 허락한 어플리케이션 계층 프로토콜
    • DNS 서버 → 주로 BIND 소프트웨어이 동작하는 유닉스 컴퓨터
    • DNS 프로토콜 : UDP, 53번 포트 사용

 

  • DNS 서비스
    • 호스트 에일리어싱(host aliasing) : 별칭 호스트 이름에 대한 정식 호스트 이름 찾기
      • 호스트 이름이 복잡할 경우 하나 이상의 별명 가능
      • 정식 호스트 이름(canonical hostanme) : 원래의 호스트 이름
      • 별칭 호스트 이름 : 정식 호스트 이름의 별칭
    • 메일 서버 에일리어싱(mail server aliasing) : 별칭 호스트 이름에 대한 정식 호스트 이름을 얻기 위해 메일 애플리케이션에 의해 수행
    • 부하 분산(load distribution) : 여러 중복 서버 사이에 부하를 분산하는 역할
      • 중복 웹 서버 : 하나의 정식 호스트 이름에 여러 IP 주소 존재
      • DNS 데이터베이스 : 여러 IP 주소 집합 저장
      • DNS는 중복 웹 서버에 대한 IP 주소를 순환식으로 전달

 

 

중앙 집중 데이터베이스의 단일 DNS의 문제점


  • 서버 고장 : 인터넷 동작 X → 리스크 ↑
  • 엄청난 트래픽양 : 모든 DNS 질의 처리를 단일 DNS가 처리해야함
  • 먼 거리의 중앙 집중 데이터베이스 : 모든 DNS 질의 거리가 가깝지 않음 → 엄청난 시간 지연 발생
  • 어려운 유지관리 : 모든 호스트에 대한 레코드 유지, 새로운 호스트 갱신, 호스트 등록을 위한 사용자 인증 문제
  • 확장성 X : 단일 DNS 서버에 있는 중앙 집중 데이터베이스의 한계

       => 분산 데이터베이스로 DNS 서버 구현

 

DNS 서버


  • DNS 서버 구조 - 확장성 문제 해결을 위해서
    • 많은 서버 이용
    • 계층 형태 구성
    • 분산

 

  • DNS 서버 유형(계층 구조)
    • 루트 DNS 서버
      • TLD 서버의 IP 주소 제공
    • 최상위 레벨 도메인 네임(top-level domain, TLD) DNS 서버
      • 상위 레벨 도메인과 모든 국가의 상위 레벨 도메인에 대한 TLD 서버
      • TLD를 지원하는 네트워크 인프라는 크고 복잡
      • 책임 DNS 서버에 대한 IP 주소 제공
    • 책임(authoritative) DNS 서버
      • 접근이 쉬운 호스트를 가진 모든 기관은 호스트 이름과 IP 주소로 매핑하는 공개적인 DNS 레코드 제공 필수
      • 직접 책임 DNS 서버 구현 또는 서비스를 제공해주는 기관 이용

 

  • 로컬 DNS 서버(= 디폴트 네임 서버)
    • 서버들의 계층 구조에 엄격하게 속하지 않음
    • DNS 구조의 중심
      • 1. 호스트가 DNS 질의
      • 2. 프록시로 먼저 동작하는 로컬 DNS 서버로 DNS 질의 전달
      • 3. 로컬 DNS 서버는 이 질의를 DNS 서버 계층(루트 DNS 서버, TLD DNS 서버, 책임 DNS 서버)으로 전달
      • 4. 이를 통해서 얻은 IP 주소를 로컬 DNS 서버가 호스트에게 전달

 

 

DNS 캐싱


  • DNS 질의
    • 재귀적 질의(recursive query)
      • 요청하는 호스트로부터 로컬 DNS 서버까지의 질의 형태로, 로컬 DNS 서버가 호스트 대신 DNS 서버 계층으로부터 IP 주소를 얻어서 전달 
    • 반복적 질의(iterative query)
      • 질의한 DNS 서버에게 바로 응답이 오는 질의

 

  • DNS 캐싱
    • 목적 : 지연 지능 향상 및 네트워크의 DNS 메시지 수를 줄이기 위해서 함
    • DNS 서버가 DNS 응답을 받았을 때, 로컬 메모리에 응답에 대한 정보 저장 → 호스트가 같은 호스트 이름을 질의할 때 저장한 정보 전
    • 호스트 DNS와 IP 주소는 영구적 X → 일정 기간이 지나면 저장한 정보 삭제

 

DNS 레코드


  • 자원 레코드(resource record)
    • 호스트 이름과 IP 주소를 매핑해서 저장하기 위한 형태
    • 형식
      • (Name, Value, Type, TTL)
  • 자원 레코드의 형식
    • Type A
      • Name : 호스트 이름
      • Value : 호스트 이름에 대한 IP 주소
      • 책임 DNS 서버가 Type A 레코드 포함
      • 책임 DNS 서버 이외의 DNS 서버는 Type NS의 Value에 대한 Type A 레코드 포함
    • Type NS
      • Name : 도메인
      • Value : 도메인의 IP 주소를 얻을 수 있는 책임 DNS 서버의 호스트 이름
      • 책임 DNS 서버 이외의 DNS 서버는 Type NS 레코드 포함
    • Type CNAME
      • Name : 별칭 호스트 이름
      • Value : Name에 대한 정식 호스트 이름
    • Type MX
      • Name : 별칭 호스트 이름
      • Value :  Name을 갖는 메일 서버의 정식 이름
    • TTL : 자원 레코드의 생존기간(Time To Live)

 

 

DNS 메세지


  • DNS 메세지 포맷
헤더
(12 바이트)
식별자 플래그
질문의 수 답변 RR의 수 추가 RR의 수 추가 RR의 수
질문(가변 질문 수)
답변(가변 RR 수)
책임(가변 RR 수)
추가 정보(가변 RR 수)
  • DNS 메세지 포맷의 구성
    • 헤더 영역(Header section) : 12 byte
      • 식별자 : 16 bit
      • 플래그 필드 : 각 플래그는 1bit
        • 질의/응답 플래그 : 메세지의 질의(0), 응답(1)
        • 책임 플래그 : DNS 서버가 질의 이름에 대한 책임 서버일 경우 응답 메세지에 설정
        • 재귀 요구 플래그 : DNS 서버가 레코드를 갖지 않을 때 재귀적 질의를 수행하기를 클라이언트가 원할 때 설정
        • 재귀 가능 플래그 : DNS 서버가 재귀 질의를 지원하면 응답에 설정
      • 4개의 '개수' 필드 : 헤더 다음에 오는 데이터 영역의 네가지 타입의 발생 횟수
    • 질문 영역(question section)
      • 현재 질의에 대한 정보
        • 1. 질의되는 이름을 포함하는 이름 필드(NAME)
        • 2. 이름에 대한 문의되는 질문 타입을 나타내는 타입 필드(TYPE)
    • 답변 영역(asnwer section)
      • 질의된 이름(NAME)에 대한 자원 레코드
      • 여러 개의 RR 가능
    • 책임 영역(authority section)
      • 다른 책임 서버의 레코드
    • 추가 영역(additional section)
      • 다른 도움이 될 수 있는 레코드

 

DNS 데이터베이스에 레코드 삽입


  • DNS 데이터베이스에 레코드 삽입 방법
    • 1. 등록기관에 도메인 등록하기
      • 주책임 서버와 부책임 서버의 이름과 IP 주소 제공
    • 2. 등록기관은 도메인 네임의 유일성 확인
    • 3. 도메인 이름을 DNS 데이터베이스에 추가
      • 두 책임 서버의 Type NS와 Type A 레코드가 TLD 서버에 등록되었는지 확인하기

 

 

 

** 참고 문헌 ** 「컴퓨터 네트워킹 : 하향식 접근(7판)」 James F. Kurose,Keith W.Ross