DNS는 Domain Name System의 약자로, 인터넷 상에서 도메인 이름과 IP 주소를 매핑하는 시스템이다.
이를 통해 사용자는 기억하기 쉬운 도메인 이름을 사용하여 웹사이트에 접속할 수 있고, 컴퓨터는 해당 도메인 이름을 IP 주소로 변환하여 통신할 수 있다.
일반적으로 인터넷에서는 각각의 컴퓨터나 네트워크 장치는 IP 주소를 가지고 있다. IP 주소는 숫자로 이루어져 있어서 기억하기 어렵기 때문에 사용자들은 도메인 이름(예:www.naver.com)을 사용한다.
1. 도메인 이름 요청: 사용자가 웹 브라우저에 도메인 이름을 입력하면, 컴퓨터는 해당 도메인 이름에 대응되는 IP 주소를 얻기 위해 DNS 서버에 질의를 보낸다.
2. DNS 질의 및 응답: 사용자의 컴퓨터는 먼저 로컬 DNS 캐시를 확인하여 도메인 이름에 대한 IP 주소를 이미 가지고 있는지 확인한다. 로컬 DNS 캐시에 없는 경우, 사용자의 컴퓨터는 미리 설정된 DNS 서버(일반적으로 ISP가 제공하는 DNS 서버)에 DNS 질의를 보낸다.
3. DNS 서버 검색: DNS 서버는 도메인 이름에 대한 IP 주소를 찾기 위해 다른 DNS 서버에게 질의를 보낸다. 이러한 과정은 계층적으로 이루어지며, 최종적으로 도메인 이름에 대한 IP 주소를 가지고 있는 DNS 서버를 찾을 때까지 반복된다.
4. 응답 전달: DNS 서버가 도메인 이름에 대한 IP 주소를 찾으면, 해당 IP 주소를 사용자의 컴퓨터로 전달한다.
5. 로컬 DNS 캐시 업데이트: 받은 응답을 로컬 DNS 캐시에 저장하여 동일한 도메인 이름에 대한 요청이 발생할 때 다시 검색하지 않도록 한다.
1. 브라우저 요청: 사용자가 웹 브라우저(예: Chrome, Firefox)에 www.naver.com을 입력하고 엔터를 누른다.
2. DNS 조회: 브라우저는 입력된 도메인 이름인 www.naver.com을 IP 주소로 변환하기 위해 DNS(Domain Name System)에 쿼리를 보낸다. DNS는 도메인 이름을 해당하는 IP 주소로 매핑해주는 역할을 한다.
3. 로컬 DNS 캐시 조회: 우선 브라우저는 로컬 DNS 캐시를 조회하여 이전에 방문한 도메인의 IP 주소를 캐시한 정보가 있는지 확인한다. 캐시에 해당 정보가 없거나 만료되었다면, 다음 단계로 진행된다.
4. 루트 DNS 서버 조회: 로컬 DNS 캐시에 해당 도메인의 IP 주소가 없는 경우, 브라우저는 루트 DNS 서버의 IP 주소를 알고 있으므로 루트 DNS 서버에게 www.naver.com에 대한 IP 주소를 요청한다.
5. 최상위 도메인(TLD) 서버 조회: 루트 DNS 서버는 최상위 도메인(TLD) 서버의 IP 주소를 반환한다. 여기서는 .com 도메인에 대한 TLD 서버의 IP 주소를 받는다.
- TLD(Top-Level Domain, 최상위 도메인) DNS Server
TLD는 도메인 등록 기관(Registry)이 관리하는 서버로, 도메인 네미의 가장 마지막 부분을 말한다. 예를 들어 웹사이트에서 한번쯤은 봐왔던.com이나co.kr같은 도메인들을 관리하고 부여하는 서버이다. Authoritative DNS 서버 주소를 저장해두고 안내하는 역할을 한다.
6. 네임 서버 조회: 브라우저는 TLD 서버로부터 .com 도메인의 네임 서버(NS) 정보를 받는다. 그 중에서도 "naver.com" 도메인의 네임 서버 정보를 얻기 위해 추가적인 DNS 쿼리를 보낸다.
7. 권한 있는 DNS 서버(Authoritative DNS 서버) 조회: 브라우저는 naver.com 도메인의 네임 서버 정보를 받는다. 그리고 이 네임 서버에게 www.naver.com에 대한 IP 주소를 요청한다. 이 네임 서버는 네이버의 권한 있는 DNS 서버이다.
- Authoritative DNS Server(권한 있는 DNS 서버)
Authoritative DNS Server(권한 있는 DNS 서버)는 특정 도메인의 DNS 정보를 공식적으로 관리하고 제공하는 DNS 서버다. 이 서버는 해당 도메인의 DNS 레코드에 대한 권한을 갖고 있으며, 이 도메인에 대한 DNS 쿼리에 대한 정확한 정보를 제공한다.
8. IP 주소 반환: 네이버의 권한 있는 DNS 서버는 www.naver.com에 대한 IP 주소를 반환한다. 이 IP 주소는 브라우저에게 전송된다.
9. 웹 서버 연결: 브라우저는 받은 IP 주소로 네이버의 웹 서버에 연결을 시도한다.
10. 웹 페이지 로딩: 웹 서버에서는 요청된 웹 페이지와 관련된 데이터를 클라이언트(브라우저)에게 전송하여 웹 페이지가 로드되고 화면에 표시된다.
1. 쿼리 질의(Query): DNS 클라이언트가 DNS 서버에게 특정 도메인 이름에 대한 IP 주소를 요청하는 것을 말한다.
2. 순환 질의(Recursive Query): DNS 클라이언트가 DNS 서버에게 특정 도메인 이름에 대한 IP 주소를 요청하면, DNS 서버가 해당 도메인 이름에 대한 IP 주소를 찾을 때까지 반복해서 다른 DNS 서버에게 질의를 보내는 것을 말한다.
3. 반복 질의(Iterative Query): DNS 서버가 다른 DNS 서버에게 특정 도메인 이름에 대한 IP 주소를 요청할 때, 그 DNS 서버는 반복해서 다른 DNS 서버에게 질의를 보내는 것을 말한다.
DNS는 주로 UDP(User Datagram Protocol)를 사용하여 통신한다. 이는 DNS가 대부분의 요청과 응답이 간단하고 소량의 데이터이며, 연결 지향적인 TCP(Transmission Control Protocol)보다는 속도가 중요하다는 점 때문이다. UDP는 연결 설정 및 종료 과정이 없어서 빠르게 데이터를 보내고 받을 수 있며, DNS의 대부분의 질의는 단일 패킷에 맞춰 처리될 수 있으므로 UDP를 사용하는 것이 적절하다.
- DNS 레코드
DNS 레코드는 DNS 데이터베이스의 항목으로, 도메인 이름과 관련된 정보를 포함하고 있다.