왜 DNS가 필요하게 되었을까?
DNS(Domain Name System)는 IP 주소 대신 사람이 이해하기 쉬운 도메인 이름을 사용하기 위해 등장
1. 초창기 인터넷 : ip 주소만 사용
인터넷이 처음 개발될 때(ARPANET 시대), 컴퓨터들은 IP 주소(예: 172.217.169.110)를 사용해서 서로 통신
- 문제점
- IP 주소는 사람이 기억하기 어려움 → 웹사이트마다 숫자를 외워야 했음
- IP 주소는 변경될 수 있음 → 서버가 이동하거나 변경되면 새로운 IP 주소를 알아야 함
- 인터넷이 커질수록 관리가 어려움 → IP를 일일이 기록하는 방식(Hosts 파일)로는 한계
2. HOSTS 파일 방식의 한계
인터넷 초기에는 hosts.txt라는 파일에 IP 주소와 도메인 이름을 직접 매핑해서 관리하였다.
// hosts.txt
172.217.169.110 google.com
142.250.185.206 youtube.com
이 hosts file 은 서버가 ip 주소를 바꿀 경우, 업데이터가 늦어질 수 있고 이름이 중복될 수도 있다는 문제점이 존재한다.
따라서 이를 해결하기 위해
- 호스트 이름에 계층 구조 사용
- 분산된 데이터베이스 이용(DNS)
DNS 란?
- 사람이 인식하기 쉬운 도메인 이름 → 서버가 인식하는 IP주소 로 변환하는 분산 데이터베이스 시스템
- DNS는 naver.com 과 같은 도메인 이름을 IP 주소로 변환해 브라우저가 인터넷 자원을 로드할 수 있도록 도와준다.
- 도메인 이름 : 체계적인 문자로 표현한 호스트 이름
- DNS는 여러 개의 DNS 서버 (혹은 네임 서버)들로 구성된 분산 시스템
- OSI 7계층 중에서 애플리케이션 계층에서 동작하는 프로토콜
- 기본적으로 UDP/53을 기반으로 사용하지만, 특수한 상황에서는 TCP/53 도 사용한다.
DNS의 전송 프로토콜
- UDP port 53
- 일반 DNS 질의 / 응답에 사용
- TCP port 53
- 영역 전송(Zone Transfer) 시, 사용
- 안정성을 위해 두 개 이상의 DNS 서버를 사용할 경우, Master(기본 서버)와 Slave(보조 서버) 간의 동기화가 필요한데,
- 이때 기본 서버의 정보를 이용해 보조 서버의 데이터를 최신 상태로 업데이트하는 작업을 영역 전송이라고 한다.
- 마스터 서버와 슬레이브 서버를 동기화할 때, 마스터(Primary) 서버에서 변경된 DNS 데이터를 슬레이브(Secondary) 서버로 전송하여 두 서버의 데이터가 동일하게 유지되도록 한다.
- 용량이 큰 경우(512bytes 초과 시) 사용
- 영역 전송(Zone Transfer) 시, 사용
DNS에서 UDP를 사용하는 이유
- 빠른 속도 (연결의 시작과 끝이 없음)
- DNS 질의는 신뢰성보다는 속도(빠른 응답)가 더 중요한 서비스
- DNS가 전송하는 데이터 패킷 사이즈는 매우 작다.
- UDP는 512 bytes를 넘어가지 않는 패킷만 전송이 가능하고, 오버헤드가 없어서 속도가 빠르다.
- 연결 상태 유지 불필요
- DNS 서버는 도메인 네임을 IP로 변경해주는 서비스를 제공하기 때문에 항상 많은 클라이언트를 수용해야 한다.
- UDP는 어떤 정보도 기록하지 않고, 유지할 필요가 없어서 TCP보다 UDP에서 동작할 때 더 많은 클라이언트를 수용할 수 있다.
DNS 구성요소
DNS는 분산시스템으로 도메인 이름을 분산하여 저장하는데 계층적 구조로 저장하고 관리한다.
- 도메인 네임 스페이스 (Domain Name Space) 라는 규칙(방법)으로 도메인 이름 저장을 분산한다.
- DNS는 분산 시스템으로 도메인 이름을 분산하여 저장하는데 계층적 구조로 저장하고 관리한다.
- 네임 서버 (Name Server) : 권한 있는 DNS 서버
- 해당 도메인의 IP 주소를 찾는 역할 담당
- 리졸버 (DNS Recursive Resolver) : 권한 없는 DNS 서버
- 클라이언트의 요청을 네임 서버로 전달하고, 찾은 정보를 클라이언트에게 제공하는 기능 담당
도메인 네임 스페이스 (Domain Name Space, 도메인 구조)

