신비한 개발사전

DNS가 뭔가요? 본문

CS

DNS가 뭔가요?

jbilee 2024. 11. 6. 23:25

DNS(Domain Name Server)는 웹사이트의 도메인 이름(http://www.site.com 부분)을 컴퓨터가 이해할 수 있는 IP 주소로 변환하는 일종의 전화번호부 같은 시스템이다. 192.0.2.1 같은 IP 주소는 사람이 쉽게 외울 수 있는 형식이 아니다. 때문에 숫자 대신 우리가 알아보기 쉬운 알파벳 단어로 이루어진 도메인 이름을 사용할 수 있게 하고, DNS는 이 도메인 이름을 IP 주소로 변환해서 리소스에 접근할 수 있게 해준다.

 

DNS의 동작 방식

  1. 사용자가 도메인 이름을 입력: 사용자가 브라우저에 도메인 이름(예: http://www.example.com)을 입력한다.
  2. 로컬 DNS 캐시 확인: 브라우저와 운영체제는 최근에 방문한 사이트의 IP 주소를 캐시하고 있으므로, 우선 캐시에 해당 주소가 있는지 확인한다.
  3. 재귀적 DNS 쿼리: 캐시가 없을 경우, 재귀적 DNS 쿼리를 실행한다. 로컬 DNS 서버(인터넷 서비스 제공자가 제공한 DNS 서버)로부터 시작해서 최종적인 IP 주소를 얻을 때까지 다른 DNS 서버를 조회한다.
  4. 권한이 있는 DNS 서버에 요청: 재귀적 DNS 서버는 Root → TLD(Top-Level Domain) → Authoritative DNS Server의 순서로 조회하면서, 최종적으로 도메인에 대한 권한을 가진 서버에서 IP 주소를 확인한다.
  5. 응답 반환: 재귀적 DNS 서버는 IP 주소를 받아 사용자에게 반환하고, 사용자는 해당 IP 주소로 웹사이트에 접속하게 된다.

DNS의 질의 종류

  • 재귀적 질의: 클라이언트가 DNS 서버에게 원하는 정보(IP 주소 등)를 찾을 때까지 모든 과정을 수행하도록 요청한다. 이 경우 DNS 서버가 완전한 답을 찾을 때까지 다른 서버에 질의한다.
  • 반복적 질의: DNS 서버가 직접 응답하지 못할 경우, 다른 DNS 서버에 질의하는 방법을 클라이언트에게 제안한다. 클라이언트가 반복적으로 다른 서버에 요청하면서 원하는 정보를 얻는다.
  • 비재귀적 질의: 클라이언트가 요청한 데이터가 DNS 서버에 캐시되어 있을 경우, 서버는 캐시된 데이터를 즉시 반환한다. 이 과정에서는 다른 서버에 질의하지 않는다.

DNS는 주로 UDP(User Datagram Protocol)로 작동한다. UDP는 전송 속도가 빠르고, 별도의 연결 설정이 필요하지 않기 때문에 요청과 응답이 가볍다. DNS 요청과 응답은 크기가 작고 연결 설정이 필요 없기 때문에 TCP보다 효율적이다. 다만, 데이터 크기가 큰 경우 TCP를 사용할 수 있다. (예: DNS Zone Transfer)

 

레코드 (Record)

DNS 레코드는 DNS 서버가 패킷을 받았을 때 어떻게 처리해야 하는지 알려주는 지침이며, 도메인에 대한 정보를 담고 있다.

  • A 레코드: 도메인에 매핑된 IPv4 주소
  • AAAA 레코드: 도메인에 매핑된 IPv6 주소
  • CNAME 레코드: 도메인을 다른 도메인에 매핑하는 별칭
  • MX 레코드: 이메일 서버 정보를 정의
  • TXT 레코드: 도메인에 대한 텍스트 정보를 포함 (보통 SPF나 DKIM 같은 이메일 인증에 사용)
  • NS 레코드: 도메인을 관리하는 네임서버 (예: 카페24로부터 호스팅 도메인을 구매한 경우 카페24가 NS 레코드에 기입되어있다)