DNS

이정민·2022년 6월 13일
0

네트워크

목록 보기
11/12

DNS(Domain Name System)

  • 도메인 이름: 체계적으로 문자로 표현한 호스트 이름
  • 도메인 이름을 IP 주소로 변환

IP 주소 체계

  • IP 주소: 32비트 이진수, 호스트 구분

DNS 필요성

  • 도메인 이름: 문자형으로 표기되는 호스트 이름(일반 사용자가 선호)
  • IP 주소: IP 프로토콜에서 호스트 구분을 위하여 반드시 필요
  • DNS: 도메인 이름을 이용하여 IP주소로 변환하는 서비스

/etc/hosts 파일

  • 인터넷 초기에 수작업으로 관리
  • 파일의 내용은 (도메인 이름, IP 주소)의 쌍으로 구성
  • 인터넷 보급이 확산되면서 DNS를 이용하여 자동으로 처리

DNS

  • 계층구조의 도메인 기반 주소 표기 방법을 위한 분산 데이터베이스 시스템
  • 도메인 이름에서 IP 주소를 얻음

해석기

  • IP 주소를 원하는 응용 프로그램은 도메인 이름을 매개변수로 해석기 호출함
  • UDP를 이용해 DNS 네임 서버에 변환을 요청하여 호스트의 IP주소를 얻음

nslookup 명령

  • DNS를 이용해 주소 변환 요구를 수행하는 대화형 프로그램

DNS: 도메인 네임 스페이스, 네임서버, 해석기로 구성

  • 도메인 네임 스페이스
    • 트리 구조의 네임 스페이스를 비롯해 데이터에 대한 이름 관련 규칙 정의
    • 트리에 연결된 호스트는 자원 레코드로 표현
      • 자원 레코드: 네임서버과 관리하는 (호스트 이름:IP)에 대한 정보를 표현하는 자료구조
    • DNS 서비스는 자원 레코드의 특정 유형 정보를 얻는 과정

네임 서버

  • 도메인 트리 구조와 트리에 보관된 자원 레코드를 관리하는 프로그램
  • 여러 네임 서버가 구역을 분할해 전체 도메인을 관리함

해석기

  • 클라이언트의 요청을 받아 네임서버로부터 정보를 얻어냄
  • 하나 이상의 네임서버와 접촉

도메인 네임 스페이스

  • DNS가 저장, 관리하는 계층적 데이터베이스
  • 최상위에 루트가 존재, 그 아래로 모든 호스트가 트리 구조로 이어짐
  • 레이블: 호스트의 이름
  • 도메인 이름: 점으로 구분한 호스트 레이블의 연속

도메인 네임 스페이스의 구조

  • 계층적인 트리 구조를 지원
  • 도메인 이름
    • 최하위 호스트의 레이블을 맨 왼쪽에 두고, 상위 노드로 이동하면서 점으로 구분한 레이블 이름을 연속으로 붙임
    • TLD(Top Level Domain)
      • 최상위 도메인
      • 도메인 이름의 맨 오른쪽 위치
  • 도메인
    • 도메인 네임 스페이스에서 하부 트리 전체를 의미
    • 해당 도메인의 명칭은 하부 트리의 맨 상위에 위치한 호스트의 도메인 이름
  • 최상위 도메인의 분류
    • net: 네트워크 관련 기관
    • com: 상업적 기관
    • biz: 비즈니스 목적 회사
    • info: 정보 서비스 제공자
    • coop: 협동조합
    • pro: 전문가 관련 기관
    • areo: 항공 관련 기관
    • int: 국제 기관
    • edu: 교육 기관
    • org: 비영리 기관
    • museum: 박물관
    • gov: 미국 연방정부 기관
    • mil: 미국 국방성
    • name: 개인
  • 도메인 이름
    • 하위 호스트의 레이블부터 루트에 이르는 경로에 위치한 모든 호스트의 레이블을 점으로 연결한 것

