이번 포스트에서 DNS에 대해 다뤄보려한다.
DNS(Domain Name System)는 인터넷의 도메인 이름을 IP 주소로 변환해주는 시스템이다. 인터넷에서는 컴퓨터나 서버가 서로 통신하기 위해 IP 주소를 사용한다. 그러나 IP 주소는 숫자로 이루어져 있어 기억하기 어렵기 때문에, 이를 쉽게 기억할 수 있는 도메인 이름으로 변환하는 역할을 한다.
예를 들어, 사용자가 웹 브라우저에 "www.example.com"을 입력하면, DNS 서버는 해당 도메인 이름에 대응하는 IP 주소를 찾아서 사용자에게 제공한다. 이 과정을 통해 사용자는 "www.example.com"이라는 도메인 이름만으로 해당 웹 사이트에 접속할 수 있게 된다.
DNS는 분산 데이터베이스 시스템으로, 계층적 구조를 가지고 있다. 주요 구성 요소는 다음과 같다:
도메인: 도메인은 "."으로 구분되는 계층 구조를 가지고 있으며, 최상위 도메인(TLD), 2차 도메인 등으로 나뉜다. 예를 들어, "www.example.com"에서 "com"은 최상위 도메인이고, "example"은 2차 도메인이다.
DNS 서버: DNS 서버는 도메인 이름과 IP 주소의 매핑 정보를 저장하고 있는 서버이다. 주로 루트 DNS 서버, TLD DNS 서버, 권한 DNS 서버 등으로 구분된다.
DNS 쿼리: 사용자가 도메인 이름을 입력하면, DNS 서버에 쿼리를 보내어 해당 도메인 이름에 대응하는 IP 주소를 요청한다. 이 과정을 재귀적 쿼리와 반복적 쿼리로 나눌 수 있다.
DNS는 다음과 같은 단계로 동작한다
사용자가 웹 브라우저를 열어 주소 표시줄에 "www.example.com"을 입력하고 Enter 키를 누른다.
www.example.com에 대한 요청은 인터넷 서비스 제공업체(ISP)가 관리하는 DNS Resolver로 라우팅된다.
ISP의 DNS Resolver는 www.example.com에 대한 요청을 DNS 루트 이름 서버에 전달한다.
ISP의 DNS Resolver는 www.example.com에 대한 요청을 이번에는 .com 도메인의 TLD 이름 서버 중 하나에 다시 전달한다. .com 도메인의 이름 서버는 example.com 도메인과 연관된 4개의 Amazon Route 53 이름 서버의 이름을 사용하여 요청에 응답한다.
ISP의 DNS Resolver는 Amazon Route 53 이름 서버 하나를 선택해 www.example.com에 대한 요청을 해당 이름 서버에 전달한다.
Amazon Route 53 이름 서버는 example.com 호스팅 영역에서 www.example.com 레코드를 찾아 웹 서버의 IP 주소 192.0.2.44 등 연관된 값을 받고 이 IP 주소를 DNS Resolver로 반환한다.
ISP의 DNS Resolver가 마침내 사용자에게 필요한 IP 주소를 확보하게 된다. Resolver 는 이 값을 웹 브라우저로 반환한다. 또한, DNS Resolver는 다음에 누군가가 example.com을 탐색할 때 좀 더 빠르게 응답할 수 있도록 사용자가 지정하는 일정 기간 example.com의 IP 주소를 캐싱(저장)한다. 자세한 내용은 Time to Live(TTL)를 참조한다.
웹 브라우저는 DNS Resolver부터 얻은 IP 주소로 www.example.com에 대한 요청을 전송한다. 여기가 콘텐츠가 있는 곳으로, 예를 들어 웹 사이트 엔드포인트로 구성된 Amazon S3 버킷 또는 Amazon EC2 인스턴스에서 실행되는 웹 서버이다.
192.0.2.44에 있는 웹 서버 또는 그 밖의 리소스는 www.example.com의 웹 페이지를 웹 브라우저로 반환하고, 웹 브라우저는 이 페이지를 표시한다.
이번 포스트에서 DNS의 개념에 대해 이해하였다. 다음 TIL에서는 HTTP를 다룰 예정이다.