DNS (Domain Name System) 란?
숫자로 구성된 네트워크 주소인 IP 주소를 사람이 이해하기 쉬운 명칭인 도메인 이름으로 상호 매칭시켜주는 시스템.
※ 도메인 이름 조건
영어(a~z), 숫자(0~9), 특수문자(-)의 글자 조합으로 이루어진다.
대소문자 구분은 없으며, 특수문자는 '-' 만 가능하다. 특수문자는 도메인의 처음과 끝에 넣을 수 없다.
DNS의 계층 구조
가장 상위 개체는 루트도메인(root, '.')이며, 최상위 레벨은 국가(조직체), 두 번째 레벨은 기관, 최하위 레벨은 서버 이름을 사용한다.
www.naver.com 이라는 url 로 예를 들어 보자. 우리는 흔히 해당 url을 그대로 사용하지만, 실제로는 com 도메인 뒤에 root 도메인이 있는 www.naver.com. 이 정확한 표현이며 root 도메인이 생략된 채 사용되고 있는 것이다.
DNS 동작 원리 - 도메인 질의 순서
모든 단말(PC)는 DNS서버의 IP 주소가 설정되어 있어야 한다. 보통 PC는 DHCP 프로토콜로 IP 주소를 할당 받으면서 DNS 서버 IP 주소를 DHCP Otion 6을 통해 함께 받는다. 만일, 조직에 Windows Server 기반 Active Directory Domain Controller가 존재하고 PC가 도메인에 가입되어 있다면, DNS Server로 Domain Controller의 IP를 받아온다.
기본 설정 DNS부터 Local DNS Server, External DNS Server 까지 질의 결과를 찾을 수 없다면 다음 DNS Server에 질의를 진행한다. Local DNS 서버가 여러 DNS 서버를 차례대로 (Root DNS 서버 -> com DNS 서버 -> naver.com DNS 서버) 물어봐서 그 답을 찾는 과정을 Recursive Query라고 부릅니다.
단말
1. 기본 설정 DNS(Host file) 확인
PC 브라우저에서 www.naver.com 을 입력한다. 그러면 PC는 미리 설정되어 있는 DNS(Host file)에게 "www.naver.com 이라는 hostname"에 대한 IP 주소를 질의한다.
2. Cache file 확인
다음으로 Cache file을 확인한다.
Local DNS Server
3. Local DNS Server 에 질의
Client에서 IP 설정 시 지정한 DNS 서버에 질의한다.
- 질의 결과 찾지 못하였다면, 내부 DNS 서버는 "www.naver.com 이라는 hostname에 대한 IP 주소를 찾기 위해 다른 DNS 서버들과 통신(DNS 메시지)을 시작한다.
- 먼저 Root DNS Server에 질의를 한다.
외부 DNS Server
4. root DNS(.)에 질의
- Root DNS는 "com"을 관리하는 DNS 서버에게 질의를 보낸다.
5. 최상위 레벨 DNS Server(Com) 에 질의
- "naver.com"을 관리하는 DNS 서버에게 질의를 보낸다.
6. 2계층 레벨 DNS Server (naver.com) 에서 질의
- "naver.com"을 관리하는 DNS Server 에서 "www.naver.com" IP 주소를 Client 에게 알려준다.
간단히 정리해보면,
먼저 단말 PC의 Host File과 DNS 캐시 정보를 확인한 후 없으면,
Local DNS 서버에 정보를 질의하고 없으면,
Root DNS -> 최상위 도메인 -> 2계층 도메인 -> ... -> 호스트 레벨 도메인까지 질의를 보내는 것이다.
"www.naver.com." 이라는 hostname에 대해서 맨 뒤의 root 도메인부터 차례대로 질의한다.
※ Root DNS
전 세계에 13대가 구축되어 있다. 미국에 10대, 일본/네덜란드/노르웨이 각 1대 있다.
※ OS 별 Local DNS(Host file) 경로
- LINUX: /etc/resolv.conf
- Windows: [제어판]-[네트워크 및 공유센터]-[어댑터 설정 변경]-[현재 사용중인 이더넷 우클릭]-[속성]-[IPv4]-[속성]
※ Windows 에서 DNS 캐시 정보 확인
ipconfig /displaydns
※ Windows 에서 DNS 캐시 정보 삭제
ipconfig /flushdns
Reference
'Web Server' 카테고리의 다른 글
[WEB] NginX - Tomcat 연동 (1) | 2022.08.12 |
---|---|
공부 정리 (0) | 2021.12.06 |
[WEB] HTTP 1.0 과 HTTP 1.1 그리고 HTTP 2.0 (0) | 2021.12.03 |
[WEB] Proxy - Forward Proxy & Reverse Proxy (0) | 2021.12.02 |
[WEB] SSL / TLS (0) | 2021.11.27 |