Computer Engineering/네트워크(Network)

[Network/Web] 도메인(Domain)과 도메인 네임 시스템(DNS : Domain Name System) 개념 정리

잇트루 2022. 10. 4. 00:00
반응형

도메인 네임이란? (Domain name)

만약, 웹 사이트의 주소를 https://123.123.123.123/hello/hello.html와 같이 IP 주소로 작성해야 한다면 기억하기가 매우 어려울 것이다. 따라서 사용자가 기억하기 어려운 표현을 심볼화된 이름인 도메인 이름을 사용한다.

 

인터넷 연결되는 호스트 컴퓨터에 부여되는 도메인 이름의 모호성과 혼란을 최소화하기 위해 IP 주소와 도메인 이름 사이에 제어가 가능한 이름 공간(Name space)을 구성한 다음, 이로부터 각 호스트 컴퓨터에 이름을 부여하도록 한다. 이름 공간은 각 IP 주소마다 유일한 이름을 연결시키며, 평면구조 혹은 계층구조를 갖도록 구성할 수 있다.

비영리 단체인 ICANN은 현재 4억 개에 달하는 모든 도메인을 관리하고 있다. 그밖에 조직으로는 Registry와 Registrar가 있다.

 

Registry는 도메인 관리 기관으로 각 도메인 정보의 데이터베이스를 관리하고, registry에 따라 도메인 종류가 달라진다.

 

Registrar는 중개 등록업체로 Registry의 데이터베이스에 직접 도메인 정보를 등록 가능하도록 한다.

 

도메인의 종류

도메인은 일반적인 최상위 레벨 도메인 gTLD와 국가 코드 최상위 레벨 도메인 ccTLD 두 종류로 나뉜다

 

gTLD (generic Top Level Domain)

gTLD는 전 세계에서 등록이 가능한 도메인 라벨의 종류는 .com, .net, .org, .edu, .gov, .int, .mil, .biz, .name, .info, .aero 등이 있다. gTLD는 VERISIGN 등의 회사가 Registrar이고, 국내 ICANN 인증 registrar는 가비아, 후이즈 등이 있다.

.com : 상업적 영리 기관

.biz : 회사

.edu : 교육기관

.gov : 정부기관

.info : 정보서비스 제공자

 

ccTLD (country code Top Level Domain)

ccTLD의 경우 .kr, .us, .jp 등 200개 이상이 있다. 각 나라의 네트워크 정보센터에서 위임받아 관리하며, .kr의 경우 한국인터넷진흥원이 registry로, registrar는 가비아, 후이즈 등이 있다.

 

DNS (도메인 네임 시스템)

네트워크 상에 존재하는 모든 PC는 IP 주소가 있다. 그러나 모든 IP 주소가 도메인 이름을 가지는 것은 아니다. 로컬 PC를 나타내는 127.0.0.1은 localhost로 사용할 수 있지만, 그 외의 모든 도메인 이름은 일정 기간 동안 대여하여 사용하는 것이다.

 

DNS는 각 기관이 자율적으로 호스트에게 이름을 부여할 수 있도록 설계되어 있다. DNS의 계층화된 구조는 특정한 후미 주소를 사용하여 자율적으로 도메인 이름의 제어가 가능하도록 한다.

 

DNS는 컴퓨터 네트워크에서 분산된 형태로 존재하며, 하나의 호스트는 자신에게 포함되어 있지 않은 도메인 이름 서비스를 제공하기 위해 또 다른 DNS의 호스트에 연결되어 있다. 따라서 호스트의 이름이 중복되지 않는 한, 임의의 도메인에서 원하는 호스트 이름을 사용할 수 있다.

 

도메인 이름과 IP 주소의 매칭

브라우저의 검색 창에 도메인 이름을 입력하여 해당 사이트로 이동하기 위해서는 해당 도메인 이름과 매칭 된 IP 주소를 확인하는 작업이 반드시 필요하다.

 

네트워크에는 이러한 매칭을 위한 서버가 바로 DNS(Domain Name System)이다. 호스트의 도메인 이름을 IP 주소로 변환하거나, 반대의 경우를 수행할 수 있도록 개발된 데이터베이스 시스템이다.

 

만약 브라우저의 검색창에 naver.com을 입력한다면, 이 요청은 DNS에서 IP주소를 찾게 된다. 이후 IP 주소에 해당하는 웹 서버로 요청을 전달하여 클라이언트와 서버가 통신할 수 있도록 한다.

 

IP 주소는 시스템 작업이나 서버 교체 등으로 변경되는 경우가 많다.

 

DNS의 구조

도메인 주소는 오른쪽부터 왼쪽으로 최상위 도메인과 여러 개의 도메인으로 구성되어 있다.

최상위 도메인

