DNS란 무엇인가요?
분야: 백엔드
IP 주소는 변환될 수 있으며, 기억하기 어렵기 때문에 대부분의 웹 서비스는 도메인 주소를 사용합니다. DNS(Domain Name System) 는 도메인 주소에 대응되는 원격 호스트 IP 주소를 관리하고 질의할 수 있는 시스템 혹은 이를 이용하기 위한 프로토콜을 의미합니다. DNS 시스템 내에서 도메인 주소를 관리하는 서버들을 네임 서버라고 부르며, 계층적인 형태로 존재합니다.
DNS 질의 과정을 설명해 주세요. 🤓
DNS를 이용해 IP 주소를 찾는 과정에는 로컬 네임 서버, 루트 네임 서버, TLD 네임 서버, 권한 네임 서버가 등장합니다.
- 로컬 네임 서버(Local Name Server) 는 통신사 DNS, 구글 DNS 처럼 클라이언트와 가장 가까이 존재하는 네임 서버입니다.
- 루트 네임 서버(Root Name Server) 는 루트 도메인을 관리하는 서버이며, TLD 네임 서버의 주소를 알고 있습니다.
- TLD 네임 서버(Top-level Domain Server) 는 .com, .kr, .net을 관리하는 네임 서버입니다.
- 권한 네임 서버(Authoriative Name Server) 는 네트워크를 운영하는 기관에서 보유하고 있는 도메인을 관리하는 네임 서버입니다. ex) .maeil-mail.kr을 관리하고, api.maeil-mail.kr, mail.maeil-mail.kr 의 정보를 관리하는 네임 서버
api.maeil-mail.kr의 IP 주소를 찾는 과정을 예시로 설명해 드리겠습니다.
가장 먼저 클라이언트는 로컬 네임 서버에 api.maeil-mail.kr의 IP 주소를 질의합니다. 만약, 로컬 네임 서버에서 값을 찾지 못했다면 로컬 네임 서버는 루트 네임 서버에게 IP 주소를 물어봅니다. 요청을 받은 루트 네임 서버는 .kr TLD 네임 서버 주소를 응답합니다. 이를 받은 로컬 네임 서버는 .kr TLD 네임 서버에 다시 요청을 보내고, maeil-mail.kr 권한 네임 서버의 주소를 응답 받습니다. 최종적으로 로컬 네임 서버는 권한 네임 서버에서 api.maeil-mail.kr IP 주소를 받아서 클라이언트에게 응답합니다.