- DNS는 트리(Tree) 구조로 도메인을 관리
- ex. www.google.com 은 다음과 같은 트리 구조를 가질 수 있다.
(root)
├── com
│ ├── google
│ │ ├── www
- . (루트 도메인)
- com (최상위 도메인, TLD)
- google.com (2차 도메인)
- www.google.com (서브 도메인)
- 인터넷 상에서 사용되는 도메인은 전 세계적으로 고유하게 존재하는 이름
- 정해진 규칙 및 체계에 따라야 하고, 임의로 변경 및 생성될 수 없다.
- 도메인의 체계적인 분류와 관리를 위해 도메인 이름은 몇 개의 짧은 영문자를 . 으로 연결한 계층 구조를 가진다.
- 트리에 연결된 호스트는 자원 레코드로 표현
- 자원 레코드 : 네임서버가 관리하는 도메인 정보를 표현하는 데이터 구조
네임서버(DNS 서버)는 각 도메인에 대한 정보를 자원 레코드(RR) 형식으로 저장
- 자원 레코드 : 네임서버가 관리하는 도메인 정보를 표현하는 데이터 구조
// 자원 레코드 기본 저장 구조
[도메인] [TTL] [클래스] [타입] [값]
도메인: 해당 정보가 속한 도메인 이름 (예: www.google.com)
TTL(Time To Live): 캐싱되는 시간 (예: 300 → 300초 동안 유효)
클래스: 거의 항상 IN(Internet)
타입: 레코드 유형 (예: A, CNAME, MX 등)
값: 도메인에 대한 정보 (예: IP 주소, 별칭 등)
- 도메인 구조는 역트리 구조
- 루트 도메인 : 인터넷 도메인의 시작점
- 1단계 도메인 : 최상위 도메인, TLD (Top Level Domain) 이라고 함
- 국가명을 나타내는 국가최상위도메인(ccTLD, country code TLD)과 일반적으로 사용되는 일반최상위도메인(gTLD, generic TLD)으로 구분됨
- 2단계 도메인 : 조직의 속성을 구분하는 co(영리 기업), go(정부 기관) 등이 있다
- 3단계 도메인 : 조직이나 서비스의 이름을 나타내는 도메인 이름으로, 사용자가 원하는 문자열을 사용할 수 있다.
- 호스트 : 마지막에 위치
- 도메인을 표기할 때는 낮은 단계부터 최상위 도메인이 가장 뒤에 나타난다.
- ex. www.naver.com
네임 서버 (DNS 서버)
- 도메인은 도메인 계층 구조를 반영한 DNS 서버(네임 서버)에 저장 및 관리
- 각 네임 서버는 도메인 계층의 일부 영역을 담당하고, 그 영역에 속한 도메인을 관리
- 상위 계층의 네임 서버는 하위 계층의 도메인에 대한 정보를 관리 → 하위 계층 네임 서버의 ip 주소를 가지고 있음
- 최상위 계층인 루트 네임 서버의 ip 주소는 모든 DNS 서버가 등록하여 관리 (길잡이 역할)