최상위 레벨 도메인(Top Level Domain)은 .com, .kr, .net 등 도메인의 가장 오른쪽에 위치하는 도메인이다.

.kr, .us 등과 같은 ccTLD는 .co, .ac와 같은 2단계 도메인과 함께 사용되기도 한다.

 

서브 도메인

서브 도메인은 일반적으로 www.m 과 같은 왼쪽에 위치한 도메인들이 해당된다.

호스트 이름으로 불리기도 하는 서브 도메인은 웹 사이트의 특정 부분을 나누어서 보여줘야 하는 경우 사용한다.

www(기본), www.m(모바일), store(스토어) 등의 도메인에 따라 사이트의 구성이 달라지는 것을 생각하면 쉽게 이해할 수 있다.

 

Domain Name Server(Zone)

Domain Name Server(Zone)는 ****도메인을 관리하는 도메인 서버(존)이다. 대표적으로 모든 도메인을 관리하는 루트 네임 서버, TLD를 관리하는 네임서버, 권한 있는 네임 서버로 구성된다.

 

루트 네임 서버는 각 최상위 도메인 네임 서버들의 주소를 알고 있으며, 최상위 도메인 네임 서버는 권한 있는 네임 서버의 주소를 알고 있다.

권한 있는 네임 서버는 ‘example.com’등과 같은 도메인 IP 주소 및 도메인 정보를 관리하는 권한을 가진 서버이다.

 

이때 도메인 이름 서버는 하나의 서버로 구성되지 않고, 안정성을 위해 두 개 이상의 서버가 하나의 도메인 네임을 담당한다. 여러 개의 서버를 구성하면 시스템 과부하 및 서비스 거부 공격에 대해 효율적으로 대응할 수 있다.

 

존 파일(Zone File)

도메인 네임 서버는 응답을 보내기 위해 한 개 이상의 존 파일이라는 파일을 가지고 있다.

존 파일은 네임과 클래스, TTL, 레코드 타입, 레코드 데이터로 구성된 레코드들로 구성되어 있다.

네임 서버들은 이러한 존 파일들을 바탕으로 요청에 해당되는 레코드를 반환하게 된다.

리졸버는 이 레코드를 살펴보고 반환해야 할 IP 주소 혹은 다음에 쿼리를 진행할 서버의 주소를 확인한다.

 

존 파일 레코드의 상세 정보

존 파일의 레코드에는 이름과 클래스, TTL, 레코드 타입, 레코드 데이터로 구성되어 있다.

 

이름 : naver.com과 같은 도메인 네임 혹은 서브 도메인의 이름이 저장되어 있다.

 

클래스 : 네트워크 타입을 지정한다. 일반적으로 IN(인터넷)으로 지정된다.

 

TTL : Time To Live의 약자로 리졸버가 레코드를 몇 초동안 저장할지 명시한다. 해당 시간이 지나면 리졸버는 해당 레코드를 삭제한다.

 

레코드 타입 : 레코드 데이터의 내용의 형식이다.

레코드 타입의 형식에는 IPv4를 나타내는 ‘A’와 IPv6를 나타내는 ‘AAAA’,

데이터가 도메인 주소임을 명시하는 ‘CNAME’,

데이터가 도메인 네임 서버들의 주소임을 명시하는 ‘NS’,

데이터가 도메인 네임 서버들 중 주 서버의 정보들에 대한 데이터인 ‘SOA’ 등이 있다.

 

레코드 데이터 : 레코드 타입에 맞는 데이터 내용이 저장되어 있다.

 

DNS의 작업 흐름

만약 URL에 도메인 이름 주소 naver.com를 입력하면 DNS Lookup이라고 불리는 과정이 발생한다.

  1. 브라우저는 리졸버에게 IP 주소를 요청하고 리졸버는 요청받은 도메인의 IP 주소를 찾기 위해 여러 네임 서버에 반복적인 질문 한다.
  2. 리졸버는 기존에 찾아본 도메인 정보가 담긴 캐시 파일을 먼저 살펴본다. 이후 해당되는 도메인 정보가 있다면 즉시 IP 주소를 반환한다.
  3. 만약 해당되는 정보가 캐시에 담겨있지 않으면, DNS 리졸버는 IP 주소를 얻기 위해 네임 서버들에게 재귀적인 쿼리를 진행한다. 루트, 탑 레벨, 권한 있는 도메인 서버에 차례대로 쿼리를 진행하며 IP주소를 알아낸다. 이때 리졸버는 쿼리 수를 줄일 목적으로 기록되지 않은 도메인 네임 서버들의 주소를 저장하기도 한다.
  4. 마지막으로 리졸버는 전달받은 naver.com의 IP 주소를 기록하고 브라우저에게 전달한다.
반응형