네트워크

Net2) DNS 동작원리 (개념정리부터 질의과정까지)

화이트해커 Luna 🌙 2022. 10. 31. 00:11
728x90
반응형

DNS(Domain Name System)

크롬창에 구글주소를 입력하면 바로 구글에 접속할 수 있지만, 실제로 브라우저와 웹서버는 IP주소로 통신을 하고있다. 왜냐하면 클라이언트가 입력한 주소를 IP로 변환하는 과정을 거치기 때문이다. 이걸 수행하는 시스템이 바로 DNS(Domain Name System)다. DNS를 제대로 이해하기 위해 개념정리와 구조, 질의과정에 대해 정리를 해보았다.

 

- 목차 -
1. DNS 개념정리
1-1) DNS의 등장배경
1-2) DNS 개요
2. DNS 구조
2-1) DNS서버 구성
2-2) DNS서버 구조
3. DNS 질의과정

 

1. DNS 개념정리 

 

DNS는 OSI7계층에서 Network계층에 해당되고, TCP/IP 4계층에서는 Internet 계층에 해당된다.

*[네트워크] OSI 7계층, TCP/IP 정리표

1-1) DNS의 등장배경

미국 국방부 ARPA(Advanced Research Project Agency)의 투자로 1960년대 말에 알파넷(ARPANET)이 개발되었고, 1980년대 초에 개발되된 TCP/IP 프로토콜은 컴퓨터 네트워킹의 표준 프로토콜이 되었다. 이 때까지만 해도 컴퓨터가 그리 많지 않아서 NIC(Network Information Center)으로부터 호스트 이름과 IP 주소에 대한 정보를 담고 있는 호스트 파일(host.txt)을 받아서 사용했지만, 이 방법은 직접 관리하고 변동이 있을 때마다 직접 수정해야하는 단점이 있었다. 그러다 US버클리대학의 BSD Unix에 TCP/IP 프로토콜이 탑재되자 알파넷에 연결된 호스트의 수가 폭발적으로 증가했고, 기존의 방식은 결국 한계에 달하게 되면서 호스트이름과 IP주소 레코드를 자동으로 관리하는 DNS체계가 등장하게 되었다.

1-2) DNS 개요

택배를 보내기 위해선 'ㅇㅇ시 ㅇㅇ구 ㅇㅇ동'같은 주소로 발송을 하지만, 실제로는 123-456같은 숫자로 구성된 우편번호를 통해서 배송이 이루어진다. 우선 시로 분할해 해당하는 시로 이동시키고, 그 다음 구단위로 이동하고, 또 계속 작은 주소로 배송하다가 마지막에 해당 주소로 배송되는 체계를 거친다. 인터넷 통신도 이것과 유사하다. 웹 사이트에 접속할 때 바로 숫자로 된 IP주소를 입력하지 않고, 기억하기 쉬운 문자주소를 사용해서 통신을 요청하면 PC에 설정된 DNS서버를 통해 메시지를 교환하여 해당 서버의 숫자 IP주소를 획득하고, 큰 주소부터 작은 주소로 순차적으로 이동하는 과정을 거쳐서 최후에 클라이언트가 요청한 서버로 도달할 수 있다.

 

Local DNS Server

PC로부터 DNS질의를 받아서 해당하는 도메인 주소에 매칭되는 IP주소를 알아오고 결과를 전달하는 DNS서버가 로컬 DNS서버다.(일반적으로 생각하는 127.0.0.1의 로컬서버와는 별개로, PC에 설정하는 DNS서버다.) 만약 로컬서버에서 정보가 없을 경우 다른 DNS서버에서 받아온다.

 

Host Aliasing

또한, 호스트 이름이 너무 길 때 mapping 정보를 제공해서 줄여서 부를 수 있도록 만드는 기능을 수행한다. 반대기능도 수행한다. (예 : www.naver.com.nheos.com -> www.naver.com )

 

2. DNS 구조

 

2-1) DNS서버 구성

