DNS란 무엇인가영❓
그 전에 도메인(Domain)이란 ❔❓❔
- 원래 지정된 인터넷 접속 주소를 다른 이름으로 바꾸어 준 주소이다.
- www(호스팅 주소). + 이름.com(도메인) → 뒷 부분을 도메인이라고 한다.
간단하게 말해서 원래의 ip 주소를 기억하기 쉬운 닉네임으로 바꾸는 개념
DNS(Domain Name System)이란 ❓
- 위에서 말한 원래의 IP 주소를 기억하기 쉬운 도메인으로 바꾸거나, 도메인을 IP주소로 바꾸는 데이터베이스 시스템을 말한다.
- 연결되어있는 IP주소와 도메인이 저장된 곳이 DNS.
- 각 도메인들마다 DNS와 연결해주는 서버 역할을 하는 DNS 서버, 다른 말로 Name Server가 있다
도메인 연결방법 ❗❕
- A Record - IPv4의 IP 주소로 직접 연결한다.
- AAAA Record - 도메인을 IPv6의 IP 주소로 직접 연결한다.
- Root hints - DNS 루트 서버의 IP 주소를 포함하고 있는 파일
DNS의 동작방식 (Iterative 방식이다 !!!!)
![](https://velog.velcdn.com/images/dlguswns3482/post/fe4a877a-293d-4fbf-8745-43a714dbf287/image.png)
1. DNS Query (from Web Browser to Local DNS)
2. DNS Query (from Local DNS to Root DNS)
- Local DNS가 ROOT DNS한테 제가 원하는 웹 사이트의 IP 주소를 알고 계신가요 ??
3. DNS Response (from Root DNS to Local DNS)
- 저는 모르지만 .com 도메인을 관리하는 DNS Server의 이름과 IP주소를 알려드릴 테니 거기다가 물어보쇼 !!
- 안녕하세요 !! www.naver.com의 IP 주소를 알고 계신가요 ??
- 저는 모르지만 naver.com 도메인을 관리하는 DNS Server의 이름과 IP 주소를 알려드릴 테니 거기다가 물어보세요 !!
- 안녕하세요 ^^ 혹시 www.naver.com의 IP 주소를 알고 계실까요 ??
- 네네 ㅎㅎ www.naver.com의 IP 주소는 222.222.222.22입니다 ㅎㅎ
8. DNS Response (from Local DNS to PC)
- 히히 알아봤습니다 ㅎㅎ www.naver.com의 주소는 222.222.222.22입니다 ㅎㅎ
DNS 질의 종류 (Recursive vs Iterative)
Recursive(재귀적 질의)란 무엇인가 ❓😁❓
- Local DNs 서버에 Query를 보내면 Local DNS Server가 Root DNS Server에 Query를 보낸다.
- Root 서버는 자신의 서버에 없다면 해당 TLD 서버에 직접 요청한다.
- 이렇게 재귀적으로 실제 도메인 정보를 가지고 있는 서버까지 Query가 이동하여 IP 주소를 얻음.
![](https://velog.velcdn.com/images/dlguswns3482/post/f3727d3a-cfa8-4d52-adc7-246489ff28e3/image.png)
Iterative (반복적 질의)란 무엇인가 ❓😁❓
- Local DNS 서버에 Query를 보내면 Local DNS 서버가 Root DNS Server에 Query를 보낸다.
- 그리고 Root DNS는 해당 도메인에 속한 TLD 서버의 주소를 Local DNS Server에게 반환한다.
- 이렇게 Local DNS가 DNS Server로부터 TLD Server에게 왔다 갔다 Query를 하는것이다.
![](https://velog.velcdn.com/images/dlguswns3482/post/e3f59400-e97c-4bb7-abb2-fbf2eecd8c7e/image.png)
둘의 차이가 무엇인가요 ❓❓
- Iterative 방식은 Local서버가 TLD의 IP 주소를 받아서 Local DNS Server가 직접 쿼리를 하여 알아내는 방식이다.
- Recursive 방식은 Local서버가 일일이 쿼리를 하는것이 아닌 재귀적으로 ROOT DNS server → TLD DNS Server → TLD DNS Server 이렇게 안에서 Query를 이뤄서 완벽한 IP 를 찾은 후에 거슬러 올라오는 방식이다.
DNS Root Hints란 ❓
- Root Hints는 DNS 시스템에서 사용되는 특정 파일 또는 데이터베이스이다.
- DNS 서버가 DNS 계층 구조에서 최상위 수준인 루트 DNS 서버를 찾는데 도움을 준다.
- Root Hints는 텍스트 파일일 뿐이다. Root DNS Server의 IP 주소와 해당 서버가 사용하는 Nameserver 주소등의 정보를 포함하고 있는 !!!!
- 루트 DNS 서버는 모든 질의의 시작점이다.
- 하지만 하위 DNS 서버는 루트 DNS 서버의 주소를 미리 알지 못하기 때문에 루트 DNS 서버를 찾는 과정이 필요하다.
- 이떄 Root hints 파일이 사용된다 !!
- DNS 서버가 시작될 떄 자동으로 Root hints 파일이 읽힌다. 이 정보를 기반으로 루트 DNS 서버에 질의를 보낼 수 있다 !!!!
Cache DNS Server란 ❔❓
- 이전에 질의한 DNS 정보를 저장하여 다음에 동일한 질의가 있을 때 빠르게 응답할 수 있게 해주는 DNS 서버이다.
- 이를 통해 네트워크 트래픽을 줄이고 DNS 질의의 응답 시간을 줄일 수 있다.
- 외부에 TTL(Time To Live : cache가 유효한 시간)이 지나게 되면 외부 서버와 쿼리를 하게 된다.
- 이 쿼리 내용을 cache에 저장해놓고 Cache 서버에 질의가 들어오게 되면 자신의 Cache에 저장되어 있는것을 넘겨주는 역할을 하는 Server이다.
꿀팁 !!
- 서버의 IP가 자주 바뀐다면 (실무적으로 구성 상 변경해야할 때, 서버이전, 서버 Relocation 등등) TTL을 작게 잡아 도메인에 대한 IP가 빨리 바뀌어 cache에 반영되도록 해야한다 !!!