- DNS 서버는 도메인 네임 스페이스를 위한 권한 있는 DNS 서버 와 권한 없는 DNS 서버 로 구분
- 권한 있는 DNS 서버 : ip 주소와 도메인 이름 매핑
- Root DNS 서버
- 최상위 네임 서버
- ICANN(DNS 총괄 기구)에서 관리
- 리졸버로 부터 발생한 DNS 요청에 대한 적절한 TLD DNS 서버의 ip 주소를 제공하는 역할
- ip 주소로 변환하기 위한 첫 번째 단계로, 책장에서 색인에 해당하는 부분으로 설명할 수 있으며 일반적으로 다른 더 특정한 위치에 대한 참조로 사용
- TLD DNS 서버
- .com, .net, .kr과 같은 top-level domain 별로 존재하는 DNS 서버로 도메인 등록 기관에서 관리
- Root DNS 서버에서 받은 요청을 처리하는 서버
- Authoritative DNS 서버의 IP 주소를 제공하는 역할
- ip주소 묶음
- Authoritative DNS 서버
- 실제로 우리가 원하는 도메인에 대한 Ip 주소를 매핑하는 서버 (1:1)
- 개인 도메인과 ip 주소의 관계가 저장
- 일반적으로 도메인 / 호스팅 업체의 네임 서버를 말함
- Root DNS 서버
- 권한 없는 DNS 서버 : 질의를 통해 ip 주소를 알아내거나 캐시
- Local DNS 서버 = ISP DNS 서버 = Resolver 서버 = Recursive DNS 서버
- 대표적으로 KT/LG/SK와 같은 ISP(통신사) DNS 있고, 브라우저 우회 용도로 많이 쓰는 구글 DNS, 클라우드플레어와 같은 Public DNS 서버가 있다.
- 루트 → TLD → 권한 네임 서버 순서로 내려가면서 질의
- 도메인에 대한 질의를 받은 리졸버는 설정된 DNS 서버로 DNS Query(질의)를 전달하고, DNS 서버로부터 정보(도메인 이름, IP 주소)를 응답 받아 클라이언트에게 제공하는 기능을 수행
- 권한 있는 DNS 서버 : ip 주소와 도메인 이름 매핑
→ 권한 있는 네임 서버는 도메인 정보를 저장하고 응답하는 역할, 권한 없는 네임 서버는 질의를 보내서 정보를 찾아오는 역할
DNS 작동 방식

DNS 동작 과정 전체 예시
- 웹 브라우저에 www.hanamon.kr을 입력한다.
- 웹 브라우저는 이전에 방문한적 있는지 찾는다.
- 브라우저 캐시 확인
- OS 캐시 확인
- 라우터 캐시 확인
- ISP 캐시 확인 (Recursive DNS Server)
- ISP에서 DNS Iterative하게 쿼리를 날린다.
- ISP는 Authoritative DNS 서버에서 최종적으로 IP 주소를 응답받는다.
- ISP는 해당 IP 주소를 캐시한다.
- 웹 브라우저에게 응답한다.
reference
https://github.com/jmxx219/CS-Study/blob/main/network/DNS.md
CS-Study/network/DNS.md at main · jmxx219/CS-Study
Computer Science && Tech Interview . Contribute to jmxx219/CS-Study development by creating an account on GitHub.
github.com
https://var-log.tistory.com/221
[책집필] 면접 질문 - DNS
프론트엔드와 백엔드 개발자 그리고 서버 엔지니어의 기술 면접 질문으로 나올 수 있는 질문이다. DNS 에 대해 설명하세요 1. 30초 답변: DNS(Domain Name System)는 컴퓨터가 통신을 하는데 사용하는 숫
var-log.tistory.com
DNS란? (도메인 네임 시스템 개념부터 작동 방식까지) - 하나몬
이 게시물의 중요 포인트 DNS(도메인 네임 시스템)이 사람이 읽을 수 있는 도메인 이름(www.hanamon.kr)을 IP 주소로 변환하는 시스템이라는 것은 쉽게 알 수 있습니다. 이번 글에서는 이렇게 도메인
hanamon.kr
'네트워크' 카테고리의 다른 글
[네트워크] 로드 밸런싱(Load Balancing) (0) | 2025.04.01 |
---|---|
[OS] 페이지 교체 알고리즘 (Page Replacement Algorithm) (0) | 2025.03.20 |
[네트워크] DNS와 웹 통신 흐름 (0) | 2025.03.17 |
[네트워크] 3-way handshake, 4-way handshake (0) | 2025.03.03 |
[네트워크] HTTP & HTTPS (0) | 2025.02.27 |