계층 구조의 네임 서버

  • 각 네임서버는 자신의 하부에 위치한 호스트 정보만 관리
  • 이웃하는 네임 서버끼지 정보가 필요할 때는 상위 네임 서버의 중개 필요

도메인 영역

  • 존: 임의의 네임서버가 관리하는 영역
  • 네임 서버 아래 하부 도메인이 없을 때, 도메인 영역과 존이 같다.
  • 존에 한 개 이상의 네임 서버가 있고, 네임 서버는 데이터베이스를 관리한다.

자원 레코드

  • DNS 네임 서버가 해석기에 반환하는 데이터 형식
  • 레코드 유형에 따라 여러 가지가 있다.
  • ex) A recode: (호스트 이름:IP주소)

질의 레코드

  • DNS 클라이언트가 DNS 서버에 정보를 요청하는 방식

자원 레코드 필드

  • Name: 찾고자 하는 가변 길이의 도메인 이름
  • Type: 16비트 크기로 자원의 종류
  • Class: 프로토콜 패밀리
  • TTL: 자원 레코드가 만기까지의 유효 시간을 나타냄
  • RD Length: 자원 데이터의 길이를 바이트 단위로 나타냄
  • RD: 자원 레코드와 관계된 데이터가 기록

질의 레코드 필드

  • Name
  • Type
  • Class

자원 레코드의 유형

  • A(Address): 호스트의 IP 주소를 의미, 도메인 이름을 IP 주소로 변환하는데 사용
  • NS(Name Server): 도메인을 관정하는 인증된 네임서버
  • CNAME(Canonical Name): 별명이 있는 호스트의 정식 이름
  • SOA: 존의 시작
  • WKS: 호스트가 제공하는 네트워크 서비스를 정의한다.
  • PTR: 도메인 이름을 가리키는 포인터, IP 주소를 도메인 이름으로 변환하는데 사용
  • HINFO: 호스트 정보, 호스트가 사용하는 하드웨어와 운영체제에 관한 정보 제공

네임 서버와 해석기

DNS 서비스 과정

  • 분산 네트워크 서비스 형태
  • 인터넷에서 여러 네임 서버가 유기적으로 동작

해석기

  • 도메인 이름과 호스트 주소 정보를 원하는 응용 프로그램은 해석기에게 요청
  • 해석기는 DNS 서버와 접촉하는 DNS 클라이언트 역할을 수행

인증 데이터

  • 네임 서버가 하나면 이 서버가 DNS에 관한 모든 정보를 관리
  • 네임 서버의 부담을 줄이기 위하여 캐시 정보 활용
    • 인증 데이터: 해당 데이터를 직접 관리할 책임이 있는 네임 서버로 부터 받은 정보
    • 캐시 데이터: 이전 요청에 의하여 호스트가 보관하던 정보
  • 캐시 데이터를 오래 보관하면 클라이언트에 다른 정보를 전달할 염려가 있음
    • 해당 정보의 인증 서버가 TTL이라는 정보를 제공하여 초과된 정보는 자동으로 무효 처리하고 인증 서버에 다시 정보를 요청해서 캐시 데이터 갱신

  • 존은 자원 레코드에 포함된 인증 데이터의 집합체로 정의됨
  • 포함하는 영역
    • 존에 포함된 최상위 호스트(ex: mit.edu)
    • 존에 속하는 모든 호스트의 전체 자원 레코드 집합체(ex: lcs.mit.edu, archiles.mit.edu, ...)
    • 위임 서브 존: 자신의 존에 속하지만 인증이 위임된 경우
      • info.mit.edu의 name server 자체는 info.mit.edu 안에 있을 수 있다.

글루 데이터

  • 위임된 서브 존의 네임 서버에 접근할 수 있도록 해주는 권한
  • ex) dns.mit.edu가 info.mit.edu에 대한 DNS 정보를 액세스 할 수 있는 권한
  • ex) test.info.mit.edu의 호스트 정보를 얻고자 하는 경우
    • mit.edu에 대한 정보를 구한다.
    • info.mit.edu를 관리하는 네임 서버의 IP주소를 알면 간단히 처리
    • info.mit.edu의 네임 서버가 서브존 도메인 내부에 위치하여 IP 주소를 얻기 곤란한 경우에 글루 데이터가 필요

