Computer Science
Domain Name System
KYBee
2022. 11. 29. 14:47
Domain Name System
- 계층구조를 가지는 분산 데이터베이스(DNS Server)를 이용하여 숫자로 구성된 IP 주소를 실제 문자열로 해석해주는 역할을 함
- 네트워크 Application 계층에서 동작하는 서비스
DNS 역할
- IP 주소와 도메인 네임을 매핑
- 사용자가 입력하는 문자열에 해당하는 서버의 실제(IP) 주소를 돌려줌
- 서버의 부하 분산
- 하나의 도메인 네임에 여러 개의 IP 주소를 연결함
- DNS Round Robin Load Balancing
- 도메인 질의 Query를 입력받는 경우, 그 도메인에 등록된 여러 개의 IP 리스트 중에서 라운드 로빈 방식으로 사용자에게 한 개의 IP를 리턴하여 알려주는 방식
- 여러 사용자가 다수의 웹 서버에 나누어 접속하게 되면서 서버의 부하가 분산됨
DNS 계층 구조
- Root DNS Server (루트 DNS 서버)
- TLD Server (Top Level Domain 서버)
- Authoritative DNS Server (책임 DNS 서버)
- Local DNS Server (로컬 DNS 서버) - default name server

이렇게 분산하여 계층화 한 이유? 왜 하나의 DNS 서버가 아니라 여러개인지?
- 하나의 서버로 DNS 서비스를 구현한다면 다양한 문제가 발생한다.
- DNS 서버가 다운 되는 경우, 모든 서비스가 멈춘다.
DNS 질의 종류
1. Recursive Query

- 클라이언트에 최종 결과값을 반환
- 클라리언트의 도메인 네임 질의 요청을 네임서버가 직접 탐색하여 결과값을 반환
2. Iterative Query

- 자신이 직접 관리하지 않는 질의 요청이 있는 경우 질의에 응답 가능한 네임서버 목록을 응답
- 응답받은 네임서버로 다시 질의를 요청하여 결과를 받음
DNS 동작 과정

- 우선 사용자가 웹 브라우저에 www.example.com을 입력한다.
- 클라이언트는 local DNS server에 recursive 질의를 하여 local server의 캐시에 www.example.com에 대한 매핑이 있는지 확인한다. (없다고 가정)
- local DNS 서버는 www.example.com에 대한 정보가 없으므로 iterative 질의를 다른 Name Server (Root, TLD, Authoritative)로 전송하여 결과를 응답한다.
- local DNS 서버는 www.example.com과 아이피를 캐싱하고 클라이언트에게 돌려준다.
- 클라이언트는 응답으로 받은 IP 주소를 통해 실제 서버와 통신한다.