Skip to content

Latest commit

 

History

History
108 lines (69 loc) · 6.69 KB

어정윤.md

File metadata and controls

108 lines (69 loc) · 6.69 KB

[Network] DNS

1. DNS

DNS(Domain Name System)은 웹사이트에 접속할 때 사용하는 도메인 주소를 실제 네트워크상에서 사용하는 IP 주소로 바꾸고, 해당 IP 주소로 접속하게 해주는 시스템이다.

상위 기관에서 인증된 기관에게 도메인을 생성하거나 IP 주소로 변경할 수 있는 ‘권한’을 부여한다. DNS는 이처럼 상위 기관과 하위 기관과 같은 계층 구조를 가지는 분산 데이터베이스 구조를 가진다.

네임 서버가 여러 대로 나누어져 있기 때문에 DNS는 도메인을 계층적으로 구분하는 구조를 선택했다. 그래서 도메인에 점(.)이 있는 것이다. 점이 계층을 나타낸다.

2. DNS 구성 요소

2.1. 도메인 네임 스페이스(Domain Name Space)

도메인 네임 스페이스(Domain Name Space)라는 규칙으로 도메인 이름 저장을 분산한다.

dns

도메인 네임 스페이스는 DNS가 저장 관리하는 계층적 구조다. 도메인 네임 스페이스는 최상위에 루트 DNS 서버가 존재하고 그 하위로 연결된 모든 노드가 연속해서 이어진 계층 구조로 되어있다.

2.2. 네임 서버(Name Server)

네임 서버(Name Server)가 해당 도메인 이름의 IP 주소를 찾는다.

문자열로 표현된 도메인 이름을 실제 컴퓨터가 통신할 때 사용하는 IP 주소로 변환시키기 위해 필요한 도메인 네임 스페이스의 트리 구조에 대한 정보를 가지고 있는 서버를 네임 서버라고 한다.

전 세계에 13개의 루트 DNS 서버가 구축되어 있다. (패킷의 실질적인 크기 제한으로 인해 루트 DNS 서버 수를 13개 서버 주소로 제한하도록 결정되었다고 한다.)

DNS 서버를 복사하여 같은 기능을 담당하는 미러 서버가 있다고 한다.

DNS 서버는 도메인 네임 스페이스를 위한 권한이 있는 DNS 서버(1, 2, 3)와 권한이 없는 DNS 서버로 구분된다.

  1. Root DNS 서버
    • ICANN이 직접 관리하는 절대 존엄 서버
    • TLD DNS 서버 IP 주소를 저장하고 안내하는 역할
  2. Top-Level Domain(TLD) DNS 서버
    • 도메인 등록 기관리 관리하는 서버
    • Authoritative DNS 서버의 주소를 저장하고 안내하는 역할
    • 도메인 판매 업체(ex. 가비아 등)의 DNS 설정이 변경되면 도메인 등록 기관으로 전달되어 어떤 도메인이 어떤 판매 업체에서 구매했는지 알 수 있다.
  3. Second-Level Domain(SLD) Domain 서버(=Authoritative DNS 서버)
    • 실제 개인 도메인과 IP 주소의 관계가 기록되는 서버
    • 일반적으로 도메인/호스팅 업체의 네임 서버
    • 개인 DNS를 구축해도 이 경우에 해당
  4. Resolver 서버(UnAuthoritative 서버, Recursive 서버, Recursor)
    • 네임 스페이스를 위한 권한이 있는 DNS 서버는 IP 주소와 도메인 이름을 매핑한다.
    • 네임 스페이스를 위한 권한이 없는 DNS 서버는 질의를 통해 IP 주소를 알아내거나 캐시한다.

2.3. 리졸버(Resolver)

리졸버(Resolver)가 웹 브라우저와 같은 DNS 클라이언트 요청을 네임 서버로 전달하고 네임 서버로부터 받은 정보(도메인 이름과 IP 주소)를 받아 클라이언트에게 제공하는 기능을 수행한다.

이 과정에서 리졸버는 하나의 네임 서버에 DNS 요청을 전달하고 해당 서버에 정보가 없으면 다른 네임 서버에 요청을 보내 정보를 받아온다. → 수많은 네임 서버에 접근해 요청받은 도메인의 IP 정보를 조회

리졸버의 기능을 단말에 구현하는 것은 자원의 한계가 있어 대부분 기능을 DNS 서버에 구현하고, 클라이언트 호스트는 리졸버의 단순한 기능만을 지닌 리졸버 루틴을 구현하는 옵션이 있다. → 스텁 리졸버(Stub Resolver)

스텁 리졸버는 수 많은 네임 서버의 구조를 파악할 필요없이 리졸버가 구현된 DNS 서버의 IP 주소만 파악하면 된다.

3. DNS 동작 방식

  • 웹 브라우저는 DNS 서버에 도메인 주소에 대한 정보를 요청한다.
  • DNS 서버는 최상위 기관에서 관리하는 네임 서버에게 요청한다.
  • 최상위 기관에서 관리하는 네임 서버가 응답한다.
  • DNS 서버는 네임 서버에게 요청한다.
  • 네임 서버는 응답한다.
  • DNS 서버는 해당 네임 서버에 요청한다.
  • 해당 네임 서버가 IP 주소를 응답한다.
  • DNS 서버는 IP 주소를 웹 브라우저에 전달한다.

4. DNS 동작 과정

dns
  1. 웹 브라우저에 www.naver.com을 입력한다.
  2. 웹 브라우저는 이전에 방문한적 있는지 찾는다.
    • 브라우저 캐시 확인
    • OS 캐시 확인
    • 라우터 캐시 확인
    • ISP 캐시 확인 (Recursive DNS Server)
  3. ISP에서 DNS Iterative하게 쿼리를 날린다.
  4. ISP는 Authoritative DNS 서버에서 최종적으로 IP 주소를 응답받는다.
  5. ISP는 해당 IP 주소를 캐시한다.
  6. 웹 브라우저에게 응답한다.

4.1. DNS Query

DNS 클라이언트와 DNS 서버는 DNS Query를 통해 통신한다.

DNS 쿼리는 재귀적 또는 반복적으로 구분된다.

4.2. Recursive Query

IP 주소를 돌려주는 작업이다. (Recursive 서버가 Recursive 쿼리를 웹 브라우저 등에 돌려주는 역할)

Recursive 쿼리를 받은 Recursive 서버는 Iterative하게 권한 있는 네임 서버로 Iterative 쿼리를 보내서 결과적으로 IP 주소를 찾아 이를 응답한다.

= 응답을 돌려주는 쿼리

4.3. Iterative Query

Recursive 서버가 다른 DNS 서버에 쿼리를 보내 응답을 요청하는 작업이다.

Recursive 서버가 권한 있는 네임 서버들에게 반복적으로 쿼리를 보내서 IP 주소를 알아낸다.

Recursive 서버에 이미 IP 주소가 캐싱되어있다면 이 과정은 생략한다.

References

DNS란? (도메인 네임 시스템 개념부터 작동 방식까지)