요청의 처리

  • 질의 요청

    • 인근 네임 서버에게 DNS 서비스 요청
  • 질의 요청에 포함되는 사항

    • 인증 데이터 필요 여부
      • 필요하면 상위 계층에 질의
      • 필요 없으면 캐시 사용 가능
    • 질의 처리 방법 = {Recursive|Iterative}
      • recursive: 해석기가 최초로 접속을 시도한 네임 서버가 질의 요청을 추적, 관리
      • iterative: 요청을 받은 네임서버가 다른 네임서버의 포인터 정보 회신

    재귀적 처리

  • 해석기가 최초로 접속을 시도한 네임 서버가 질의 요청을 추적 관리

  • 재귀적 요청을 받은 네임서버가 결과적으로 해석기 역할 수행

    반복적 처리

  • 로컬 네임 서버 1이 여러 네임서버와 직접 접촉

DNS 프로토콜

Name Server

  • DNS host 역할: DNS 요청에 응답
  • DNS Client 역할: 해석기를 거쳐 다른 DNS 서버에게 정보 요청
  • 캐시 활용

DNS 메시지

  • DNS 데이터를 요청하거나, 응답할 때 DNS 메시지를 전송

DNS 메시지 구조

  • Header: 12byte, 다른 필드의 사용 여부 확인
  • Question: 질의 레코드가 하나 이상, 질의 메시지와 응답 메시지 모두에서 사용
  • Answer: 응답 메시지에서만 사용
  • Authority: 응답 메시지에서만 사용, 질의의 인증 권한이 있는 서버 정보 제공
  • Additional: 응답 메시지로 사용, 해석기에 필요한 추가 정보를 제공

DNS 헤더

  • Identification: 요청과 응답이 연관 관계를 표시
  • QR: 질의 메시지, 응답 메시지 구분
  • OPCODE: 질의나 응답의 종류
  • AA: 인증 권한이 있는 네임 서버
  • TC: UDP 최대 크기 초과 여부
  • RD: 재귀적 응답
  • RA: 반복 응답 가능 여부
  • Z: 예약 필드
  • RCODE: 응답 오류
  • QUCOUNT: DNS 메시지의 Question 필드에 있는 질의 요청 개수
  • ANCOUNT: 응답용 DNS 메시지에서 Answer 레코드의 개수
  • AUCOUNT: 응답용 DNS 메시지에서 Authority 레코드의 개수
  • ARCOUNT: 응답용 DNS 메시지에서 Additional 레코드의 개수

UDP의 제한

  • 기본
    • DNS 메시지가 512바이트 이하일 때
    • 해석기와 네임 서버는 UDP 53번 포트로 DNS 메시지 전송
  • DNS 메시지가 512바이트 보다 크면 TCP 사용
    • TCP 53번 포트 사용
    • 미리 512바이트보다 크다는 것을 인지하면 처음부터 TCP 사용
    • 사전에 인지하지 못하는 경우는 UDP로 전송하고, 응답 메시지에서 TC=1로 지정하여 TCP 연결

DNS 프로토콜 동작과정

  • DNS 서버와 클라이언트가 메시지를 주고받는 사례
  • 질의 메시지
    • ex) www.korea.co.kr라는 호스트의 IP 주소 찾기
    • Header Identification: UDP의 비순서적 전송 방식을 보완하려고 사용
    • 플래그 값 0x0100
      • QR=0은 질의 메시지, OPcode=0은 표준 질의, RD=1은 재귀적 응답
  • 응답 메시지
  • Header
    • Identification: 질의 메시지와 같다
    • 플래그 값 0x08180: QR=1(응답 메시지), OPCode=0(표준 질의), RD=1 (재귀적 질의), RA=1(반복 응답 가능)
profile
으악

0개의 댓글