DNS란?
인터넷상의 모든 컴퓨터는 숫자를 사용하여 서로를 찾고 통신한다. 이러한 숫자를 IP 주소라고 한다. 모든 서버에는 고유의 IP 주소가 할당되는데, 사용자들이 특정 사이트에 접속할 때마다 길고 복잡한 IP 주소를 입력해서 들어가는 것은 어렵다. 때문에 각 IP 주소에 문자열로 구성된 도메인을 연결지어 활용하는데, 이 변환을 담당하는 시스템이 DNS(Domain Name System)이다. DNS는 컴퓨터들이 문자열 도메인을 통해서도 최종 목적지까지 도달할 수 있도록 IP 주소와 도메인을 매핑해놓은 주소 체계이다.
URL 구성 요소
URL 하면 "http://www.google.com" 와 같은 형식의 링크를 떠올리는데, 이 URL은 scheme, subdomain, domain name, TLD로 구성되어 있다.
- scheme : "http://", "https://" 와 같이 맨 앞에 붙는 부분으로, 통신할 때 사용되는 통신 프로토콜이다.
- subdomain(third-level domain) : "www"에 해당하는 부분이다.
- domain name(second-level domain) : "google"과 같이 도메인 주소를 구성하는 이름이다.
- TLD(top-level domain) : "com"과 같이 최상위 계층을 구성하는 부분이다.
DNS 구성 요소
DNS는 크게 도메인 네임 스페이스, 네임 서버, 리졸버 3가지의 구성 요소로 나눌 수 있다.
1) 도메인 네임 스페이스(Domain Name Space)
도메인 네임 스페이스는 DNS가 저장 및 관리하는 계층적인 구조를 의미한다. 최상위에 Root DNS 서버가 존재하고, 하위에 인터넷에 연결된 모든 노드가 연속해서 이어진 계층 구조로 구성되어 있다.
2)네임 서버(Name Server)
도메인 주소를 관리하기 위해 사용하는 DNS 전용 서버이다. 문자열로 표현된 도메인 이름을 실제 컴퓨터가 통신할 때 사용하는 IP 주소로 변환시키기 위해서는 도메인 네임 스페이스의 트리 구조에 대한 정보가 필요하며, 이러한 정보를 가지고 있는 서버를 네임 서버라고 한다.
3) 리졸버(Resolver)
DNS 클라이언트의 요청을 네임 서버로 전달하고 네임 서버로부터 도메인 이름과 IP 주소를 받아 클라이언트에게 제공하는 기능을 수행한다.
DNS의 동작 방식
사용자가 도메인 주소를 브라우저 창에 입력하여 요청을 보낼 때, 바로 해당 IP 주소로 이동하는 것이 아니다. 이 요청은 먼저 여러 도메인 주소와 IP 주소를 매칭시켜 놓은 DNS 서버에 전달되어 원하는 도메인의 IP 주소가 존재하는지 묻는 쿼리를 보낸다. 응답값으로 요청한 IP 주소를 받게 되면 그 후에 해당 IP 주소로 패킷을 보낸다.
DNS 체계를 통해 IP 주소를 찾아오는 과정은 다음과 같다.
1) 웹 브라우저 창에 도메인 주소를 입력하면 로컬 컴퓨터의 캐시에 해당 도메인의 IP 주소가 저장되어 있는지 확인한다. IP 주소가 저장되어 있을 경우 해당 IP 주소로 패킷을 전송하지만, 없을 경우 로컬 DNS 서버로 쿼리를 전송한다.
2) DNS 서버의 캐시 및 주소록에서 IP 주소를 검색한다. 있을 경우 해당 IP 주소로 패킷을 전송하지만, 없을 경우 연결된 Root DNS 서버로 쿼리를 전송한다.
3) Root DNS 서버에서 도메인의 TLD 정보를 가지고 있는 하위 DNS 서버 IP를 요청한다.
4) 하위 DNS 서버에서 다음 계층의 주소를 포함하는 도메인 주소 정보를 가지고 있는 하위 DNS 서버 IP를 요청한다.
5) 같은 방식으로 계층을 하나씩 이동하며 최종 도메인의 IP 주소를 받을 때까지 쿼리를 반복한다.
6) 마지막으로 IP 주소를 로컬 DNS와 브라우저 PC에 캐싱한 뒤 패킷을 전송한다.
클라이언트에서 로컬 DNS 서버로 보내는 요청을 재귀적(recursive) 쿼리라고 한다.
로컬 DNS에서 Root 서버, 하위 DNS 서버로 보내는 요청을 반복적(iterative) 쿼리라고 한다.
'Backend Roadmap > Internet' 카테고리의 다른 글
도메인 네임이란? (0) | 2024.06.24 |
---|---|
호스팅이란? (0) | 2024.06.24 |
브라우저와 동작 방식 (0) | 2024.06.24 |
HTTP란? (0) | 2024.06.24 |
인터넷이 어떻게 동작하는가? (0) | 2024.06.24 |