본문 바로가기

네트워크

네트워크 기초 - DNS (Domain Name System)

1. DNS (Domain Name System)

이젠 인터넷을 한다는 것은 웹 사이트들의 서버에 데이터를 요청하고, 받아와서 인터넷을 한다는 것을 이해하실거라 생각합니다. 그런데 혹시 웹 사이트들의 주소를 기억하고 계신가요?
www.naver.com
www.google.com
www.auction.co.kr 등..

사실 웹 서버에 접속하기 위해서는 이런 문자열로 된 주소가 아니라, 컴퓨터가 알아들을 수 있는 IP 주소가 필요합니다.
그런데 위에서 언급한 사이트들의 IP 주소를 기억하고 계시나요? 많은 인터넷 사이트들을 네이버, 구글이 아니라 172.217.174.110.... 125.209.222.141.... 이런 IP 주소로 기억해야한다면 엄청난 고역일겁니다.

그래서 DNS라는 시스템을 도입하게 되었는데, 간단하게 말하자면 이 시스템은 우리가 사용하는 문자열 인터넷 주소를 IP 주소로 변환하는것을 말합니다.

 

2. 도메인(Domain) 유형

우선 주소의 구조를 알기위해, 몇가지 유형을 먼저 알아보겠습니다.

국가코드 최상위 도메인(ccTLD[각주:1])
.kr - 한국 .jp - 일본 .cn - 중국 .us - 미국 .uk - 영국

 

일반 최상위 도메인(gTLD[각주:2])
.com - 영리기관 .org - 비영리 공공기관 .int - 국제기구 .net - 네트워크 관련 .edu - 미국 교육기관
.gov - 미국 정부기관 .mil - 미국 국방기관 .biz - 비즈니스    

 

소속기관 서브 도메인
.co - 영리기관 .go - 정부기관 .or - 비영리기관 .re - 연구소 .ac - 대학 교육기관
.ne - 네트워크 관련 .pe - 개인 .hs - 고등학교 .ms -중학교 .es - 초등학교


자, 이제 naver.com을 다시 볼까요? .com은 영리기관을 뜻하니 naver.com은 naver이라는 이름을 가지는 영리기관이겠네요.
example.co.kr 은 한국의 영리기관, example.go.kr은 한국의 정부기관, example.ac.kr은 한국의 대학교 사이트겠구요.

이런식으로 도메인 네임은 오른쪽에서부터 해석하게 됩니다. 밑에서 설명할 DNS 서버가 일을 처리하는 방식도 마찬가지입니다.

 

3. 도메인 구조

도메인 네임은 몇가지 규칙과 구조를 가집니다.

  • 도메인은 전 세계적으로 고유하게 존재하는 이름이다.
  • 정해진 규칙, 체계에 따라 만들어지며 임의로 생성, 변경이 불가능하다.
  • 모든 도메인은 .(dot) 또는 Root라 불리는 도메인 아래에 계층적 구조로 구성된다.

 

아까는 간단한 주소를 간단히 분석해봤습니다. 이번엔 좀 복잡한 예시와 분석을 해보겠습니다.

https://search.naver.com/search.naver?query=네이버

https - 통신 프로토콜

com - 영리기관. 최상위도메인
naver - 서브도메인
search - naver의 서브도메인

/search.naver - 경로 및 파일명
?query=네이버 - 쿼리[각주:3]

다른 예시로 여기를 확인해보시는걸 추천드립니다.

 

4. DNS 구성요소

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

위에서 설명한 네이밍 시스템입니다. 네임 스페이스는 DNS가 관리하는 계층적 구조를 의미합니다. (Root, TLD, Sub Domain 등)

2. 네임서버 (Name Server)

네임 스페이스의 트리 구조에 대한 정보를 가지고 있는 서버입니다. 도메인 이름을 IP주소로 변환하는 것을 네임 서비스라고 하며, 아래에서 설명할 리졸버로부터 요청받은 도메인 이름에 대한 IP 정보를 다시 리졸버로 전달해주는 역할을 수행합니다.

3. 리졸버 (Resolver)

웹 브라우저와 같이 DNS 클라이언트의 요청을 네임 서버로 전달하고 네임서버로부터 정보를 받아 클라이언트에게 제공하는 역할을 수행합니다.
= Public DNS Server / = Recursive(재귀적) DNS Server

4. Authoritative(권한있는) Name Server

실제 개인 도메인과 IP 주소의 상관관계가 기록/저장/변경되는 서버로, 일반적으로 호스팅/도메인 업체의 네임서버가 해당합니다. 최종적으로 정보를 얻게 되는 네임 서버입니다.


 

5. DNS 동작원리

 

사용자가 www.example.com 이라는 주소로 접속하는 환경을 가정해보겠습니다. 브라우저 주소창에 해당 주소를 입력하고 엔터를 누르는 순간, 다음과 같은 과정들을 거쳐 문자열 주소는 IP주소로 변환되게 됩니다.

1. 웹 브라우저 주소창에 www.example.com 입력하고 Enter키를 누릅니다.
2. 해당 주소에 대한 요청은 일반적으로 ISP가 관리하는 DNS Resolver로 라우팅됩니다.
3. ISP의 DNS Resolver는 자신의 캐시에 해당 주소의 데이터가 없으면, www.example.com에 대한 요청을 DNS Root Name Server로 전달합니다.
4. DNS Root Name Server가 준 정보를 바탕으로 다시 .com 도메인의 TLD Name Server중 하나에 전달합니다.
5. TLD Name Server가 준 정보를 바탕으로, Authoritative Name Server로 IP를 요청합니다.
6. Authoritative Name Server는 www.example.com 레코드를 찾아 웹 서버의 IP주소 192.0.2.44등의 값을 DNS Resolver로 반환합니다.
7. DNS Resolver는 IP주소를 확보하여 웹 브라우저로 반환하고, 다음에 이 사이트를 방문할 때 조금 더 빠르게 응답하기 위해 캐싱(저장)합니다.
8. 브라우저는 DNS Resolver로부터 얻은 IP 주소로 www.example.com 요청을 전송합니다.
9. 192.0.2.44에 위치한 웹 서버는 www.example.com의 웹 페이지를 브라우저로 반환하고, 브라우저는 이 데이터를 표시합니다.


여기에서 추가적으로 DNS 관련 예시를 하나더 확인하실 수 있습니다. 그나마 이해하기 쉽게 정리가 잘 된 곳인것 같습니다.


  1. Country Code Top Level Domain [본문으로]
  2. generic Top Level Domain [본문으로]
  3. 웹 서버에 특정한 정보를 보여달라는 웹 클라이언트 요청에 의한 처리. DB에 정보를 요청함. [본문으로]