DNS(Domain Name Server)
DNS란
- DNS(Domain Name Server)는 인터넷 전화번호부이다. 사람은 naver.com, daum.net과 같은 도메인 이름을 통해 온라인으로 정보에 액세스한다. 웹 브라우저는 인터넷 프로토콜(IP) 주소를 통해 상호작용하며, DNS는 브라우저가 인터넷 자원을 로드할 수 있도록 도메인 이름을 IP 주소로 변환한다.
인터넷에 연결된 각 기기에는 다른 컴퓨터가 기기를 찾는 데 사용하는 고유의 IP 주소가 있다. DNS를 서버를 사용하면, 사람이 복잡한 IP 주소(ex. 192.168.1.1; IPv4의 case), 혹은 2400:cb00:2048:1::c629:d7a2(IPv6)과 같이 영문과 숫자로 된 복잡한 주소를 기억할 필요가 없다.
DNS는 어떻게 동작하는가
DNS 확인 프로세스에는 호스트 이름(naver.com)을 IP 주소로 변환하는 과정이 있다.
1. 웹사이트 정보 요청(Requesting Website Information)
일반적으로, 웹 브라우저에 도메인 입력을 하는 과정을 의미한다.
컴퓨터는 www.naver.com와 같은 호스트 이름을 확인하기 시작한다. 로컬 DNS 캐시에서 도메인 이름의 IP 주소를 검색하며, 이 캐시는 사용자의 컴퓨터가 최근에 저장한 모든 정보를 저장한다.
사이트 정보가 로컬에 있으면 웹 사이트가 상대적으로 빠르게 로드된다.
컴퓨터에 데이터가 없는 경우, 올바른 정보를 검색하기 위해 DNS Query를 수행한다. 이 경우, 로컬 캐시에 있는 사이트보다 몇 ms정도 더 오래걸릴 수 있다.
2. 재귀 DNS 서버에 연결(Contact the Recursive DNS Servers)
사이트의 정보가 컴퓨터의 로컬 캐시에 없으면 다른 서버에 쿼리된다. 재귀 DNS 서버에는 컴퓨터와 마찬가지로 자체 로컬 캐시가 존재한다.
재귀 DNS 서버의 다른 말은 DNS Resolver(DNS 확인자)이다.
3. 권한이 있는 DNS 서버에 질의하기 (Query the Authoritative DNS Servers)
재귀 DNS 서버들이 캐시 메모리에 정보를 저장하고 있지 않다면, 다른 곳을 찾아본다. 쿼리는 권한이 있는 DNS 서버의 체인을 따라 계속 된다.
DNS Root Server? (DNS Root Name Server)
DNS의 관리는 영역을 사용하는 계층 구조로 구성되며, 루트 영역은 해당 계층 구조의 맨 위에 위치한다. 말 그대로 루트 영역에서 작동하는 DNS 이름 서버이다.
TLD Server? (TLD; Top-Level Domain Name Server)
.com, .net 또는 URL의 마지막 점(.) 뒤에 오는 것과 같은 일반적인 도메인 확장자를 공유하는 모든 도메인 이름의 정보를 유지하는 서버이다. 예를 들어, TLD Name Server는 '.com'으로 끝나는 모든 웹 사이트의 정보를 갖고 있다.
google.com을 검색하는 경우, Resolver는 Route Name Server로부터 응답을 받고, .com을 TLD Name Server에 보내고, 해당 Name Server는 해당 도메인의 권한이 있는 Name Server를 가리켜 응답한다.
Name Server?
Resolver가 TLD Name Server로부터 응답을 받으면, 해당 응답을 권한이 있는 Name Server로 보낸다. 일반적으로, 이 Name Server는 IP 주소를 확인하는 마지막 단계이다. Name Server는 도메인 이름의 고유한 정보(google.com)를 가지고 있다.
4. 최종 정리 (DNS Resolver에 Amazon Route 53 Name Server가 있는 예시)
위의 그림을 예시로 들어보자. 번호는 해당 그림에 적힌 번호에 매핑된다. (1~7, 8~9의 절차로 보면 된다.)
1. 사용자가 웹 브라우저를 열어 주소 표시줄에 'www.example.com'을 입력한다.
2. 'www.example.com' 에 대한 요청은 일반적으로 ISP(Internet Service Provider), 즉, 케이블 인터넷 공급업체, DSL 광대역 공급업체 또는 기업 네트워크와 같은 곳에서 DNS Resolver로 라우팅된다.
3. ISP의 DNS Resolver는 www.example.com에 대한 요청을 DNS Route Name Server에 전달한다.
4. ISP의 DNS Resolver가 www.example.com에 대한 요청을 다시 전송하는데, 이번에는 .com 도메인의 TLD(Top-Level Domain) 네임 서버 중 하나로 전송한다. 해당 그림에서는, .com 도메인의 네임 서버가 example.com 도메인과 연관된 네 개의 Amazon Route 53 네임 서버(Name Server)의 이름으로 응답한다.
5. ISP의 DNS Resolver는 Amazon Route 53 Name Server 중 하나를 선택하고, www.example.com 에 대한 요청을 해당 Name Server로 전송한다.
6. Amazon Route 53 Name Server는 example.com 호스팅 영역에서 www.example.com 레코드를 찾고, 웹 서버의 IP 주소인 192.0.2.44와 같은 관련 값을 얻어 DNS Resolver로 반환한다.
7. ISP의 DNS Resolver는 사용자가 필요로 하는 IP 주소를 최종적으로 반환하고, 이 값을 웹 브라우저에 반환한다.
또한, DNS Resolver는 example.com의 IP 주소를 일정 시간동안 캐싱하여, 다음에 누군가가 example.com을 방문할 때 더 빠르게 응답할 수 있게끔 한다.
8. 웹 브라우저는 DNS Resolver로부터 받은 IP 주소로 www.example.com 에 대한 요청을 보낸다.
9. IP 주소 192.0.2.44에서 웹 서버 또는 다른 리소스가 www.example.com 의 웹 페이지를 웹 브라우저로 반환하고, 웹 브라우저는 페이지를 표시한다.
etc. DNS는 어떤 계층인가? (What layer is DNS)
DNS는 애플리케이션 계층 프로토콜이다. 애플리케이션 계층은 TCP/IP 모델의 최상위 계층인데, 모든 응용 프로그램 계층 프로토콜과 마찬가지로 DNS는 TCP/IP 모델의 전송 계층에서 UDP를 사용하여 데이터를 전송한다.
속도가 빠르고, 패킷이 가볍기 때문에, DNS의 경우 UDP가 TCP보다 선호된다.