[Network] DNS
CS/Network

[Network] DNS

DNS 등장 배경

Domain Name System

 

저희는 www.naver.com이라는 주소는 외우고 있지만 정확한 IP 주소는 모릅니다.

만약 IP주소로 URI를 외워야 한다면 죽을 것입니다.

 

이를 위해서 등장한 것이 DNS입니다.

DNS는 Naver의 IP주소를 저희에게 친숙한 www.으로 매핑하는 작업을 수행합니다.

 

DNS는 두가지 특성을 기억하시면 됩니다.

  • Distributed datatbase 분산 데이터베이스 서버
  • Hierarchy 계층형 구조

Distributed

DNS를 수행하는 서버가 중앙집권적으로 1개만 존재하지 않고 여러개로 분산되어 있음을 의미합니다.

 

왜 중앙집권화적인 DNS를 사용하지 않을까요?

single point of failure

한개 서버가 고장난다면 아예 사이트 자체가 마비가 되어버리기 때문에 그만큼 손해를 입습니다.

traffic volumn

한개 서버만을 이용하면 동시접속자가 늘어날수록 그만큼의 traffic을 감당하기 힘들 것입니다.

distant centralized database

중앙집권적인 데이터베이스 서버의 거리가 멀어질수록 DNS를 통한 매핑 작업이 오래 걸릴것입니다.

만약 미국에서 naver를 접속하고 싶을 때 한국에 서버 1개만 중앙집권적으로 존재한다면

IP주소를 매핑하는 작업 조차 오래 걸릴것입니다.

maintenance

유지보수 면에서 1개의 서버만 있다면 힘들 것입니다.

1개의 서버만 존재한다면 그만큼 규모가 클 것이고 이는 세부적으로 고치기 힘들고 오래걸릴 것입니다.

 

이런 이유로 DNS는 분산형으로 다양한 곳에 DNS 서버를 두어 수행하고 있습니다.


Hierarchical

DNS는 계층형 구조를 가지고 있습니다.

 

기본적으로 Root Name Servers가 전체적으로 총괄하는 역할입니다.

일반 최상위 도메인은 .com, .net .org .edu 등으로 이루어져있고

국가코드 최상위 도메인은 .kr, .jp, .uk, .fr 등 국가명을 본따 이루어져 있습니다.

이외에도 여러 TLD가 포함되어 총 1000여가지의 TLD가 Root Name Server에 들어있습니다.

현재 우리나라는 I를 사용하고 있으며 이쪽에 대해서는 좀 더 공부를 해봐야 할 것 같습니다,,

 

authoritative(권위있는) DNS 안에는 com이나 org, edu 등 각 조직의 DNS 서버를 의미합니다.

 

계층 구조

Root Name Servers -> TLD Servers -> authoritative Servers


Local DNS name server

DNS를 통해 해당 도메인의 IP 주소를 얻는 것이 저희의 목적입니다.

그러나 굳이 들어가고자 하는 사이트의 서버가 가까이 있다면 어떨까요?

 

학교에서 www.mju.ac.kr을 들어갈 때

내 컴퓨터에 IP주소가 캐싱이 안되어있다면 DNS 과정을 거치게 되는데

학교 전산실 서버 내에 자체적으로 DNS 서버가 있다면

굳이 학교 LAN 밖으로 나갈 필요 없이 학교 DNS 서버에서 IP 주소를 찾으면 됩니다.

 

이처럼 WAN으로 나갈 필요없이 local에서 IP를 찾아주게 하는 것이 바로

local DNS name server 입니다.


동작 방식

Iterated query

말 그대로 해석하면 반복적 질의방식 입니다.

 

뉴욕 대학교에서 저희 학교 교수님 연구실 사이트를 들어가기 위한 과정입니다.

1. 뉴욕 대학교 local DNS server에 저희 학교 교수님 연구실 사이트의 IP 주소가 있는지 확인합니다.

