[네트워크] DNS (Domain Name System)

1. DNS의 개념

우리는 어떤 웹 서비스를 받기 위해 주소창에 영문자와 숫자로 혼합된 주소를 입력한다. 하지만 이 서비스를 제공하는 서버와 통신하기 위해서는 해당 서버의 IP 주소가 필요하다. DNS (Domain Name System)는 “www.naver.com” 과 같은 문자로 된 도메인 이름을 “125.209.222.142” 와 같은 IP주소로 변환해준다.

www.naver.com -> 125.209.222.142


과거에는 모든 도메인 네임 정보가 각 컴퓨터의 리눅스 기준 “/etc/hosts” 라는 파일에 저장되었다. 하지만 현재와 같은 대규모의 네트워크에서 모든 IP 정보를 파일 하나에 기록하는 것은 사실상 불가능해졌으며, 따라서 이름 해석을 위한 DNS 서버가 생겼다. DNS 서버는 인터넷 사용자가 도메인 주소를 검색했을 때 해당하는 IP 주소를 반환해준다.

2. DNS 계층적 구조

하나의 DNS 서버가 모든 IP를 저장할 순 없으므로 DNS 서버들은 계층적인 구조를 이루고 있다. 상위 레벨의 DNS 서버는 자기 바로 아래 레벨의 DNS 서버들의 주소를 알고 있다.

image

최상위에는 Root DNS Server 가 있다. 전세계에 13개의 Root DNS 서버가 있으며, Local DNS 서버가 어떤 도메인의 IP를 모를 때 가장 먼저 쿼리를 보내는 곳이다. 모든 Local DNS 서버는 Root DNS 서버의 주소를 알고 있다.

다음은 Top Level DNS (TLD) Server 이다. 도메인 네임의 가장 마지막 부분을 말한다. “com”, “org”, “net” 등과 같은 웹사이트 목적에 따른 도메인과 “kr”, “uk”, “jp” 와 같은 나라를 의미하는 도메인을 포함한다.

마지막은 Authoritative DNS Server 이다. 서비스를 제공하는 기관들의 DNS 서버이다. 예를 들어 네이버의 여러 서비스는 naver.com 이라는 도메인 맨 앞에 www, news, mail 등과 같은 도메인이 붙는다. 네이버의 DNS서버는 요청에 따라 이런 다양한 서비스에 해당하는 IP 주소를 매핑한다.

3. Iterated Query

이런 계층 구조를 활용하여 IP를 얻는 방법에는 “Iterated Query”와 “Recursive Query” 있지만 실제로 사용되는건 전자이다. 어떤 도메인에 대한 정보를 물어보면 “나는 모르지만 이 서버에게 물어봐!” 하는 식으로 쿼리문을 반복하는 구조이다. 네이버 메일 mail.naver.com 을 예로 들어 설명한다.

image

1) 우리가 주소창에 url을 적어 발생한 DNS 쿼리는 먼저 Local DNS 서버에게 전달된다. Local DNS 서버는 호스트가 요청한 도메인 네임에 대한 IP 주소가 자신의 Cache 에 저장되어 있다면 이를 반환한다.

2 , 3) Cache에 정보가 없다면 Root DNS Server에게 “mail.naver.com.” 의 주소를 묻는 쿼리를 전송한다. 위에서도 언급했듯 Local DNS 서버는 Root DNS 서버의 IP 주소를 알고 있다. 쿼리를 받은 Root DNS 서버는 해당 도메인의 IP 주소를 모르지만, 바로 아래 레벨인 .com TLD DNS 서버의 주소를 알고 있으므로 이를 알려준다.

4 , 5) Local DNS 서버는 이제 .com DNS 서버에게 “mail.naver.com” 의 IP 주소를 묻는 쿼리를 보낸다. com DNS 서버 또한 이 도메인의 IP 주소는 모르지만 바로 아래 레벨인 naver.com 을 관리하는 Authoritative DNS 서버의 주소를 알려준다.

6, 7) Authoritative DNS 서버인 naver.com DNS 서버는 “mail.naver.com” 이라는 도메인을 보고 자신의 zone file 에서 매핑되는 IP 주소를 Local DNS 서버에게 반환한다.

8) Local DNS 서버는 자신의 캐시에 정보를 저장하고 호스트에게 IP 주소를 알려준다. 이제 호스트는 “mail.naver.com”의 IP 주소를 알게 되어 서비스에 접속할 수 있다.

4. Zone File

카테고리:

업데이트:

댓글남기기