Hi, There!
안녕하세요, 바오밥입니다.
목차
- 개요
- 본문
- Reference
개요
DNS의 개념과, 서비스 유형, 흐름에 대해서 간단하게 정리하였습니다.
본문
DNS 개념
클라이언트가 서버에 이르기 위해선 서로의 IP 주소를 알고 있어야 합니다. 그러나, 매번 다른 IP 주소를 외우기란 쉽지 않습니다. 이를 개선하기 위해 등장한 것이 도메인 이름입니다. 즉 DNS(Domain Name Service)는 직역 그대로 도메인 네임을 제공하는 서비스입니다.
DNS는 전 세계에 배포되는 서비스로서 사람이 읽을 수 있는 도메인 네임을 IP 주소로 변환하여 컴퓨터 간 통신이 원활하도록 도움을 줍니다. 다시 말해 인터넷의 배포된 DNS 시스템은 도메인 네임을 IP 주소와의 매핑을 관리하는 것을 말합니다.
DNS 서버는 클라이언트가 보낸 요청을 IP 주소로 변환하여 최종 사용자가 도메인 이름을 웹 브라우저에 입력할 때 어떤 IP 주소(서버)에 연결할 것인지를 제어합니다. 이때, 클라이언트가 보내는 요청을 쿼리(Query)라고 합니다.
DNS 서비스 유형
신뢰할 수 있는 DNS
신뢰할 수 있는 DNS 서비스는 개발자가 Public DNS를 관리합니다. 신뢰할 수 있는 DNS 서버는 도메인에 대한 최종 권한이 있으며 재귀적 DNS 서버에 IP 주소 정보가 담긴 응답을 제공할 책임이 있습니다. 신뢰할 수 있는 DNS 서버로는 KT, 구글 등이 있습니다.
재귀적 DNS
클라이언트가 test.co.kr 이라는 주소를 질의하면 test의 네임 서버로 가서 co의 네임 서버가 어디냐고 다시 묻습니다. 이후 co 네임 서버로 가서 kr의 네임 서버가 어디냐고 다시 묻습니다. 이 과정을 반복하여 도메인 주소를 하나하나 반환 받습니다. 이를 재귀적 DNS라고 합니다. 재귀적 DNS 서버는 받아온 co나 kr의 도메인 주소를 캐싱하고 있다가 사용자가 요청하면 DNS 정보를 전달하는 중간자 역할을 수행합니다. 만약, 자신이 캐싱하고 있지 않는 쿼리가 들어오면 신뢰할 수 있는 DNS 서버에게 해당 쿼리를 요청합니다.
DNS 구성 요소
- 도메인 네임 스페이스 (Domain Name Space)
도메인 네임 스페이스란, 도메인 이름 영역을 말합니다. 도메인 네임 스페이스 계층의 경우 '.' 루트 DNS 서버를 최상위 서버라고 하며 그 하위 서버로 'kr', 'co' 등의 도메인 서버가 있습니다. - 네임 서버 (Name Server)
서버에서 주소를 변환 시키기 위해서는 도메인 네임 스페이스의 트리 구조에 대한 정보가 필요합니다. 이를 기반으로 IP 주소로 변환하는 것을 네임 서비스라고 하며 이를 제공해 주는 디바이스를 네임 서버라고 합니다. - 리졸버 (Resolver)
DNS 클라이언트의 요청을 네임 서버로 전달해 주고 네임 서버로부터 도메인 이름과 IP 주소를 받아 클라이언트에게 제공하는 기능을 수행합니다.
DNS 트래픽 흐름
www.naver.com 질의 과정은 다음과 같습니다.
- 클라이언트가 로컬 DNS에게 www.naver.com 를 질의합니다.
- 로컬 DNS는 루트 DNS에게 요청을 전달합니다.
- 루트 DNS는 www.naver.com 중 아무런 도메인 값도 반환하지 못합니다. 즉 응답해줄 수 없기 때문에 com 도메인을 관리하는 네임 서버의 이름과 IP 주소를 반환합니다.
- 로컬 DNS는 반환받은 com NS에 www.naver.com 정보를 질의합니다.
- com NS는 www.naver.com를 반환하지 못합니다. 다만, ns.naver.com 이라는 도메인에서 웹을 관리하고 있다는 정보(ns.naver.com의 NS 정보)를 반환합니다.
- 로컬 DNS는 ns.naver.com NS에 www.naver.com를 질의합니다.
- ns.naver.com NS에서 www.naver.com 레코드를 가지고 있어 로컬 DNS에게 IP 주소를 반환합니다.
- 반환받은 로컬 DNS는 클라이언트에게 www.naver.com IP 주소를 전달합니다.
Reference
'Theory > Infrastructure & Network' 카테고리의 다른 글
[네트워크] 인증과 인가, 세션과 토큰, 그 사이에서 (0) | 2022.05.20 |
---|---|
URLs의 이해 (0) | 2021.09.03 |
웹 통신의 기초, HTTP 입문 (0) | 2021.08.31 |
MAPI와 IMAP의 차이 (0) | 2021.08.09 |
MPA, SPA의 이해 (0) | 2021.08.02 |