FrontEnd
Javascript
Diary
ML
CS
Django
Algorithm
AWS
Co-Work
HTML
CSS
Python
React
ReactNative

DNS 서버의 동작

📶 DNS 서버의 동작

클라이언트에서 조회 메세지를 받아 응답한다

조회 메세지 내용


이름 : 서버나 메일 배송 목적지
(초창기 www라고 등록한게 많아서 관습적으로 웹서버를 www로 쓸 뿐 임의의 이름으로 타입과 함께 DNS서버에 등록하게 되면 그것이 웹서버 이름이된다, 엄밀히 말하면 A타입의 경우 IP주소를 할당받은 기기의 이름)

(mail 서버나 DB서버 등을 등록할수 있다.)


클래스 :

네트워크를 식별하기 위함이었지만 Internet이외의 네트워크는 소멸되어 항상 인터넷을 나타내는 IN이 된다


타입 : 이름에 어떤 타입의 정보가 지원되는지 나타냄 이 타입에 따라 클라이언트에 회답하는 정보의 내용이 달라짐

   A(Address) : 이름에 IP주소 지원 
 
   MX (mail eXchange): 이름에 메일발송목적지(@뒷부분) 지원

   PTR  : IP주소에서 이름 조사

   CNAME : 이름에 Nickname(alias)를 붙임

   NS  : DNS 서버의 IP주소 등록

   SOA : 도메인 자체의 속성정보

<조회메세지 1>

이름 = www.blogger.com
클래스 = IN
타입  = A

DNS서버가 설정파일 등에 입력된 리소스 레코드(resource record)를 검토하며
이름, 클래스, 타입 모두 일치하는 항목을 찾는다

그리고 등록되어 있는 값 (A의 경우 IP주소)을 클라이언트에 회답
<조회메세지 2>

이름 = mail.co.kr
클래스 = IN
타입 = MX

DNS서버가 리소스 레코드를 검토하여 우선순위
(복수의 메일 서버가 있을경우 작은 순서부터 선택하여 사용)와 메일서버이름을 회답

또한 만약 메일서버이름이 이름으로 등록되어 있는 리소스레코드가 있으면 IP주소도 같이 리턴

Domain의 구조

정보를 분산시켜 다수의 DNS서버에 등록하고 연대하여 정보를 찾아내는 구조이다 DNS서버에 등록한 정보는 도메인명이라는 계층적 구조를 가진 이름이 붙어있다

www . blogger . com
서버이름 하위Domain 상위Domain

하위도메인을 만들어 국가,회사,단체 등에 할당

한개의 도메인을 여러개의 DNS서버에 저장하는것은 불가 한개의 DNS서버에 여러개의 도메인 저장 가능 (도메인 정보도 저장된다)

DNS서버의 동작

DNS서버 등록

  • 하위도메인 DNS서버의 IP주소 ⇨⇨ 등록 ⇨⇨ 상위도메인 DNS서버의 IP주소
  • 상위도메인 DNS서버의 IP주소 ⇨⇨ 등록 ⇨⇨ 최상위도메인 DNS서버의 IP주소
  • 최상위도메인 DNS서버 IP주소 ⇨⇨ 등록 ⇨⇨ 루트도메인 DNS서버
  • 루트도메인 DNS서버 IP주소 ⇨⇨ 등록 ⇨⇨ 인터넷에 있는 DNS서버 전부

❕ 상,하위 도메인이 같은 DNS서버에 등록되는 경우도 있다.

웹서버를 찾아가기 위한 DNS서버 동작 흐름

가장 가까운 서버에 URL에 대한 정보를 조회

  • ⇨⇨ 없다? 루트 도메인으로 이동
  • ⇨⇨ 없다? (최)상위 DNS서버로 이동 (ex. com 저장)
  • ⇨⇨ 없다? 하위 DNS서버로 이동 (ex. blogger.com 저장)
  • ⇨⇨ 없다? 하위 DNS서버로 이동 (ex. www.blogger.com 저장)
  • ⇨⇨ 발견! 가장 가까운 DNS서버로 IP주소 리턴
  • ⇨⇨ 클라이언트로 IP주소 리턴

❕ 이러한 과정이 이미 일어났다면 DNS서버는 캐시에 기록하여 재요청이 왔을때 빠르게 회답을 줄 수 있다.

(하지만 등록 정보가 변경되는 경우도 있으므로 캐시에 저장한 데이터의 유효기간으로관리해주고 회답해줄때 DNS에서 가져온 것인지 캐시에서 가져온것인지 알려준다)

Cache : 한번 사용한 데이터를 이용장소와 가까운 곳에 있는 고속 기억장치에 저장해 재사용을 고속화하는 기술