DNS란 무엇인가? 도메인 주소가 IP 주소로 변환되는 과정

DNS란 무엇인가?
인터넷에서 웹사이트에 접속할 때 우리는 숫자로 된 IP 주소 대신 example.com과 같은 도메인 이름을 입력한다.
컴퓨터와 서버는 실제 통신 과정에서 IP 주소를 이용한다. 그렇다면 사람이 입력한 도메인 이름을 컴퓨터는 어떻게 해당 서버의 IP 주소와 연결할 수 있을까?
이 역할을 담당하는 것이 DNS(Domain Name System)다.
DNS는 사람이 기억하기 쉬운 도메인 이름과 컴퓨터가 통신에 사용하는 IP 주소를 연결해 주는 시스템이다.
쉽게 말하면 다음과 같은 관계다.
도메인 이름 → DNS 조회 → IP 주소 → 웹서버 연결
하지만 실제 인터넷에서 DNS 조회가 이루어지는 과정은 이보다 조금 더 복잡하다.
도메인 이름과 IP 주소는 왜 필요한가?
인터넷에 연결된 컴퓨터나 서버는 네트워크에서 서로를 구분하기 위한 주소가 필요하다.
이때 사용되는 것이 IP 주소다.
예를 들어 어떤 웹서버의 주소가 숫자로 구성된 IP 주소라고 하면 사용자가 직접 그 숫자를 기억해서 웹사이트에 접속할 수도 있다.
하지만 수많은 웹사이트의 숫자 주소를 사람이 모두 기억하기는 어렵다.
그래서 사람이 기억하기 쉬운 문자 형태의 도메인 이름을 사용하고, DNS를 통해 해당 이름을 IP 주소와 연결한다.
도메인 이름은 사람에게 편리하고, IP 주소는 네트워크 통신에 사용되는 것이다.
DNS는 인터넷의 전화번호부와 같은 것일까?
DNS를 설명할 때 흔히 인터넷 전화번호부에 비유한다.
이 비유는 DNS의 기본적인 역할을 이해하는 데는 도움이 된다.
하지만 실제 DNS는 하나의 거대한 전화번호부 서버가 모든 도메인 정보를 가지고 있는 구조가 아니다.
DNS는 여러 종류의 서버와 캐시를 이용하는 분산형 시스템이다.
도메인 정보가 여러 단계로 나뉘어 관리되기 때문에 특정 서버 하나에 모든 인터넷 주소 정보가 저장되어 있는 것은 아니다.
이러한 구조 덕분에 전 세계적으로 매우 많은 도메인을 효율적으로 관리할 수 있다.
사용자가 웹사이트 주소를 입력하면 무슨 일이 일어날까?
사용자가 웹브라우저의 주소창에 도메인 이름을 입력한다고 생각해보자.
예를 들어 다음과 같은 주소를 입력한다.
브라우저는 먼저 해당 도메인에 연결하기 위해 IP 주소가 필요한지 확인한다.
이미 이전에 조회한 결과가 저장되어 있다면 DNS 서버에 다시 질문하지 않고 저장된 정보를 사용할 수도 있다.
이것을 DNS 캐시라고 한다.
캐시에 필요한 정보가 없다면 DNS 조회 과정이 시작된다.
1단계: 브라우저의 DNS 캐시 확인
브라우저는 최근에 조회한 DNS 정보를 일정 시간 동안 보관할 수 있다.
같은 웹사이트에 다시 접속할 때마다 처음부터 DNS 조회를 반복한다면 불필요한 통신이 발생하기 때문이다.
따라서 먼저 브라우저 등에 저장된 DNS 정보가 있는지 확인할 수 있다.
유효한 정보가 있다면 그 IP 주소를 이용해 다음 단계인 서버 연결로 넘어갈 수 있다.
2단계: 운영체제의 DNS 정보 확인
브라우저에 원하는 정보가 없다면 운영체제도 DNS 캐시 등을 확인할 수 있다.
Windows 같은 운영체제는 이전에 조회한 DNS 정보를 일정 시간 동안 보관할 수 있다.
이곳에서도 필요한 IP 주소를 찾지 못하면 설정된 DNS 서버에 질의가 전달된다.
3단계: DNS 리졸버에 질의한다
운영체제가 사용하는 DNS 서버를 일반적으로 DNS 리졸버(Resolver)라고 부른다.
인터넷 서비스 제공업체가 제공하는 DNS 서버를 사용할 수도 있고, 사용자가 별도의 공용 DNS 서비스를 설정할 수도 있다.
리졸버는 사용자를 대신해서 필요한 도메인의 IP 주소를 찾는 역할을 한다.
여기서 중요한 점은 사용자의 컴퓨터가 인터넷에 존재하는 모든 DNS 서버를 직접 찾아다니는 것이 아니라는 것이다.
일반적으로 사용자는 DNS 리졸버에 질문하고, 리졸버가 필요한 정보를 찾아온다.
4단계: 루트 DNS 서버를 확인한다
리졸버의 캐시에 필요한 정보가 없다면 DNS 계층 구조를 따라 조회가 진행될 수 있다.
가장 먼저 확인하는 계층이 루트 DNS 서버다.
루트 DNS 서버는 모든 웹사이트의 IP 주소를 직접 알려주는 서버가 아니다.
대신 .com, .org, .net, .kr 같은 최상위 도메인(TLD)을 담당하는 서버 정보를 알려준다.
즉, 루트 서버는
“이 도메인의 끝부분을 담당하는 서버는 어디에 있는가?”
를 찾는 과정에 도움을 준다.
5단계: TLD DNS 서버를 확인한다
예를 들어 example.com이라는 도메인을 조회한다고 생각해보자.
루트 DNS 서버는 .com을 담당하는 TLD(Top-Level Domain) DNS 서버에 대한 정보를 제공한다.
TLD DNS 서버 역시 example.com의 실제 웹서버 IP 주소를 직접 관리하는 것이 아니다.
대신 해당 도메인을 관리하는 권한 있는 DNS 서버(Authoritative DNS Server)가 어디에 있는지를 알려준다.
국가 코드 도메인인 .kr을 사용하는 경우에는 .kr을 담당하는 DNS 계층을 거치게 된다.
6단계: 권한 있는 DNS 서버에서 정보를 찾는다
마지막으로 리졸버는 해당 도메인의 권한 있는 DNS 서버에 필요한 정보를 요청한다.
이 서버는 해당 도메인의 DNS 레코드를 관리한다.
예를 들어 웹사이트의 주소를 나타내는 A 레코드나 IPv6 주소를 나타내는 AAAA 레코드 등이 여기에 포함될 수 있다.
권한 있는 DNS 서버가 해당 도메인의 IP 주소 정보를 반환하면 DNS 조회의 핵심 과정이 완료된다.
7단계: IP 주소가 사용자에게 전달된다
리졸버는 조회한 DNS 정보를 사용자 컴퓨터에 전달한다.
이제 컴퓨터는 도메인 이름만 알고 있는 상태에서 실제 연결에 사용할 IP 주소를 알게 된다.
전체 과정을 단순화하면 다음과 같다.
도메인 입력
↓
브라우저·운영체제의 캐시 확인
↓
DNS 리졸버에 질의
↓
루트 DNS 서버
↓
TLD DNS 서버
↓
권한 있는 DNS 서버
↓
IP 주소 확인
↓
웹서버 연결
실제 환경에서는 캐시된 정보가 존재할 수 있기 때문에 모든 접속에서 이 모든 단계를 항상 처음부터 수행하는 것은 아니다.
DNS 캐시는 왜 필요한가?
DNS 조회 결과를 매번 처음부터 확인한다면 인터넷 전체에서 불필요한 DNS 요청이 크게 늘어날 수 있다.
그래서 DNS는 캐시(Cache)를 적극적으로 사용한다.
예를 들어 어떤 사용자가 특정 웹사이트에 접속해 IP 주소를 확인했다면 그 결과가 일정 기간 동안 캐시에 저장될 수 있다.
다음에 같은 도메인에 접속할 때 유효한 캐시 정보가 있다면 복잡한 DNS 조회 과정을 다시 수행하지 않고 저장된 정보를 사용할 수 있다.
이 때문에 DNS 캐시는 웹 접속 속도와 DNS 시스템의 효율성에 중요한 역할을 한다.
TTL은 무엇인가?
DNS 캐시와 관련해 자주 등장하는 용어가 TTL(Time To Live)이다.
DNS에서 TTL은 특정 DNS 정보가 캐시에 얼마나 오래 유지될 수 있는지를 결정하는 시간값이다.
예를 들어 어떤 DNS 레코드의 TTL이 설정되어 있다면 리졸버는 해당 기간 동안 정보를 캐시하고 사용할 수 있다.
TTL이 만료되면 최신 정보를 확인하기 위해 다시 DNS 조회가 이루어질 수 있다.
따라서 웹사이트의 서버 IP 주소를 변경했는데도 일부 사용자가 이전 서버로 접속하는 것처럼 보이는 경우 DNS 캐시와 TTL이 관련되어 있을 수 있다.
DNS 레코드에는 어떤 종류가 있을까?
DNS에는 단순히 도메인과 IP 주소만 연결하는 것 이상의 정보가 저장될 수 있다.
대표적인 DNS 레코드는 다음과 같다.
| 레코드 | 주요 역할 |
|---|---|
| A | 도메인을 IPv4 주소와 연결 |
| AAAA | 도메인을 IPv6 주소와 연결 |
| CNAME | 다른 도메인 이름을 가리킴 |
| MX | 이메일을 처리하는 메일 서버 지정 |
| NS | 해당 도메인의 권한 있는 DNS 서버 지정 |
| TXT | 도메인과 관련된 다양한 텍스트 정보 저장 |
특히 MX 레코드는 이메일 서비스와 관련이 있고, TXT 레코드는 도메인 소유권 확인이나 이메일 보안 설정 등 다양한 용도로 사용된다.
DNS가 작동하지 않으면 어떻게 될까?
인터넷 연결 자체는 정상인데 특정 웹사이트에 접속되지 않는 경우 DNS 문제가 원인일 수도 있다.
브라우저가 도메인 이름을 IP 주소로 변환하지 못하면 해당 서버에 연결할 주소를 찾기 어렵기 때문이다.
이 경우에는 다음과 같은 현상이 나타날 수 있다.
- 특정 웹사이트만 접속되지 않음
- “DNS 서버를 찾을 수 없음”과 같은 오류가 나타남
- 도메인 이름으로는 접속되지 않지만 IP 주소로는 연결되는 경우
- DNS 서버 변경 후 접속이 정상적으로 이루어지는 경우
다만 웹사이트 접속 실패의 원인이 항상 DNS인 것은 아니다.
인터넷 연결, 서버 장애, 방화벽, 브라우저 문제 등 다른 원인도 함께 확인해야 한다.
DNS와 웹서버는 같은 것이 아니다
DNS를 처음 접하면 DNS 서버와 웹서버를 같은 것으로 생각하기 쉽다.
하지만 둘의 역할은 다르다.
DNS 서버는 도메인과 관련된 정보를 제공하고, 웹서버는 실제 웹페이지와 데이터를 제공한다.
예를 들어 사용자가 example.com을 입력하면 DNS는 해당 도메인에 연결할 IP 주소를 찾는 데 도움을 준다.
그 후 브라우저는 해당 IP 주소의 서버와 HTTP 또는 HTTPS 통신을 시작하고 웹페이지 데이터를 요청한다.
따라서 일반적인 웹 접속 과정을 단순화하면
DNS 조회 → IP 주소 확인 → HTTP/HTTPS 연결 → 웹페이지 요청 및 응답
순서로 이해할 수 있다.
DNS와 HTTPS는 어떤 관계가 있을까?
DNS와 HTTPS는 서로 다른 역할을 한다.
DNS는 어떤 서버에 연결할 것인지 찾는 과정과 관련되어 있고, HTTPS는 웹브라우저와 서버 사이에서 데이터를 안전하게 주고받는 과정과 관련되어 있다.
따라서 웹사이트에 접속할 때 DNS를 통해 서버의 주소를 확인한 다음 HTTPS 연결을 설정하는 식으로 여러 기술이 이어질 수 있다.
이러한 관계를 이해하면 인터넷이 단순히 웹브라우저 하나로 작동하는 것이 아니라 여러 기술이 서로 연결되어 작동한다는 것을 알 수 있다.
DNS는 인터넷의 주소 체계를 담당하는 핵심 시스템이다
DNS는 단순히 도메인 이름을 IP 주소로 바꾸는 기능만 제공하는 것처럼 보이지만 실제로는 인터넷의 주소 체계를 유지하는 중요한 분산 시스템이다.
사용자는 기억하기 쉬운 도메인 이름을 사용하고, 컴퓨터와 네트워크는 IP 주소를 이용해 실제 서버와 통신한다.
그 사이에서 DNS가 이름과 네트워크 주소를 연결해주기 때문에 우리가 복잡한 숫자 주소를 기억하지 않고도 수많은 웹사이트에 접속할 수 있다.
정리하면 다음과 같다.
도메인 이름 → DNS 조회 → IP 주소 확인 → 서버 연결 → HTTP/HTTPS 통신
웹사이트가 화면에 나타나기까지는 이처럼 여러 단계의 네트워크 기술이 서로 연결되어 작동한다




댓글 0
첫 댓글을 남겨보세요.