[네트워크] DNS, 인터넷 상의 전화번호부

Woonil·2025년 5월 9일

컴퓨터 네트워크

목록 보기
9/9
post-thumbnail

이번에 학교 중앙 동아리 홈페이지 프로젝트를 시작하며, 학교측에 우리의 서비스와 학교측 도메인 주소(OO.ac.kr)를 연결하기 위해 요청하는 작업이 필요했다. 그런데 요청서 양식에 고정 IP 대역을 요구하는 것이었다. 그래서 '읭? 우리는 AWS에 서비스를 배포할 것인데 IP 대역을 어떻게 고정시키지?' 해서 궁금해서 담당부서에 문의를 해보았다. 다행히 '그러한 경우에는 그냥 고정 IP 주시면 저희 DNS에 등록해줍니다.'라고 하셨다.

아는만큼 보인다고, DNS에 대해 최근에 복습한 것이 떠오르면서 단번에 직원분의 답변이 이해가 갔다. 요즘 노션에 썩히고 있던 내 TIL 노트들을 하나씩 블로그로 꺼내는 작업을 진행하고 있는데, 이참에 DNS 개념에 대해서 정리해보고자 한다.

DNS란 한마디로 도메인에 해당하는 IP 주소를 기록해놓은 계층적 시스템이라 할 수 있다.

휴대폰에 ‘울엄마’라고 등록한 엄마한테 전화를 걸 때, 휴대폰은 전화번호부에 등록된 ‘울엄마’를 찾고 거기에 등록된 전화번호를 찾아서 전화를 건다. 여기서 중요한 건 결국 ‘전화번호’로 전화를 거는 것이다. 이와 마찬가지로 ‘google.com’에 접속하려면 그에 대응하는 ‘IP 주소’를 찾아야 한다. 따라서 이 매칭 정보를 제공해주는 시스템이 필요하며 그 시스템이 DNS이다.

DNS(Domain Name System)는 도메인과 관련한 시스템으로써 인터넷에 참여하는 모든 리소스의 계층적 네이밍 시스템으로, IP 주소와 도메인 이름을 결정하는 서비스를 응용 프로세스에 제공한다.

🤔개념

📛도메인

인터넷 상에서 컴퓨터나 네트워크 리소스를 식별하는데 사용되는 이름으로, 사람이 알아볼 수 있는 문자열로 구성된다.

  • 서브도메인: 도메인 중 문자열 앞에 추가 문자열이 붙은 도메인 ex) text.example.com
  • APEX 도메인: 도메인 중 앞에 추가 문자열이 없는 순수한 최상위 도메인 ex) example.com

www.naver.com

‘www’는 host name(호스트 네임)에 해당하고 ‘naver.com’은 domain(도메인)에 해당한다.

FQDN(Fully Qualified Domain Name)

http://api.www.example.com. 이 이에 해당한다.

🖥️네임 서버 (DNS 서버)

주어진 도메인에 해당하는 정보를 요청하는 쿼리(질의)를 ‘DNS Query’라고 한다. 이때, Name Server(NS)는 Zone File 기반으로 DNS 쿼리에 대해 응답하는 서버로, 계층적으로 구성된 네트워크에 분산되어 있으며 이곳에서 도메인 정보들이 저장되고 조회된다.

  • Domain Zone: 도메인의 정보를 담은 레코드의 집합 ex) www.example.com, post.example.com
  • Domain Zone: 정보를 저장한 텍스트 파일

로컬 DNS 서버

DNS Resolver로서 사용자와 NS 사이에 위치한 서버이며, 사용자의 클라이언트가 가장 먼저 질의를 요청하는 대상이다. 로컬 DNS 서버까지의 질의는 재귀적으로 수행하고, 이후에는 반복적 질의(루트 네임 서버, TLD 네임서버, …)를 통해 클라이언트에 응답하는 역할을 한다.

리졸버(resolver)

클라이언트의 요청에 따라 데이터를 반환하는 기술

보통 ISP(KT, SKT, LG U+ 등)마다 지정된 곳이 있으며, 사용자의 편의에 의해 변경될 수 있다.

  • DNS 캐시: 호스트 파일은 DNS 서버로부터 얻은 도메인 이름과 IP 주소의 테이블이 기록되어 저장된 파일로, 호스트 컴퓨터에 저장되며 일정한 시간이 지나면 자동적으로 삭제된다. 데이터를 임시 저장하여, 데이터 요청에 대한 성능을 높이기 위해 사용된다. 이는 DNS 쿼리를 빠르게 확인할 수 있고 추가 쿼리를 피할 수 있으므로 로드 성능이 향상된다.

그렇다면 DNS는 왜 계층적인 구조를 지니고 있는 것일까? 그 이유는 수억 개의 도메인을 여러 곳에서 관리하여 요청을 분산하기 위해서이다. NS 서버도 결국 서버이기 때문에 한정된 컴퓨팅 자원으로 이루어져있다.

따라서 DNS는 여러 요청을 분산하여 서버의 부담을 덜 수 있는 계층 구조를 택한 것이다. 이때, 계층은 최상위 도메인부터 차례대로 구성되어 있으며, 실제 레코드는 가장 마지막 계층에서 보관하고 처리하게 된다.

