DNS란 뭐고 네임서버란 건 뭐임?
수많은 도메인 등록 방법과 도메인 이전 방법을 설명하는 글에 등장하셔서 사람 머리 아프게 하는데 으뜸인 DNS 서버란 것. 업체들 설명에서도 너무 국소적으로 설명하거나 너무 정의론 측면에서 설명하다 보니 혼돈 그 자체임. 거기다 이름도 DNS 서버, 네임서버, 도메인 네임서버 지 맘따라 다 다르게 부르니 서로 다른 것으로 오해하게도 만듦.
일단 DNS(Domain Name System)는 범국제적 단위로 웹사이트의 IP 주소와 도메인 주소를 이어주는 환경/시스템임. 그리고 이 안에서 부분적으로 지 역할을 하는 서버를 풀네임으로 DNS 서버라고 하고, 앞에서 말한 것처럼 중간 짤라먹고 다르게 말하기도 함.
DNS 개념은 어찌 돌아감?
도메인 개념 글에서도 썼지만, 웹사이트의 데이터가 저장되어 있는 호스팅 서버는 인터넷 회선이 연결된 컴퓨터/장치인지라 IP 주소가 할당되어 있고 이 주소가 실제 웹사이트 주소라 할 수 있음. DNS 서버는 이런 IP 주소를 특정 도메인 주소와 같다는 기록을 저장해두고, 인터넷 사용자들이 도메인 주소를 검색했을 때 IP 주소로 연결되도록 해줌.
DNS란 게 어찌 돌아가는지 간단하게 예를 들어 보겠음. 한 사람이 브라우저에서 Nesite.com을 검색했다면, 먼저 DNS 서버로 도메인 주소가 전달이 됨. 그리고 서버 내부에서 도메인 주소를 토대로 “Nesite.com = 12.123.123.123”이라는 항목을 찾아내고 다시 브라우저에게 12.123.123.123의 IP 주소를 갖고 있는 호스팅 서버(해당 웹사이트 데이터가 저장된 곳)으로 가라고 지시함. 그러면 브라우저가 다시 IP 주소로 접속해서 웹사이트가 보이게 됨. 브라우저가 잠깐 사이에 이런 과정을 처리하는 거임.
DNS 서버 종류 구분
물론, DNS 서버가 초고성능으로 세상에 단 하나만 있다면 위 내용 그대로 이해하면 되겠지만, 그렇게 간단하지만은 않음. 일단 도메인 수가 넘모 많기 때문에, DNS 서버 종류를 계층화해서 단계적으로 처리한다는 게 골자라고 보면 될 것 같음. 특히, 도메인의 총 관리는 ICANN에서 하기 때문에, DNS 서버도 최상위 도메인에서 개인 도메인의 서브 도메인까지 도메인 이름의 분류와 마찬가지로 디렉토리/계층 형태로 구분된다는 걸 생각하면 더 쉽게 이해할 수 있을 거라고 봄.
#Root DNS Server
ICANN이 직접 관리하는 절대 존엄 서버로, TLD DNS 서버 IP들을 저장해두고 안내하는 역할을 함.
#TLD(최상위 도메인) DNS Server
도메인 등록 기관(Registry)이 관리하는 서버로, Authoritative DNS 서버 주소를 저장해두고 안내하는 역할을 함. 어떤 도메인 묶음이 어떤 Authoritative DNS Server에 속하는지 아는 이유는 도메인 판매 업체(Registrar)의 DNS 설정이 변경되면 도메인 등록 기관(Registry)으로 전달이 되기 때문임.
#Authoritative DNS Server
실제 개인 도메인과 IP 주소의 관계가 기록/저장/변경되는 서버. 그래서 권한의 의미인 Authoritative가 붙음. 일반적으로 도메인/호스팅 업체의 ‘네임서버’를 말하지만, 개인 DNS 서버 구축을 한 경우에도 여기에 해당함.
#Recursive DNS Server
인터넷 사용자가 가장 먼저 접근하는 DNS 서버임. 위 3개의 DNS 서버를 매번 거친다면 효율이 구데기일 수밖에 없으니, 한 번 거친 후 얻은 데이터를 일정 기간(TTL/Time to Live) 동안 캐시라는 형태로 저장해 두는 서버임. 직접 도메인과 IP 주소의 관계를 기록/저장/변경하지는 않고 캐시만을 보관하기 때문에, Authoritative와 비교되는 의미로 반복의 Recursive가 붙음. 대표적인게 KT/LG/SK와 같은 ISP(통신사) DNS 서버가 있고, 브라우저 우회 용도로 많이 쓰는 구글 DNS, 클라우드플레어와 같은 Public DNS 서버가 있음.
얄딱구리한 구분으로 혼란스럽게 만드는 웹문서들이 많지만 DNS 서버는 모두 위 4가지 DNS 서버 종류 중 하나에 속함. 특히, 브라우저는 캐시가 저장된 Recursive 서버를 사용하고, 실제 네임서버를 설정하는 곳은 Authoritative 서버라는 점만 주의해서 이해하면 가장 좋을 듯함. 나머 두 서버는 컨트롤할 수 있는 영역도 아니고 언급되는 경우도 적으니 전반적인 이해를 위해서만 요런게 있네~ 정도로 생각하면 좋겠음.
전체적인 DNS 동작 원리
이제 예를 들어서 전체적으로 어찌 돌아가는지 보겠음.
- 브라우저에서 Nesite.com을 검색하고, 사용하고 있는 통신사인 KT DNS 서버에게 도메인 주소에 해당하는 IP 주소를 요청함(브라우저 기본 DNS 설정이 통신사 DNS 서버이기 때문)
- ISP 서버에선 캐시 데이터가 없다는 걸 확인하고 루트 DNS 서버에게 어디로 가야 하는지 요청함(캐시가 있다면 8.로 건너 뜀.)
- 루트 서버는 TLD DNS 서버 주소만 관리하기 때문에, ***.com 도메인을 보고는 COM 최상위 도메인을 관리하는 TLD DNS 서버 주소를 안내함.
- ISP 서버는 COM 서버에게 어디로 가야 하는지 다시 요청함.
- COM 서버는 가비아 DNS 서버에서 해당 도메인이 관리되고 있는 걸 확인하고 안내함.
- ISP 서버는 가비아 서버에게 또 다시 요청함.
- 가비아 서버는 “Nesite.com = 12.123.123.123”이라는 정보를 확인하고 이 IP를 알려줌. 동시에 ISP 서버는 해당 정보를 캐시로 기록해 둠.
- ISP 서버는 브라우저에게 힘들게 알아 낸 12.123.123.123 주소를 안내함.
- 브라우저는 12.123.123.123 IP 주소를 갖고 있는 호스팅 서버에게 웹사이트를 출력하라고 요청함.
- 드디어 보임.
힘든 싸움이었다. 흙. 이렇게 크게 한 번 보고 나면 도메인/호스팅 업체의 네임서버 설정이 실제 인터넷 사용자들에게 어떻게 영향을 미치고, 네임서버 변경 시 도메인 전파 시간이란 게 왜 발생하는 건지 이해가 쉽게 될 거라고 봄.
속도 상관 Yes, 무료 DNS 서버가 오히려 좋아.
이미 사용하고 있는 도메인 업체의 네임서버 서비스 외에도 네임서버 변경 설정을 통해 외부의 네임서버 또한 사용 가능하기 때문에 어떤 걸 쓰는지에 따라 웹사이트 속도에 잠재적인 영향을 줌. 물론, 위에서 이해한 것처럼 ISP 서버에 캐시된 데이터가 있기 때문에 가장 말단에 있는 Authoritative 네임서버의 사양이 영향을 주지 않는다고 생각할 수 있겠지만, 아무리 좋은 ISP 서버라고 해도 캐시 적중률이 100%에 수렴한다는 건 있을 수 없기 때문에 어찌되었건 중요함(어떻게 측정하냐에 따라 다르겠지만 대충 70~90% 정도라고 함).
성능 면에서 보자면, 도메인/호스팅 업체에서 제공하는 무료 네임서버가 가장 하찮고, VPS 호스팅을 사용하고 있다면 이 쪽도 상당히 괜찮지만, 아예 클라우드플레어나 구글 DNS(Public DNS 아님)를 사용하는 게 가장 효율적임.
해외 DNS 서버 속도 비교 사이트임. 볼 부분은 Resolver Simulation / Uptime 항목을 보고 판단하면 되겠지만 결국은 모든 면에서 가장 앞대가리인 클라우드플레어 네임서버를 쓰는 게 답임. 거기다 무료 네임서버임. SSL 인증서도 주고 꽁짜인데 왜 안씀? 허지만 정작 내꺼는 귀찮아서 안바꾸고 있음. 아무튼 여기까지 뿌이~V