컴퓨터망 16) DNS

zh025700·2022년 7월 6일
0

컴퓨터네트워크

목록 보기
16/26
post-custom-banner

컴퓨터망

15. Domain name system

도메인 이름 시스템(DNS)에 대해 논의한다
DNS는 다른 응용 프로그램을 지원하는 클라이언트/서버 응용 프로그램이다
DNS는 애플리케이션 계층의 호스트 이름을 네트워크 계층의 IP 주소에 매핑하는 데 사용된다

Need for DNS

entity를 식별하기 위해 TCP/IP 프로토콜은 인터넷으로의 호스트 연결을 고유하게 식별하는 IP 주소를 사용한다
그러나 사람들은 숫자 주소 대신 이름을 사용하는 것을 선호한다
그래서 주소에 이름을 매핑하거나 이름에 주소를 매핑할 수 있는 시스템이 필요하다

  1. 사용자가 호스트 이름을 file 전송 클라이언트에 전달
  2. file 전송 클라이언트는 호스트 이름을 DNS 클라이언트에 전달
  3. 컴퓨터는 부팅된 후 하나의 DNS 서버의 주소를 알고 있다 DNS 클라이언트는 DNS 서버의 IP 주소를 사용하여 쿼리와 함께 메시지를 DNS 서버로 보낸다
  4. DNS 서버는 원하는 file 전송 서버의 IP 주소로 응답
  5. DNS 클라이언트가 IP 주소를 file 전송 클라이언트로 전달
  6. 이제 file 전송 클라이언트는 수신된 IP 주소를 사용하여 file 전송 서버에 액세스

Name Space

명확하게 하기 위해 컴퓨터에 할당된 이름은 신중하게 선택해야 한다
즉, 주소가 고유하므로 이름이 고유해야 한다
각 주소를 고유한 이름으로 매핑하는 name space는 flat 또는 계층적 두 가지 방법으로 구성할 수 있다

Domain name space

  • 계층 name space을 갖기 위해 도메인 이름 공간이 설계되었다
  • 이 설계에서 name은 루트가 맨 위에 있는 역 트리 구조로 정의된다
  • 트리는 레벨 0(루트)에서 레벨 127까지 128개의 레벨만 가질 수 있다

Domain name and Label

Label

  • 트리의 각 노드의 문자열을 레이블이라 한다
  • root 레이블은 null이다
  • 노드의 자식 노드에는 서로 다른 레이블이 있어야 한다
    • 도메인 이름의 고유성을 보장한다

Domain Name

  • 트리의 각 노드에는 도메인 이름이 있다
  • 전체 도메인 이름은 점(.)으로 구분된 일련의 레이블이다
  • 도메인 이름은 항상 노드에서 루트까지 읽힌다
  • 마지막 레이블은 루트의 레이블(null)이다
    • 마지막 문자가 점임을 의미

FQND

레이블이 null 문자열로 종료되면 FQDN(fully qualified domain name)이라고 합니다.

FQDN

  • 호스트의 전체 이름을 포함하는 domain name

전체를 나타낸다

PQND

  • 레이블이 null 문자열로 종료되지 않으면 PQDN(partially qualified domain name)이라고 한다

부분을 나타낸다

Domain

  • 도메인은 도메인 name space의 subtree이다
  • 도메인 name은 subtree의 맨 위에 있는 노드의 이름이다
  • 도메인 자체는 도메인으로 분할될 수 있다

Distibution of name space

도메인 name space에 포함된 정보를 저장해야 한다
하지만, 컴퓨터 한 대에 그렇게 많은 양의 정보를 저장하는 것은 매우 비효율적이고 신뢰할 수 없다

해결책은 DNS 서버라고 불리는 많은 컴퓨터들 사이에 정보를 분배하는 것이다.

Hierachy of name servers

첫 번째 단계에 따라 전체 공간을 여러 도메인으로 나눈다
즉, 루트를 독립시키고 서브트리들을 생성한다
이러한 방식으로 생성된 도메인은 매우 클 수 있으므로 DNS를 통해 도메인을 더 작은 도메인으로 분할할 수 있다

Zones and domains

  • 전체 도메인 네임 계층은 단일 서버에 저장할 수 없으므로, 여러 서버 간에 분할된다
  • 서버가 담당하거나 권한을 가지는 것을 zone이라고 한다
  • zone을 전체 트리의 인접한 부분으로 정의할 수 있다
  • 서버가 도메인에 대한 책임을 가지고 도메인을 더 작은 도메인으로 분할하지 않는 경우, 도메인과 zone은 동일하다
  • 서버가 자신의 도메인을 하위 도메인으로 나누고 권한의 일부를 다른 서버에 위임하는 경우, 도메인과 zone은 서로 다른 것을 가리킨다

Primary and Secondary Servers

DNS

  • primary server
  • secondary server

primary server

  • 권한인 영역에 대한 file을 저장하는 서버
  • zone의 file 생성, 유지 및 업데이트를 담당
  • zone file을 로컬 디스크에 저장

secondary server

  • 다른 서버로부터 zone에 대한 전체 정보를 전송하고 로컬 디스크에 file을 저장하는 서버
  • 보조 서버는 zone file을 만들거나 업데이트하지 않는다
    • 업데이트가 필요한 경우 primary 서버에서 업데이트 버전을 전송 받는다

