[컴퓨터망] 19. Domain Name System(DNS)

서정윤·2022년 7월 8일
0

컴퓨터망

목록 보기
3/7

1. Need for DNS

DNS는 왜필요할까? entity를 구분하기 위해 TCP/IP protocol은 IP주소를 사용했지만, 사람들은 숫자로 된 주소를 외우기 어렵기 때문에 이름을 쓴다.
그래서 이 이름을 숫자로된 IP주소에 매핑하기 위해 DNS가 필요한 것이다.

2. Name space

Domain name space

hierarchical name space를 위해서, domain name space가 설계되었다. 트리구조로 root부터 시작해서 inverted-tree로 설계되어있다.

Domain names and labels

  • label
    트리의 각 노드들은 label을 가진다. root의 label은 null string임
    DNS는 각각 다른 label을 가진 노드로 이루어져있다.

  • domain name
    트리의 각 노드들은 domain name을 가진다. full domain name은 label이 dot(.)으로 구분되어 순서대로 나열한 구조다. Domain name은 늘 끝단 노드에서 root까지 거꾸로 올라가서, root의 null label에서 끝난다.
    root는 늘 null이기 때문에 domain name의 끝은 항상 dot(.)으로 끝난다

FQDN and PQDN

FQDN:Fully Qualified Domain Name
PQDN:Partially Qualified Domain Name

  • FQDN
    label이 null string으로 끝났다면 FQDN이라고 부른다.
    FQDN은 host의 full name 을 가진 domain name이다.
    DNS server는 FQDN만 address와 매치시킬 수 있다.

  • PQDN
    label이 null string으로 끝나지 않는다면 PQDN이라 부른다.
    PQDN은 노드에서 시작했지만 root에 도달하지 않는 부분적인 주소를 의미한다.

Domains

A domain is a subtree of the domain name space

도메인의 이름은 subtree의 top node의 이름이다
도메인은 그 자체로 도메인일수도, subdomains로 나눠질 수도 있다.

Distrinution of Name Space

Domain name space를 담고있는 정보를 한 컴퓨터에 저장하는 것은 비효율적이고 안전하지 않기 때문에, 정보들을 여러 컴퓨터에 분산시켜서 저장한다. 이 컴퓨터들을 DNS server 라고 부른다.

Hierachy of name servers

루트로부터 여러 서브트리들이 존재한다. 이 서브트리에서 또 각 서브트리를 생성해 작은 도메인들로 분할한다

Zones and domains

도메인을 관리하는 단위를 Zone 이라고 한다.
통상적으로 DNS서버 하나가 책임 or 권한을 가지는 영역을 뜻한다.
도메인은 위임 을 통해 관리 가능한 단위로 분할 가능하다.

만약 도메인이 더 작은 도메인으로 나뉘지 않는 경우라면, 이 때는 domain과 zone이 같다

Root Server & Primary/Secondary Servers

  • Root server
    루트 서버란 zone(영역)이 전체 트리인 것을 뜻한다. 즉, 모든 도메인을 관리하는 것이 root

  • Primary and Secondary servers
    DNS는 primary/secondary server로 나뉜다.
    primary server는 권한을 가지는 zone에 대한 파일을 저장하고있다
    secondary server는 zone에 대한 완전한 정보를 다른 서버로부터 전송해오거나 파일을 local disk에 저장하는 서버다.

primary server와 secondary 서버를 두는 이유는 한 서버가 고장났을 경우 다른 서버가 클라이언트를 계속 지원하게 하기 위해서다.

A primary server loads all information from the disk file; the secondary server loads all information from the primary server

When the secondary downloads information from the primary, it is claㅣled zone transfer

3. DNS in the internet

DNS used in the Internet

domain name space(tree)는 세가지 섹션으로 나뉠 수 있다
:generic domains, country domains, inverse domain

1) Generic domains

Generic domain은 일반적으로 등록된 host를 정의한다. 트리의 각 노드는 도메인을 정의한다. 위 트리의 generic domains의 첫 번째 레벨에는 14개의 label이 있다.

2) Country domains

