DNS(Domain Name System)
✔️ DNS란?
DNS(Domain Name System)은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었습니다.
✔️ 도메인 이름이란?
넓은 의미로는 네트워크상에서 컴퓨터를 식별하는 호스트명을 가리키며,
좁은 의미에서는 도메인 레지스트리에게서 등록된 이름을 의미합니다.
✔️ DNS를 사용하는 이유
우리가 만약 네이버에 접속하고 싶다면 주소창에 www.naver.com을 입력합니다.
그렇지만 네이버의 실제 IP는 www.naver.com이 아닌 숫자로 된 IP 주소를 갖고 있습니다.
우리는 그 길고 복잡한 IP 주소를 일일히 외울 수 없기 때문에 문자 주소를 사용하기 위해 DNS를 사용하게 됩니다.
✔️ DNS의 탄생 배경
각각 숫자로 된 IP 주소를 갖는 호스트 컴퓨터들이 늘어나며 네트워크에는 많은 호스트 컴퓨터가 추가됐습니다.
호스트 컴퓨터에 숫자가 아닌 문자 주소를 이용하여 접속하고 싶었기 때문에 Stanford Research Institute라는 신뢰할 수 있는 단체에서 hosts라는 명부를 만들어 관리했습니다.
전 세계의 호스트 컴퓨터는 이러한 hosts 파일을 다운로드 받아서 거기에 적혀있는 주소를 통해 접속할 수 있었습니다.
하지만 이 방법은 한계에 도달하였고 1983년 Jon Postel과 Paul MockaPetris에 의해 현재의 DNS가 탄생하게 됐습니다.
✔️ DNS의 원리
www.naver.com 에 접속하는 과정을 통해서 예시를 들어보겠습니다.
1. 웹 브라우저에 www.naver.com 을 요청하면 Cache에 해당하는 숫자 주소가 있는지 검색합니다.
이 때, Cache는 한 번 가져온 값을 저장하고 있다 일정 시간이 지나면 없어집니다.
Cache에 숫자 주소가 있다면 그걸 통해서 접속하고 없다면 다음 단계로 넘어갑니다.
2. hosts.txt 파일에 해당하는 숫자 주소가 있는지 검색합니다. 있다면 접속하고 없으면 다음 단계로 넘어갑니다.
3. Local DNS에 www.naver.com 을 질의합니다.
4. Local DNS에 정보가 없을 시 Root DNS에 질의합니다.
5. Root DNS에서 정보가 없으면 Local DNS에 com DNS의 정보를 제공합니다.
6. com DNS에서 정보가 없으면 Local DNS에 naver.com DNS의 정보를 제공합니다.
7. Local DNS는 이제 naver.com DNS에 질의합니다.
8. naver.com DNS는 Local DNS에게 www.naver.com 에 대한 숫자 IP 정보를 줍니다.
9. 사용자는 이제 웹 브라우저를 통해 www.naver.com 에 접속하게 됩니다.
📌 Local DNS란?
우리나라의 SKT, LG U+, KT 등의 ISP(Internet Service Provider)가 해당될 수 있습니다.
기본적으로 컴퓨터에 LAN선을 통해 인터넷이 연결되면 그 인터넷을 사용할 수 있게 IP를 할당해주는 통신사에 해당하는 DNS 서버가 등록됩니다.
하지만 그것을 사용하기 싫다면 Google이나 CloudFlare와 같은 Public DNS 서버를 사용할 수도 있습니다.
이러한 Local DNS는 우리가 접속하길 원하는 곳의 IP 주소를 찾고 찾은 IP 주소를 캐싱해서 저장하고 탐색합니다.
Local DNS에서 저장하고 있는 IP 주소가 없다면 직접 Root DNS, TLD 등에게 물어보며 찾습니다.
📌 Root DNS란?
ICANN(Internet Corporation for Assgned Names and Numbers) 등이 관리하는 루트서버를 말합니다.
이 루트서버는 루트 영역 내에 저장되거나 캐싱된 레코드에 대한 질의에 직접 응답합니다.
질의에 응답할 수 없다면 적절한 최상위 도메인(TLD) 서버에 대해 알려줍니다.
📌 com DNS란?
최상위 도메인(Top-Level Domain)을 말하고 IP 주소를 Registrar 등록대행자를 통해 Registry 등록소에 등록하게 됩니다.
이 최상위 도메인은 국가 코드 최상위 도메인(ccTLD)과 일반 최상위 도메인(gTLD) 등으로 나뉩니다.
📌 naver.com DNS란?
권한 있는 네임 서버(Authoritative name server)라고도 하며 차상위 도메인(Second-Level Domain)이라고도 합니다.
우리의 IP 주소를 원하는 주소로 등록하는 것을 대행해주며 Registrar 등록대행자입니다.
✔️ DNS의 구성요소
1. 도메인 네임 스페이스(Domain Name Space)
: 인터넷을 일정한 공간으로 가정했을 때, 도메인(Domain)이란 호스트에 대한 책임과 권한의 영역으로,
물리적 실체인 '호스트'를 관리하는 조직의 경계입니다.
2. 네임 서버(Name Server)
: 도메인 이름을 IP 주소로 변환하는 것을 네임 서비스라고 하며, 리졸버로부터 요청받은 도메인 이름에 대한 IP 주소를
다시 해석기로 전달해주는 역할을 수행합니다.
3. 리졸버, 해석기(Resolver)
: 클라이언트의 요청을 네임 서버로 전달하고 네임 서버로부터 도메인 이름과 IP 주소를 받아 다시 클라이언트에게
제공하는 기능을 수행합니다.
✔️ DNS의 통신방법
DNS의 서버 통신은 기본적으로 DHCP 프로토콜을 사용하며 해당 프로토콜은 UDP 방식입니다.
또한 Default 포트로 53번 포트를 사용합니다.
캐싱이 없는 일반적인 DNS 쿼리에는 클라이언트에 IP 주소를 전달하기 위해 함께 작동하는 4개의 서버(재귀 확인자, Root NS, TLD NS 및 Authoritative NS)가 있습니다.
DNS 재귀(DNS 확인자라고도 합니다.)는 DNS 클라이언트에서 쿼리를 받은 다음 다른 DNS 서버와 상호 작용하여 올바른 IP를 찾는 서버입니다.
리졸버가 클라이언트로부터 요청을 받으면 리졸버는 실제로 클라이언트 자체로 작동하여 올바른 IP를 검색하기 위해 다른 세 가지 유형의 DNS 서버를 쿼리합니다.
📄 참고
https://opentutorials.org/module/3421
https://library.gabia.com/contents/domain/4137
https://www.cloudflare.com/learning/dns/what-is-a-dns-server/