[출처: 생활코딩]

Root 네임 서버

DNS 계층 구조의 최상위 레벨로, 다음 단계인 TLDs(Top Level Domain)의 Zone File을 가진 NS 서버의 주소 정보를 가지고 있다. 루트 DNS 서버는 전 세계에 13개가 존재하며, 복사된 미러 서버가 존재한다. DNS Root의 주소는 각 DNS Resolver에 하드 코딩되어 있으며, 이 파일을 Root Hints File이라 부른다.

root domain: com.. 에 해당하며, 루트 DNS 서버가 담당

ICANN(Internet Corporation for Assigned Names and Numbers)에 의해 관리된다.

Root Hints File 확인

curl https://www.internic.net/domain/named.root 명령어 사용하여 확인 가능하다.

루트 네임 서버 - 위키백과, 우리 모두의 백과사전

TLD 네임 서버

TLD(top-level domain)을 관리하는 네임 서버로, DNS 계층 구조의 두 번째 레벨에 위치한다. 서브 도메인에 대한 네임서버 나 도메인의 권한 있는 네임서버 정보를 반환한다. com, org, net, edu와 같은 상위 레벨 도메인과 kr, uk, fr, ca, jp 같은 국가 도메인을 포함한다.ex) com, .us, .in, .gov, .org

ICANN의 지사인 IANA가 관리한다.

NS 서버

실제 도메인의 레코드를 가지고 있는 서버로, 최종적으로 맵핑된 주소를 확보할 수 있다.

🔢도메인 접속 과정

www.naver.com 에 접속하는 과정 중 도메인에 대응하는 IP 주소를 찾는 과정을 살펴보자.

  1. 브라우저는 메모리의 DNS 캐시에 찾으려는 도메인이 있는지 확인한다.
  2. hosts file에 해당 도메인이 있는지 확인한다.
  3. 브라우저가 PC에 설정된 로컬 DNS 서버에 해당 도메인과 호스트명의 IP를 갖고 있는지 질의한다(재귀적 질의).
  4. 로컬 DNS 서버에 도메인 주소의 정보가 캐싱되지 않은 경우, 루트 DNS 서버에 IP를 가져올 수 있는 경로(TLD 네임 서버의 주소)를 질의한다(반복적 질의: 3~5번 과정).
  5. 루트 DNS 서버는 접속하려는 확장자(ex .com)로 끝나는 도메인들을 담당하는 TLD 네임 서버의 IP 주소(네임 서버)를 반환한다.
  6. 해당 서버는 한 단계 상위 도메인(ex. naver.com)을 담당하는 서버의 IP 주소를 반환한다.
  7. 해당 서버는 여러 호스트 네임별 IP 주소 중 접속하고자 하는 도메인의 IP 주소(ex www.naver.com)를 반환한다.
  8. 로컬 DNS 서버는 브라우저에 결과 정보를 반환하고 클라이언트는 해당 도메인의 서버로 접속한다.

DNS에서 UDP를 사용하는 이유

한 마디로 ‘빠르고, 가볍기 때문’이라고 할 수 있다.

  • 빠른 응답 필요: DNS 조회는 웹 요청 전 수행되므로 짧고 빠른 왕복 시간이 필요하다. UDP는 3-way handshake 없어 TCP보다 빠르게 전송할 수 있다.
  • 작은 요청/응답 크기: 일반 DNS 질의의 요청/응답 크기는 보통 512 바이트 이내이기 때문에 작고 단순한 패킷을 전송하는 데 UDP가 더 적합하다.
  • 연결 상태 유지 불필요: 전 세계의 모든 DNS 트래픽을 처리해야 하는데 연결 상태를 유지해야 한다면 DNS 서버에 부담을 줄 것이다. 따라서 연결을 유지하지 않는 UDP가 더 적합하다.

👉DNS Record

DNS 서버가 해당 패킷을 받았을 때 어떤식으로 처리할 지를 나타내는 지침

Record Type

종류설명비유비고
A도메인을 서버의 IPv4로 직접 연결하며, 직통 연결이기 때문에 접속이 빠름A모형의 연결 다리로 도메인과 ip를 직접 연결하는 레코드도메인과 IP 간 일대다/다대일 매칭도 가능
CNAME (Canonical Name record, 표준적인 네임 레코드)하나의 도메인 네임을 다른 이름으로 매핑시키는 DNS의 리소스 레코드의 일종Name server를 C(See)하는 레코드무조건 다른 도메인 네임을 가리켜야 하며, 직접 IP 주소를 가리켜서는 안됨
NS특정 호스트의 IP 주소를 찾을 수 있는 네임 서버
MX해당 도메인과 연동되어 있는 메일 서버

참고자료

유튜브 AWS 강의실: DNS(Domain Name Service) 정리
DNS가 뭔가요? + 도메인, A Record, CName
[10분 테코톡] 조이,엔초의 DNS와 ARP
루트 네임 서버 - 위키백과, 우리 모두의 백과사전
인파님의 블로그: DNS 레코드 종류 ★ 완벽 정리

profile
프론트 개발과 클라우드 환경에 관심이 많습니다:)

0개의 댓글