DNS는 도메인 이름과 IP주소의 매핑을 위한 관리 체계로, 크게 도메인 네임 스페이스, 네임서버, 리졸버의 세 가지 요소로 구성된다.

도메인 네임 스페이스 (Domain Name Space)

DNS는 거대한 분산 데이터베이스로, 도메인 네임 스페이스는 DNS를 저장/관리하는 계층적인 구조를 의미한다.
최상위에 루트 DNS서버가 존재하고, 그 하위로 모든 노드가 연속해서 이어진 계층 구조다. Top Level, Second level 등 하위 레벨의 도메인들은 그 하위 도메인에 관한 정보를 관리한다. 리눅스 운영체제의 루트 디렉토리 구조와 유사하다.
최상위 도메인 TLD의 종류는 국가도메인, 일반도메인, 특수도메인이 있다. 각각 두자리, 세자리, 네자리로 구성된다.

TLD(Top Level Domain) 분류 레이블 설명
국가도메인(두자리) kr, us, fr, jp, ch ... 각 국가별 이니셜. ISO에서 정의
일반도메인(세자리) com, edu, net ... 기업, 교육기관, 네트워크서비스
특수도메인(네자리) arpa IP주소를 도메인 이름으로 매핑

 

네임 서버 (Name Server)

각각의 호스트를 나타내는 주소는 외우기 힘든 숫자로된 IP주소를 대신해서 기억하기 쉬운 도메인 이름을 사용한다. 실제 통신은 프로세스 간에 숫자 IP주소로 이루어지기 때문에 문자 도메인을 숫자IP주소로 변환을 해야하고, 이런 과정을 수행하기 위해선 도메인 네임 스페이스에 대한 정보가 필요하다. 이 정보를 제공해주는 서버가 네임서버다. 그래서 DNS서버를 흔히 네임서버라고 부르기도 한다. 네임 서버는 Primary, Secondary로 다시 구분된다. Primary Name Server는 주 네임서버로, 이 서버가 제대로 동작하지 못할 시 네임서버역할을 대신 수행하는 서버가 Secondary Name Server다.

리졸버 (Resolver)

리졸버는 웹브라우저를 통해서 클라이언트에게 받은 요청을 네임 서버로 전달하고, 네임서버로부터 도메인 이름과 IP주소를 받아와서 클라이언트에게 다시 제공하는 과정을 수행한다. 만약 네임서버에 원하는 정보가 없으면 다른 네임서버에게 요청을 보낸다.


즉, 도메인 이름을 IP주소로 변환하는 도메인 네임 서비스를 수행시 분산 데이터베이스로 저장된 계층적 구조가 도메인 네임 스페이스고, 리졸버를 통해 요청을 받으며, 요청받은 도메인 이름을 IP주소로 변환해서 리졸버로 다시 전달하는것이 네임서버다.

2-2) DNS서버 구조

DNS서버 트리 구조

 

도메인 네임 스페이스의 트리구조에서 각각의 호스트는 모두 자신의 레이블 네임을 가지며, 최상위 레벨의 호스트까지 .으로 구분해서 연결된 도메인 이름을 가진다. 도메인 네임 스페이스를 할당하고 관리하는 방식은 하위 기관에게로 위임하는 방식으로 철저한 걔층 구조로 운영된다. 예를 들어 google.com의 도메인은 com 도메인의 네임 서버에 등록되어있고, www.google.com의 도메인은 google.com의 네임서버에 등록되어있는 식이다. 

3. 질의 

클라이언트가 요청한 도메인의 IP주소는 Local DNS 서버가 해당 도메인의 정보를 획득할 때까지 다른 DNS서버와 통신하는 절차를 거친 뒤 제공된다. (Local DNS 서버에 캐쉬되어 있으면 바로 사용자에게 결과를 전달한다.) 일련의 과정은 크게 DNS Query(질의)와 DNS Response(응답) 과정의 반복으로 이루어진다.


DNS 질의과정

