DNS란 Domain Name(도메인 이름)을 IP 주소로 변환 해주는 시스템을 의미한다.
기본적으로 모든 웹 사이트의 실제 주소는 아래와 같이 복잡한 숫자형으로 되어 있다.
ex) 192.168.1.1(IPv4) , 2400:cb00:2048:1::c629:d7a2(IPv6)
특정 웹사이트를 접속하려고 할 때마다 위와 같은 복잡한 숫자를 외워서 타이핑하는 것은 불편한 일이다.
따라서 사람들이 IP 주소를 외우지 않아도 쉽게 사용할 수 있도록 Domain Name(도메인 이름) 이라는 것을 만들었다.
Domain Name 이란 결국 IP 주소에 매핑되는 텍스트 문자열이다.
그러면 도메인 이름(Domain Name)과 URL(Uniform Resource Locator)의 차이는 뭔가요?
URL의 경우 웹 사이트의 도메인 이름, 프로토콜, 자원의 경로등이 포함된다.예를들어 "https://l-t-memory.tistory.com/manage/" 에서 l-t-memory.tistory.com 은 도메인 이름으로, https 는 프로토콜이며, /manage/ 은 웹 사이트의 특정페이지에 대한 경로이다.
이렇게 DNS를 이용하여 도메인이름이 IP로 변경이 되는데, 실제로는 어떻게 변경이 되는지 한번 살펴보자.
롬과 같은 브라우저에 https://google.com/ 라고 입력하면 어떻게 IP 주소로 변환이 되는지 볼 것인데, 이를 위해 관련된 DNS 서버가 총 4개가 존재한다.
웹 페이지 로드와 관련된 4개의 DNS 서버
- DNS Recursive Resolver(DNS Recurser) - 리커서는 도서관의 어딘가에서 특정한 책을 찾아달라고 요청받는 사서로 생각할 수 있다. DNS 리커서는 웹 브라우저 등의 애플리케이션을 통해 클라이언트 컴퓨터로부터 쿼리를 받도록 고안된 서버이다. 일반적으로, 리커서는 클라이언트의 DNS 쿼리를 충족시키기 위해 추가 요청을 수행한다.
- DNS Root NameServer - 사람이 읽을 수 있는 호스트 이름을 IP 주소로 변환(확인)하는 첫 번째 단계이다. 도서관에서 책장 위치를 가리키는 색인으로 생각할 수 있으며, 일반적으로 다른 더욱 특정한 위치에 대한 참조로 사용된다.
- TLD NameServer - TLD(최상위 도메인) 서버는 도서관의 특정 책장으로 생각할 수 있다. 이 이름 서버는 특정 IP 주소 검색의 다음 단계이며 호스트 이름의 마지막 부분을 호스팅합니다(example.com에서 TLD 서버는 “com”이다).
- google.com Authoritative NameServer - 최종 이름 서버로서, 책장에 있는 사전처럼 특정 이름을 해당 정의로 변환한다. 해당 이름 서버는 이름 서버 쿼리의 종착점이다. 해당 이름 서버가 요청한 레코드에 대한 액세스 권한이 있다면, 요청한 호스트 이름의 IP 주소를 초기 요청을 한 DNS 리커서(사서)에게 돌려 보낸다.
그리고 실제 브라우저에 입력시 일어나는 일의 순서이다.
1. User가 브라우저에 https://google.com/ 라고 입력 후 Enter를 누른다.
(이렇게 주소를 입력한 경우 쿼리가 인터넷으로 이동하고, DNS Resolver가 가장 먼저 쿼리를 받는다.)
2. DNS Resolver가 해당 도메인이름( https://google.com/ )에 대해서 캐싱된것이 있는 확인하고, 없으면 (.) DNS Root NameServer로 쿼리를 보낸다. (Root NameServer 주소는 애초에 DNS Resolver가 들고 있다.)
3. DNS Root NameServer 측에서는 해당 쿼리를 받아 주소를 확인 후, 취상위 도메인(TLD)를 확인해서, TLD NameServer 주소로 가보라고 해당 TLD NameServer의 주소를 리턴해준다. 여기서는 (.com) TLD NameServer의 주소를 준다.
4. 그러면 DNS Resolver는 .com TLD에 동일하게 https://google.com/ 쿼리를 요청한다.
5. TLD 서버에서는 Domain Name Server(google.com)의 IP 주소로 응답한다.
6. 마지막으로 DNS Resolver는 (google.com)의 Domain Name Server에 또 동일한 쿼리로 요청한다.
7. 이제 google.com 의 IP 주소가 Domain Name Server에서 DNS Resolver에게 리턴된다.
8. 이제 DNS Resolver가 처음 요청한 도메인의 IP 주소로 1번의 웹 브라우저에게 응답해준다. (172.217.161.238)
이제 DNS 조회 단계는 끝나서, IP 주소가 반환되면 브라우저가 웹 페이지를 요청할 수 있다.
9. 이제 브라우저가 해당 IP 주소로 HTTP 요청을 보낸다.
10. 해당 IP의 서버가 브라우저에서 렌더링할 웹 페이지를 반환한다