
모든 웹 서버는 주소를 가지고 있다.
웹 서버가 주소를 가진다는 것은 서버가 클라이언트(브라우저 등)와 통신할 수 있는 방법을 제공한다는 의미이기도 하다.
이 주소는 IP주소 또는 네크워크 주소 라고 하며,
웹 서버는 고유한 IP주소를 통해 네트워크 상에서 식별된다.
하지만 IP주소는 숫자로 이루어져 사람이 읽고 기억하기 어려운 형태이기 때문에
별칭(Alias)인 도메인 네임(Domain Name)을 사용한다.
웹 서버와의 통신을 위해서는 이름의 실제 IP주소를 기반으로 진행되어야 한다.
즉 어떤 도메인 네임이 어떤 웹 서버 IP주소 인지 알아야 한다.
Origin = Scheme + Host Name(Domain Name) + Port
Ex. https:// euiyeon.com :8080
DNS란 도메인 네임이 어떤 IP 주소인지 검색하고 변환하는 시스템을 의미한다.
도메인 네임과 웹 서버IP의 매핑 정보인 DNS Table을 이용하여 변환한다.
DNS Table은 특정 DNS 서버에 의해 관리되며, 그 서버가 관리하는 도메인에 대한 모든 매핑 정보를 포함하고 있다.
사용자가 브라우저에 도메인 이름을 입력하면, DNS서버는 이 도메인 이름을 해당하는 IP주소로 변환하여 사용자의 컴퓨터가 올바른 웹 서버와 통신할 수 있도록 한다.
DNS는 계층적인 구조를 가지고 있으며 Root DNS서버, TLD DNS서버, Name서버로 구성된다.
Domain Name Space는 도메인 네임의 계층적 구조를 의미하며,
이를 통해 도메인 네임을 조직화하고 관리하는 방법을 제공한다.
성능 향상을 위해 DNS 응답은 캐시된다.
즉, 한 번 조회된 도메인 이름과 IP주소 쌍(pair)은 일정 기간동안 저장되어 같은 요청이 다시 발생할 때 빠르게 처리된다.
DNS는 전 세계에 분산되어 있는 수많은 서버들로 구성된 시스템이다.
따라서 DNS 시스템이 매우 안정적이고 확장 가능하게 만드는 데 기여한다.
🔎 DNS Query
Recursive Query
Iterative Query
웹 브라우저에 www.naver.com과 같은 도메인이 입력되면 우선 브라우저 캐시와 OS 캐시를 확인한다. 캐시에서 IP주소를 찾지 못하면 DNS Resolver가 개입한다.
🔎 DNS Resolver (Server)
DNS Resolver는 클라이언트와 DNS 서버 사이를 중재하는 역할로,
사용자의 DNS 쿼리를 받아 필요한 정보를 찾아 반환하는 기능을 수행한다.
일반적으로 DNS Resolver는 Local DNS서버가 역할을 수행한다.
쿼리를 받은 DNS Resolver는 우선 Local DNS 서버에서 IP를 조회한다.
🔎 Local DNS (Server)
Local DNS는 보통 ISP에서 운영하는 서버로,
각 인터넷 통신사들의 DNS 서버로 이해할 수 있다.
사용자 회선이 KT라면 KT DNS 서버에 들리고, SK면 SK DNS 서버에 들린다.
Local DNS는 DNS 요청을 처리하는 중간 단계이며,
자신이 이전에 조회했던 도메인과 IP주소를 캐시에 저장해둔다.
클라이언트로부터 동일한 도메인에 대한 요청이 들어오면 캐시를 확인해 빠르게 응답할 수 있다.
Local DNS 캐시에 해당 도메인의 IP주소를 가지고 있지 않다면 상위 DNS서버로 요청을 전달한다.
DNS Resolver가 도메인의 IP주소를 찾기 위해 상위 DNS서버와 통신을 시작하는
첫 단계이다.
Root Server는 .(dot)을 관리하며,
.com., .net. 등의 단위를 찾아내고, 해당하는 TLD Server의 주소를 반환한다.
| Key | Value |
|---|---|
| .com. | .com TLD Server |
| .net. | .net TLD Server |
TLD Server는 .com, .net 등과 같은 최상위 도메인을 관리한다.
(즉, .com으로 끝나는 모든 웹 사이트 정보를 하나의 TLD Server가 가지고 있다.)
TLD Server는 해당하는 Name Server의 주소를 반환한다.
.com 중 naver.com은 A Name Server로.com 중 google.com은 B Name Server로| Key | Value |
|---|---|
| naver.com | A Name Server |
| google.com | B Name Server |
Name Server는 .domain.com (.naver.com) 을 관리하며
실제 도메인과 IP주소의 관계가 기록/저장/변경되는 서버로 DNS 쿼리의 종착지다.
DNS Resolver에게 도메인의 IP주소를 반환한다.
또한 Name Server는 도메인(호스팅)업체들의 Name Server이다.
naver, google)을 등록하고 관리하는 업체의 서버TLD Server는 실제로 도메인을 관리하는 도메인 업체의 Name Server 주소를 반환한다.Name Server는 도메인 이름에 대한 IP주소를 포함한 DNS 레코드를 반환하고DNS에서 Authoritative와 Non-Authoritative는 DNS서버가 제공하는 응답의 신뢰성을 나타낸다.
Authoritative : 캐싱되어있는 DNS를 반환
Non-Authoritative : 캐싱되어있지 않은 실제 Name Server에 저장된 실시간 DNS를 반환