3-1) 질의과정 

  1. DNS Query (웹 브라우저가 Local DNS 에게 "www.google.com의 IP주소를 아시나요??")
    클라이언트로부터 www.google.com을 요청받은 웹 브라우저는 요청받은 도메인의 IP주소를 알아내기 위해 미리 PC에 설정된 Local DNS서버에게 DNS Query를 보낸다.
  2. DNS Query (Local DNS가 Root DNS 에게 "www.google.com의 IP주소를 아시나요??")
    웹 브라우저로부터 Query를 받은 Local DNS 서버는 자신에게 정보가 없어서 최상위 Root DNS서버에게 쿼리를 전송한다.
  3. DNS Response (Root DNS가 Local DNS 에게 "몰라요, 대신 .com 네임서버의 IP주소를 드릴테니 거기다 물어보세요.")
    Local DNS서버에게 Query를 받은 Root DNS 서버는 www.google.com의 IP주소는 모르지만, 자신이 관리중인 하위 레벨의 네임서버중 .com 도메인을 관리하는 네임서버의 정보가 있어서 전달해준다.
  4. DNS Query (Local DNS가 .com NS 에게 "www.google.com의 IP주소를 아시나요??")
    Local DNS 서버는 Root DNS에게 받은 .com 네임서버정보중에서 Round Robin 방식으로 선정한 네임서버에게 쿼리를 보낸다.
  5. DNS Response (.com NS가 Local DNS 에게 "몰라요, 대신 google.com 네임서버의 IP주소를 드릴테니 거기다 물어보세요.")
    정보가 없어서 자신의 하위레벨 네임서버중 google.com을 관리하는 네임서버의 정보를 보내준다.
  6. DNS Query (Local DNS가 google.com NS 에게 "www.google.com의 IP주소를 아시나요??")
    Local DNS 서버는 google.com의 네임서버에게 쿼리를 보낸다.
  7. DNS Response (google.com NS가 Local DNS 에게 "네. www.google.com의 IP주소는 173.194.126.240입니다.")
    google.com의 네임서버는 자신이 갖고있는 www.google.com의 IP주소(173.194.126.240)를 Local DNS서버에게 Response 한다.
  8. DNS Response (Local DNS가 웹브라우저 에게 "요청하신 www.google.com의 IP주소는 173.194.126.240입니다.")
    Local DNS서버는 www.google.com의 IP주소를 자신의 DNS Cache에 등록한 뒤 웹브라우저에게 www.google.com의 IP주소(173.194.126.240)를 DNS Response 메세지로 응답한다.

 

3-2) DNS Query

 

종류

  - Recursive Query(순환쿼리) : 질의과정의 1번에 해당한다. Local DNS서버에 완성된 답을 질의한다.

  - Iterative Query(반복쿼리) : 질의과정의 2, 4, 6번에 해당한다. 다른 DNS에게 질의를 보내서 정보를 얻어와서 응답한다.

 

DNS 레코드
종류 내용
A(Adress) 호스트 이름을 IPv4 주소로 매핑한다.
AAAA(IPv6 Adress) 호스트 이름을 IPv6 주소로 매핑한다.
PTR(Pointer) 열방향 조회때 사용한다. PTR레코드는 정확히 한 개만 있어야한다.
NS(Name Server) 적어도 한 개 이상 있어야한다. DNS서버를 가리킨다.
CNAME(Canonical Name) 호스트에게 다른이름을 줄때 사용한다.
SOA(Start of Authority) 도메인에 권한을 갖는 서버를 표시하고, 가장 큰 권한을 부여받은 호스트를 선언한다.
Any(ALL) 위의 모든 레코드를 표시한다.

 


 

728x90
반응형

'네트워크' 카테고리의 다른 글

[CISCO] 동적 라우팅 RIP  (0) 2022.11.29
[Cisco] 정적 라우팅 (Static routing)  (1) 2022.11.28
[Cisco] VLAN- Trunk Routing  (1) 2022.11.28
Net1-1) IP(IP Adress, Netmask, Gateway) 요약정리  (2) 2022.10.19