프로필사진
DevOps 부트캠프 기록일지
DevOps_04_김재환
07_Study(DNS)
07_Study(DNS)

2023. 3. 15. 20:33부트캠프/DevOps (TIL)

DNS(Domain Name System)는 인터넷 전화번호부입니다. 사람은 nytimes.com 또는 espn.com과 같은 도메인 이름을 통해 온라인으로 정보에 액세스합니다. 웹 브라우저는 인터넷 프로토콜(IP) 주소를 통해 상호작용합니다. DNS는 브라우저가 인터넷 자원을 로드할 수 있도록 도메인 이름을 IP 주소로 변환합니다.

인터넷에 연결된 각 기기에는 다른 컴퓨터가 기기를 찾는 데 사용하는 고유한 IP 주소가 있습니다. DNS 서버를 사용하면 사람이 192.168.1.1(IPv4의 경우)과 같은 IP 주소 또는 2400:cb00:2048:1::c629:d7a2(IPv6의 경우)처럼 영문과 숫자로 된 복잡한 IP 주소를 기억할 필요가 없습니다.

 

예를 들면 구글의 아이피가 위의 복잡한 IP라 하면 DNS는 www.google.com   입니다.   

 

DNS 구성 요소

  • DNS는 아래 세가지 요소로 구성되어있다.
  1. 도메인 네임 스페이스(Domain Name Space)
  2. 네임 서버(Name Server) = 권한 있는 DNS 서버
  3. 리졸버(Resolver) = 권한 없는 DNS 서버
  • 우선 “이 도메인 이름은 이 IP 주소이다”라는 ‘텍스트’를 저장하는 데이터베이스가 필요하다.
  • 그리고 분산된 데이터가 어디 저장되어 있는지 찾을 프로그램들이 필요하고 찾았으면 해당 IP 주소로 이동할 프로그램(브라우저 등)이 필요하다.
  • 도메인 네임 스페이스라는 규칙(방법)으로 도메인 이름 저장을 분산한다.
  • 네임 서버(DNS 서버와 같은 말, 그런데 리졸버 서버 등 시스템 안에서 다른 역할을 하는 서버도 있기에 그냥 DNS 서버라고 하는 것보다 네임 서버라고 하는게 더 의미가 전달되는 듯)가 해당 도메인 이름의 IP 주소를 찾는다.
  • 리졸버가 DNS 클라이언트 요청을 네임 서버로 전달하고 찾은 정보를 클라이언트에게 제공하는 기능을 수행한다.
  • 어떤 네임 서버에서 찾아야하는지, 이미 캐시 되어있는지 등 어떻게든 찾아서 클라이언트에게 찾았으면 찾은 것을 못 찾았으면 못 찾았다고 전달하는 역할을 한다.
  • 리졸버는 단말에 구현하는 것은 무리수라 보통은 리졸버가 구현된 네임 서버의 IP 주소만을 파악한다.
  • 대표적인 것이 KT/LG/SK와 같은 ISP(통신사) DNS 있고, 브라우저 우회 용도로 많이 쓰는 구글 DNS, 클라우드플레어와 같은 Public DNS 서버가 있다.
  • 그래서 거의 Resolver = Recursive DNS Server = Local Server(of ISP) = Recursor
  • 어떤 자료에서는 리졸버라는 요소를 생략하기도 하는 듯하다. 

DNS 동작 방식 설명

 

예를 들어 검색창에 google.com을 검색한다고 했을 때 다음과 같은 일련 과정을 거칩니다.

  1. http://google.com을 검색하면, 먼저 웹 브라우저가 해당 URL을 검색합니다. 그러면 브라우저는 내부 DNS 캐시에서 이 도메인 이름에 대한 IP 주소를 찾으려고 시도합니다. 
  2. DNS 캐시에 해당 정보가 없으면, 브라우저는 운영체제의 로컬 DNS 리졸버에 쿼리를 보냅니다. 로컬 DNS 리졸버는 일반적으로 인터넷 서비스 제공자(ISP)에서 제공하는 DNS 서버입니다.
  3. 로컬 DNS 서버에서도 해당 도메인 이름에 대한 IP 주소를 찾을 수 없으면, 다른 루트 DNS 서버에 쿼리를 보냅니다. 루트 DNS 서버는 모든 DNS 쿼리의 시작점입니다.
  4. 루트 DNS 서버는 TLD(Top-Level Domain) 서버를 가리키는 IP 주소를 제공합니다. 이 경우, ".com" TLD 서버가 http://google.com에 대한 권한을 가집니다.
  5. 로컬 DNS 서버는 이 정보를 사용하여 .com TLD 서버에 쿼리를 보내서 "google.com" 도메인 이름을 가리키는 NS(name server) 레코드를 찾습니다.
  6. 이제, 로컬 DNS 서버는 NS 레코드에서 google.com 도메인의 네임서버 주소를 가져옵니다. 그런 다음, 로컬 DNS 서버는 이 네임서버 중 하나에 다시 쿼리를 보내서 google.com 도메인 이름에 대한 IP 주소를 찾습니다.

이러한 일련의 과정을 통해 브라우저는 http://google.com에 대한 IP 주소를 찾고, 해당 IP 주소로 HTTP 요청을 보내서 웹 페이지를 검색할 수 있습니다.

 

출처

https://www.cloudflare.com/ko-kr/learning/dns/what-is-dns/

https://hanamon.kr/dns%EB%9E%80-%EB%8F%84%EB%A9%94%EC%9D%B8-%EB%84%A4%EC%9E%84-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B0%9C%EB%85%90%EB%B6%80%ED%84%B0-%EC%9E%91%EB%8F%99-%EB%B0%A9%EC%8B%9D%EA%B9%8C%EC%A7%80/