primary 서버와 secondary서버는 둘 다 해당 서비스 영역에 대해 신뢰할 수 있다
secondary 서버를 하위 권한에 두는 것이 아니라 데이터에 대한 중복성을 만들어 한 서버가 고장 날 경우 다른 서버가 클라이언트를 계속 지원할 수 있도록 하는 역할
또한 서버는 특정 영역에 대한 primary 서버이고 다른 영역에 대한 secondary 서버일 수 있다

primary 서버는 디스크에서 모든 정보를 로드하고 secondary 서버는 primary 서버에서 모든 정보를 로드한다
secondary가 primary에서 정보를 다운로드할 때 zone transfer이라고 한다

DNS in the internet

DNS는 서로 다른 플랫폼에서 사용할 수 있는 프로토콜이다
인터넷에서 도메인 name space(트리)는 generic 도메인, country 도메인, inverse 도메인의 세 가지 다른 섹션으로 나뉜다

Generic Domains

generic 도메인은 일반 동작에 따라 등록된 호스트를 정의한다
트리의 각 노드는 도메인 name space에 대한 index인 도메인을 정의한다
트리를 보면, 일반 도메인 섹션의 첫 번째 레벨은 14개의 가능한 레이블을 허용한다는 것을 알 수 있다
이러한 레이블은 표에 나열된 조직 유형을 나타낸다

Country domains

  • Country 도메인 섹션은 2자로 된 국가 약어(예: 미국의 경우 us)를 사용한다
    • 세부 라벨은 조직적일 수도 있고, 더 구체적인 국가 명칭일 수도 있다

Inverse domain

  • inverse 도메인은 주소를 이름에 매핑하는 데 사용된다

Resolution

이름을 주소에 매핑하거나 주소를 이름에 매핑하는 것을 name address resolution이라고 한다

Recursive Resolution

클라이언트는 name 서버로부터 재귀 응답을 요청할 수 있다
즉, 서버가 최종 답변을 제공하기를 기대한다
서버가 도메인 네임에 권한이 있는 경우, 서버는 데이터베이스를 확인하고 응답한다
서버가 권한이 없는 경우, 서버는 요청을 다른 서버(일반적으로 상위 서버)로 보내고 응답을 기다린다
상위 항목이 권한이 있는 경우 응답하고, 그렇지 않은 경우 다른 서버로 쿼리를 전송한다
쿼리가 최종적으로 해결되면 응답은 요청 클라이언트에 도달할 때까지 되돌아간다

Iterative Resolution

매핑을 반복적으로 수행할 수 있다
서버를 되돌아 가며 도메인 네임을 처리할 수 있는 서버를 찾을때 까지 반복해서 쿼리를 보낸다
서버가 처리할 수 있으면 IP주소로 쿼리에 응답한다
클라이언트가 동일한 쿼리를 여러 서버에 반복하므로 이 프로세스를 반복 프로세스라고 한다

DNS messages

DNS에는 쿼리 및 응답이라는 두 가지 유형의 메시지가 있다
쿼리 메시지는 헤더와 질문 레코드로 구성된다
응답 메시지는 헤더, 질문 레코드, 답변 레코드, 권한 있는 레코드 및 추가 레코드로 구성된다

쿼리 메시지와 응답 메시지 모두 헤더 형식이 동일하다
헤더는 12바이트이다

identification

  • 클라이언트가 응답을 쿼리와 일치시키기 위해 사용하는 16비트 필드
  • 클라이언트는 쿼리를 보낼 때마다 다른 식별 번호를 사용

flags

  • 16비트

Types of records

이전 섹션에서 보았듯이 DNS에는 두 가지 유형의 레코드가 사용된다
question record는 쿼리 및 응답 메시지의 question section에 사용
resource record는 응답 메시지의 응답, 권한 및 추가 정보 섹션에 사용

Encapsulation

DNS는 UDP 또는 TCP를 사용할 수 있다
두 경우 모두 서버에서 사용되는 포트는 53이다
대부분의 UDP 패키지에는 512바이트 패킷 크기 제한이 있기 때문에 UDP는 응답 메시지의 크기가 512바이트보다 작을 때 사용된다
응답 메시지의 크기가 512바이트보다 크면 TCP가 사용된다

Registrars

DNS에 새 도메인을 추가하는 것은 ICANN에 의해 인증된 registrar를 통해 수행된다 registrar는 요청된 도메인 이름이 고유한지 먼저 확인한 다음 DNS 데이터베이스에 입력한다
수수료가 부과된다

DDNS

DNS가 설계되었을 때, 아무도 그렇게 많은 주소 변경이 있을 것이라고 예측하지 못했다
DNS에서 새 호스트 추가, 호스트 제거 또는 IP 주소 변경과 같은 변경 사항이 있는 경우 DNS 마스터 file을 변경해야 한다
DNS 마스터 file 동적으로 업데이트되어야 한다
따라서 동적 도메인 이름 시스템(DDNS)은 이러한 요구를 위해 나왔다

security of dns

DNS는 인터넷 인프라에서 가장 중요한 시스템 중 하나이며 인터넷 사용자에게 중요한 서비스를 제공한다
웹 액세스 또는 전자 메일과 같은 응용 프로그램은 DNS의 올바른 작동에 크게 의존한다
DNS는 여러 가지 방법으로 공격될 수 있다
DNS를 보호하기 위해, IETF는 디지털 서명이라는 보안 서비스를 사용하여 메시지 원본 인증과 메시지 무결성을 제공하는 DNS 보안(DNSEC)이라는 기술을 만들었다

profile
정리
post-custom-banner

0개의 댓글