인터넷을 사용할 때 우리는 매일 수많은 웹사이트에 접속합니다.
브라우저 주소창에 원하는 사이트의 도메인을 입력하면 몇 초도 지나지 않아 해당 웹페이지가 나타납니다. 너무 자연스럽게 이루어지는 과정이라 그 사이에서 어떤 일이 일어나는지 생각해볼 기회는 많지 않습니다.
하지만 컴퓨터는 우리가 사용하는 도메인 이름만 보고 서버를 찾아가는 것이 아닙니다.
인터넷에서 서버를 찾기 위해서는 IP 주소가 필요하며, 사람이 입력한 도메인을 IP 주소와 연결해주는 과정에서 중요한 역할을 하는 것이 DNS입니다.
DNS란 무엇일까?
DNS는 Domain Name System의 약자입니다.
인터넷에서 사용하는 도메인 이름을 해당 서버의 IP 주소와 연결해주는 시스템이라고 이해하면 쉽습니다.
사람은 숫자로 이루어진 IP 주소보다 google.com과 같은 도메인 이름을 기억하기가 훨씬 편합니다.
하지만 인터넷에서는 실제 서버의 위치를 찾을 때 IP 주소가 사용됩니다.
DNS는 사람이 기억하기 쉬운 도메인과 컴퓨터가 사용하는 IP 주소 사이를 연결하는 역할을 합니다.
DNS를 전화번호부에 비유하는 이유
DNS를 설명할 때 전화번호부에 비유하는 경우가 많습니다.
우리가 누군가에게 전화를 걸 때 모든 전화번호를 외우기보다는 연락처에 저장된 이름을 찾아 전화를 겁니다.
인터넷에서도 비슷한 과정이 이루어집니다.
사용자는 웹사이트의 도메인을 입력하지만 실제 통신에는 해당 서버의 IP 주소가 필요합니다.
DNS가 도메인에 연결된 IP 주소를 찾아주는 역할을 하기 때문에 인터넷의 전화번호부와 비슷하다고 설명할 수 있습니다.
웹사이트 주소를 입력하면 무슨 일이 일어날까?
브라우저에 도메인을 입력하면 컴퓨터는 해당 도메인과 연결된 IP 주소를 확인해야 합니다.
먼저 이전에 확인했던 DNS 정보가 컴퓨터나 브라우저 등에 저장되어 있는지 확인할 수 있습니다.
필요한 정보가 없다면 설정된 DNS 서버에 해당 도메인의 IP 주소를 문의합니다.
DNS 조회 과정에서 필요한 정보를 찾아 IP 주소가 확인되면 브라우저는 그 주소에 있는 웹서버로 접속을 시도합니다.
서버가 요청에 응답하면 필요한 웹페이지 데이터를 받아 화면에 표시하게 됩니다.
DNS 서버는 왜 여러 단계로 구성될까?
인터넷에는 매우 많은 도메인이 존재합니다.
하나의 DNS 서버가 전 세계 모든 도메인 정보를 직접 관리하는 방식은 현실적으로 효율적이지 않습니다.
DNS는 여러 서버가 역할을 나누어 필요한 정보를 찾아가는 구조를 사용합니다.
DNS 조회 과정에서는 상황에 따라 루트 DNS 서버, 최상위 도메인 서버, 권한 있는 DNS 서버 등의 정보가 활용될 수 있습니다.
각 단계에서 다음에 확인해야 할 위치를 안내받으면서 최종적으로 해당 도메인에 설정된 정보를 찾게 됩니다.
루트 DNS 서버는 어떤 역할을 할까?
루트 DNS 서버는 DNS 구조에서 중요한 출발점 역할을 합니다.
특정 도메인의 IP 주소를 직접 모두 가지고 있는 것이 아니라 해당 도메인 정보를 어디에서 확인해야 하는지 안내하는 역할을 합니다.
예를 들어 .com이나 .net 같은 최상위 도메인을 담당하는 서버를 찾을 수 있도록 필요한 정보를 제공합니다.
최상위 도메인 서버란?
최상위 도메인은 흔히 TLD라고 부릅니다.
.com, .net, .org, .kr 등이 대표적인 예입니다.
TLD 서버는 해당 영역에 속한 도메인의 정보를 관리하는 권한 있는 DNS 서버를 찾는 데 필요한 정보를 제공합니다.
이 과정을 거쳐 실제 도메인에 설정된 DNS 정보를 관리하는 서버까지 찾아갈 수 있습니다.
권한 있는 DNS 서버의 역할
권한 있는 DNS 서버는 특정 도메인에 대한 DNS 레코드를 관리합니다.
여기에는 도메인과 연결된 IP 주소를 비롯해 이메일 서버나 다른 서비스 연결에 필요한 여러 정보가 저장될 수 있습니다.
DNS 조회가 최종 단계에 도달하면 필요한 DNS 레코드를 확인하고 그 결과가 요청한 쪽으로 전달됩니다.
DNS 캐시는 왜 필요할까?
매번 웹사이트에 접속할 때마다 처음부터 모든 DNS 조회 과정을 반복한다면 시간이 더 걸리고 DNS 서버에도 불필요한 요청이 많아질 수 있습니다.
이를 줄이기 위해 DNS 정보를 일정 시간 저장해두는 캐시가 사용됩니다.
이전에 조회했던 도메인의 정보가 아직 유효하다면 저장된 정보를 이용해 더 빠르게 IP 주소를 확인할 수 있습니다.
다만 DNS 설정을 변경했을 때는 기존 캐시 때문에 새로운 정보가 즉시 보이지 않는 경우도 있습니다.
DNS 레코드란 무엇일까?
DNS에는 목적에 따라 여러 종류의 레코드가 사용됩니다.
A 레코드는 도메인을 IPv4 주소와 연결할 때 사용됩니다.
AAAA 레코드는 IPv6 주소와 연결할 때 사용됩니다.
CNAME 레코드는 특정 도메인을 다른 도메인 이름과 연결하는 데 활용됩니다.
MX 레코드는 해당 도메인의 이메일을 처리하는 메일 서버와 관련된 정보를 지정할 때 사용됩니다.
이 밖에도 다양한 DNS 레코드가 있으며 웹사이트나 이메일 서비스를 설정할 때 필요한 레코드가 달라질 수 있습니다.
DNS 설정을 변경하면 바로 적용될까?
도메인의 DNS 정보를 변경했다고 해서 모든 인터넷 환경에서 동시에 새로운 정보가 보이는 것은 아닙니다.
기존 DNS 정보가 여러 곳에 일정 시간 캐시되어 있을 수 있기 때문입니다.
DNS 레코드에는 TTL이라는 값이 있으며 해당 정보를 얼마나 오랫동안 캐시에 보관할지 결정하는 데 사용됩니다.
따라서 도메인의 서버를 변경했는데도 일부 환경에서 이전 사이트가 나타난다면 DNS 정보가 아직 갱신되지 않은 경우도 생각해볼 수 있습니다.
DNS에 문제가 생기면 어떻게 될까?
DNS 조회가 정상적으로 이루어지지 않으면 서버 자체가 정상적으로 작동하고 있어도 사용자가 도메인을 통해 웹사이트에 접속하지 못할 수 있습니다.
도메인 설정 오류, 잘못된 DNS 레코드, DNS 서버 장애 등 여러 원인이 있을 수 있습니다.
이 때문에 웹사이트 접속에 문제가 생겼을 때 서버 상태뿐 아니라 도메인과 DNS 설정도 함께 확인할 필요가 있습니다.
DNS와 웹호스팅은 서로 다른 역할
DNS와 웹호스팅을 같은 것으로 생각하기 쉽지만 역할은 다릅니다.
웹호스팅은 웹사이트의 파일과 데이터를 저장하고 방문자의 요청에 응답하는 서버 환경을 제공합니다.
DNS는 사용자가 입력한 도메인이 어느 서버를 찾아가야 하는지 연결하는 역할을 합니다.
따라서 새로운 웹호스팅으로 사이트를 이전할 때는 도메인의 DNS 설정을 변경해 새로운 서버로 연결해야 하는 경우가 있습니다.
DNS를 이해하면 웹사이트 구조가 쉬워진다
DNS는 평소 인터넷을 사용할 때 눈에 직접 보이지 않지만 웹사이트 접속 과정에서 매우 중요한 역할을 합니다.
사용자가 도메인을 입력하면 DNS를 통해 필요한 서버의 주소를 찾고, 확인된 IP 주소를 이용해 서버와 통신하게 됩니다.
처음에는 DNS 서버와 여러 종류의 레코드가 복잡하게 느껴질 수 있습니다.
하지만 도메인은 사람이 사용하는 주소, IP 주소는 컴퓨터가 서버를 찾는 데 사용하는 주소, DNS는 두 정보를 연결해주는 시스템이라고 먼저 이해하면 전체 구조를 파악하기가 쉬워집니다.
이 기본 원리를 알고 있으면 나중에 도메인을 웹호스팅에 연결하거나 서버를 이전하고 DNS 설정을 변경할 때도 각각의 설정이 어떤 역할을 하는지 이해하는 데 도움이 됩니다.