DNS 란?
- DNS(Domain Name System)는 사용자가 입력한 자연어 URL을 IP 주소로 변환하여 인터넷 상의 통신을 가능하게 하는 시스템이다. 이는 인터넷 상에서 전화번호부와 같은 역할을 수행하며, URL을 통해 특정 웹 서버의 위치를 찾을 수 있도록 돕는다.
DNS의 동작 과정
도메인으로 IP 주소(A레코드 or AAAA 레코드)를 조회하는 과정의 개요
1. 재귀적 DNS 조회하여 캐싱된 IP 주소가 있는지 확인
2. 루트 DNS 서버에 최상위 도메인을 조회하여 TLD 서버의 위치 확인
3. TLD 서버에 .com 등 최상위 도메인을 조회하여 네임서버 를 확인
4. 네임서버를 통해 웹호스팅 회사 조회
5. 웹호스팅 회사에서 IP 주소 반환
- 사용자의 요청
- 사용자가 웹 브라우저에 URL을 입력하면, 브라우저는 먼저 해당 도메인의 IP 주소가 로컬 DNS 캐시에 저장되어 있는지 확인한다.
- 캐시에 저장된 주소가 있다면 그 IP 주소를 사용하여 연결을 시도한다. 저장된 주소가 없다면 DNS 시스템으로부터 조회 과정을 시작한다.
- 재귀적 DNS 서버 조회
- 사용자의 컴퓨터나 라우터는 일반적으로 재귀적 DNS 서버(인터넷 제공업체(ISP)에서 제공)로 설정되어 있다. 사용자의 DNS 쿼리는 이 재귀적 DNS 서버로 전송되며, 이 서버가 필요한 DNS 레코드를 찾기 위해 다른 DNS 서버들과 통신을 한다.
- 재귀적 DNS 서버는 사용자를 대신하여 여러 DNS 서버에 쿼리를 보내며 정보를 찾아낸다. 이를 재귀적(recursion) 과정이라고 부른다.
- 루트 DNS 서버 조회
- 재귀적 DNS 서버는 먼저 루트 DNS 서버에 연결한다. 루트 DNS 서버는 전 세계에 13개가 존재하며 DNS의 최상위에 위치하는 서버이다. 이 서버들은 각각 최상위 도메인(TLD, - com, net, org 등)의 위치 정보를 알고 있다. 루트 DNS 서버는 TLD 서버를 가리키는 정보를 재귀적 DNS 서버에 반환한다.
- TLD(Top-Level Domain) 서버 조회
- 루트 서버로부터 정보를 받은 재귀적 DNS 서버는 해당 TLD DNS 서버에 쿼리를 보낸다.
- 예를 들어,
https://hyeonjong.com
을 입력했을 때,.com
TLD 서버가 조회된다. TLD 서버는 해당 도메인의 네임 서버(NS 레코드)를 가리키는 정보를 제공한다.
- 도메인의 네임 서버
- TLD 서버로부터 도메인의 네임 서버(NS 레코드)에 대한 정보를 받은 후, 재귀적 DNS 서버는 해당 도메인의 네임 서버에 직접 접속하여 실제 IP 주소(A 레코드 or AAAA 레코드)를 요청한다. 이 네임 서버는 일반적으로 도메인을 호스팅하는 웹 호스팅 회사에 의해 관리된다.
- IP 주소 반환 및 캐싱
- 도메인의 네임 서버는 요청된 도메인의 IP 주소를 재귀적 DNS 서버에 반환한다. 재귀적 DNS 서버는 이 IP 주소를 사용자의 컴퓨터에 전달하고, 동시에 일정 시간 동안 이 정보를 캐시에 저장하여 향후 같은 도메인에 대한 요청이 있을 때 빠르게 응답할 수 있도록 한다.
이 과정은 사용자가 입력한 도메인 이름을 실제 서버의 IP 주소로 변환하여 인터넷 상의 데이터 전송을 가능하게 하며, 웹 브라우저가 서버와 통신하여 페이지를 로드할 수 있도록 지원한다. DNS의 역할 덕분에 우리는 복잡한 IP 주소 대신 기억하기 쉬운 도메인 이름을 통해 웹에 접속할 수 있다.