Contry domain은 country name을 2자로 요약하여 사용한다.
Contry 아래 세부적인 label은 조직 or 더 세부적인 country name

3) Inverse domain

Inverse domain은 IP주소를 도메인 이름으로 변환하기 위해 네임서버에 설정하는 특수 도메인으로 PTR 레코드(PoinTer Record)를 사용하여 지정한다. 인버스도메인을 네임서버에 등록해 놓으면 IP주소에 대응하는 도메인 이름(kr, com 등의 최상위 도메인을 포함한 도메인 이름)을 조회할 수 있다

4. Resolution

주소-이름을 매핑하는 과정을 name-address resolution 이라고 부른다.

Recursive resolution

client는 name server에 재귀적인 요청을 한다.
1. 한 서버가 해당 domain name의 권한을 가질 경우 응답하지만, 아니라면 다른 서버(주로 부모 서버)에 요청을 보내고 응답을 기다린다.
2. 부모 서버가 권한을 가진다면 응답하고, 또 아니라면 다른 서버에 요청을 보낸다.
3. 마침내 query에 대한 답변을 찾은 경우 client에 응답이 되돌아간다.

서버가 name의 권한이 없을 경우 해당 서버가 다른 서버에게 query를 전달한다

Iterative resolution

  1. 서버가 name에 대한 권한을 가진 경우 답변하지만, 아니라면 서버는 해당 query에 답변할 수 있을 것 같은 다른 server의 IP 주소를 클라이언트에게 제공한다.
  2. 클라이언트는 새로운 서버에게 query를 보낸다.
  3. 새로운 서버가 답변할 수 있는 경우 해당 서버의 IP주소와 함께 답한다.
  4. 새로운 서버도 답변할 수 없다면 1-2를 반복한다

client가 같은 query 를 반복하므로 Iterative resolution 이라고 부른다

5. DNS messages

DNS는 query, response 두 타입의 메세지를 가진다.
구조는 아래와 같다

Query and response messages

  • Question section : 하나 이상의 question을 저장한다. query와 reponse 전부 존재한다.
  • Answer section : reponse message에만 존재하며, client 의 질문에 대한 서버의 답변이 저장되어있다.
  • Authoritative section : reponse message에만 존재하며, query에 대해 authoritative 한 하나 이상의 server 정보를 제공한다.
  • Additional Informaion setion : reponse message에만 존재하며, resolver를 도울 수 있는 추가적인 정보를 담고있다. (예를 들어, authoritative server의 authoritative section, IP address 등)

Header format

query와 reponse 모두 header를 가지며 12bytes다.

  • Ientification : 16bit field로 client에 의해 reponse를 query와 매치시킬 때 사용한다. query를 보낼 때 마다 다른 identification을 사용한다.

6. Types of records

question records는 query의 question section, response message에서 쓰이고,
resource records는 answer, authoritative, response message의 additional information section에서 쓰인다

아래는 question record format의 중 query type영역의 유형을 정리해놓았다.

7. Encapsulation

DNS는 UDP, TCP둘 다 쓸 수 있다. 둘 다 well-know port number는 53이다.
UDP는 response message가 512bytes보다 작을 때 사용되고, 그 이상은 TCP connection을 사용한다.

8. Registrars

DNS에 domain을 등록하려면 어떻게 해야될까?
이것은 registrar를 통해 이루어진다.
registrar 는 domain name이 unique한지 확인하고 DNS database에 추가한다.

9. DDNS

DDNS = Dynamic Domain Name System이다.
DNS에서는 새로운 host 를 추가하거나, host를 지우거나, IP주소를 바꿀 때 DNS의 master file을 바꿔야한다. DNS master file은 동적으로 업데이트 되어야한다.
그래서 DDNS는 이것을 위해 설계되었다.

10. Security of DNS

DNS은 Internet insfrastructure에서 중요한 시스템이지만 여러 방법으로 공격당할 수 있다.
DNS를 보호하기 위해 DNS Security(DNSSEC)라는 새로운 기술을 제안했다. 이것은 origin authentication 과 message integrity메세지를 제공한다. 이 과정에서 digital signature라 불리는 보안 서비스를 제공한다.

0개의 댓글