👍 이 글은 https://github.com/kamranahmedse/developer-roadmap 의 개발자 roadmap을 기반으로 작성하게 된 정리 글 입니다.
DNS란 Domain Name System의 약자로 우리가 요청한 URL을 IP 주소로 변환시키는 작업을 수행한다. DNS는 보통 전화번호부로 많이 비유되며, 우리가 찾고자 하는 사이트를 호스트의 IP로 변환하여 어렵게 IP(162.152.1.1 ..)로 접근하는 것을 방지하고 쉽게 네트워크 접속을 수행할 수 있다.
DNS 서비스를 수행하는 서버는 크게 두 가지 방식으로 나누어 진다.
- 재귀적 DNS 확인자
- 권한있는 DNS 서버
재귀 확인자는 클라이언트가 요청한 데이터를 기반으로 권환있는 DNS 서버에 도달하기 위해 수행되는 일련의 DNS 서비스들을 말한다. 즉, 사용자가 특정 도메인(ex. naver.com)의 방식으로 요청을 하면 루트 서버에서 바로 IP주소를 찾아주는 것이 아니라 하위 서버(.com 서버)에 다시 요청을 보낸다. 이러한 DNS 서비스를 제공하는 것이 재귀적 DNS 확인자이다.
권한있는 DNS 서버는 요청한 도메인에 대한 IP 주소를 최종적으로 응답할 수 있는 서버를 말한다. 위의 예시에서 naver.com에 대한 IP주소를 가진 서버가 권한있는 DNS 서버가 되고, 클라이언트에게 최종적으로 접근을 위한 IP 값을 응답한다.
즉, DNS서비스를 제공하는 서버는 2가지 형식으로 존재하는데 이를 이용하여 사용자에게 원하는 IP를 제공하는 것이다.
사용자가 DNS를 서비스를 이용하는 방식은 다음과 같다.
사용자는 도메인을 요청하면 rootDNS(루트 네임서버)에 먼저 요청한다. (root DNS란 DNS서비스의 최상위권에 위치하여, 최상위 도메인에 대한 응답을 제공한다)
사용자는 최상위 도메인에 대한 응답을 받으면, 다시 그 하위 도메인에 대한 DNS 서비스를 요청한다.
반복적으로 실행하다가 권한있는 DNS서버까지 도달하면 IP주소를 받고 local에 저장한다.
www.naver.com을 예시로 들면 다음과 같다.
- 사용자는 www.naver.com을 root DNS에 요청.
- 사용자는 .com을 관리하는 (TLD: top level domain)이름 서버 정보를 받음.
- 사용자는 제공받은 TLD에게 www.naver.com의 IP를 요청함.
- TLD는 권한있는 DNS서버로 naver.com에 대한 IP를 사용자에게 응답함.
- local DNS는 제공받은 IP를 캐싱하고 IP주소를 사용자에게 전달.
+ 위의 내용 중 조언이 필요하거나 수정 및 보완 해주실 내용이 있다면 댓글로 작성해주시면 감사하겠습니다!! :)