2. 없으면 계층형의 맨 꼭대기에 있는 Root DNS Servers에 이 Domain을 가진 사이트가 있는지 물어봅니다.

3. Root DNS Servers 중 .kr인 한국인터넷진흥원이 "우리 IP 안에 있다"고 응답합니다.

4. 다음으로 .kr 안에 있는 TLD DNS servers에 들어가서 .ac, .co 등등에게 물어봅니다.

5. 이 중 .ac인 server가 "우리 IP 안에 있다"고 응답합니다.

6. 이제 세부적인 DNS 주소를 물어보면 최종적으로 dns.mju.ac.kr인 authoritative DNS Server가 "우리 IP이다" 라고 응답하여 IP 주소를 보내게 됩니다.

 

recursive query

재귀적 질의방식입니다.

 

local DNS Server가 모든 질의를 하는 것과 다르게 여기서는 서로 질의하며 재귀적으로 처리합니다.

위의 과정을 이해하고 나서 밑의 그림을 보면 이해하기 쉽습니다.

 

Amazon Route 53 예시

아마존에서 제공하는 DNS 서버의 다이어그램을 가져와보았습니다.

lterated query 방식을 사용하는 것 같습니다. 정확한 방식은 모르겠습니다..


DNS records

DNS는 주고받는 패킷에 대한 recodes를 각 서버에 caching합니다.

 

여기서는 패킷보단 정확히 말하면 resource recodes 입니다.

총 4가지의 format으로 이루어져 있습니다.

[ic]RR format: (name, value, type, TTL)[/ic]

 

총 4가지의 type으로 구분합니다.

type = A

name이 hostname이고, value가 IP address입니다.

type = CNAME

name에는 실제 이름이 들어갑니다. 예를들어 www.google.com이  있다면 servereast.backup2.google.com이 실제 이름입니다.

value에는 canonical 이름이 들어갑니다.

type = NS (Name Server)

name에는 도메인이 들어가고 value에는 hostname이 들어갑니다.

type = MX (Mail Exchange)


캡슐화

DNS는 UDP 혹은 TCP를 사용합니다.

각 port 번호는 53으로 동일하며

 

특이한 점은

캡슐화를 진행할 때 Message 크기가 512 Bytes 보다 작으면 UDP를 사용하고

512 Bytes 보다 크면 TCP를 사용하여 캡슐화합니다.

 

이는 UDP의 최대 패키지 크기가 512 Bytes로 제한되기 때문입니다.


DNS message 구조

중요한 건 # questions와 # answer RRs 입니다.

 

덤프를 분석하며 같이 알아보겠습니다.

queries로 요청 메세지를 보내고 응답으로 answer ip address를 얻어올 수 있었습니다.


참조

 

DNS란 무엇입니까? – DNS 소개 - AWS

12개월 동안 AWS 프리 티어에 액세스하고 연중무휴 24시간 고객 서비스, 지원 포럼 등을 비롯한 AWS Basic Support의 기능을 사용할 수 있습니다. 현재 Amazon Route 53는 AWS 프리 티어에서 제공되지 않는다

aws.amazon.com

 

최상위 도메인 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 최상위 도메인(Top-level domain, TLD)은 인터넷에서 도메인 네임의 가장 마지막 부분을 말한다. 예컨대 ko.wikipedia.org의 최상위 도메인은 .org가 된다. 최상위 도메인은

ko.wikipedia.org

 

루트 네임 서버 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 루트 네임 서버(root name server)는 인터넷의 도메인 네임 시스템(DNS)의 루트 존이다. 루트 존의 레코드의 요청에 직접 응답하고 적절한 최상위 도메인(TLD)에 대해

ko.wikipedia.org

 

'CS > Network' 카테고리의 다른 글

[Network] DHCP  (0) 2022.10.18
[Network] IP  (0) 2022.10.14
[Network] ARP  (1) 2022.10.04
[Network] Ethernet  (0) 2022.09.29
[Network] OSI Model, TCP/IP Layer  (0) 2022.09.06