2 minute read

DNS란

네트워크 안에서 호스트를 식별하기 위한 목적으로 IP 주소를 사용하는데, 사람의 경우 숫자보다 문자를 사용하는 것이 더 편하므로 도메인 이름을 이용해 호스트를 식별한다. 도메인 이름을 사용하는 경우에도 최종적으로 IP 주소를 알고 있어야 상대방과 연결이 가능하므로, 네트워크에서 도메인이나 호스트 이름을 숫자로 된 IP 주소로 해석해 주는 TCP/IP 네트워크 서비스인 DNS가 등장했다. DNS는 도메인을 계층적이게 관리해 서버를 분리하여 트리팩과 데이터를 분산한다.


URL 구조

http://www.google.com 이 있다고 할 때 이 url은 세부 부분으로 구성되어 있다.

  • schema : http:// 또는 https:// 과 같이 맨 앞에 붙는 부분으로, 통신할 때 사용되는 통신 프로토콜이다.
  • subdomain : www에 해당하는 부분
  • domain name : google에 해당하는 부분. 도메인 주소를 구성하는 이름
  • top-level domain : com과 같이 최상위 계층을 구성하는 부분


DNS 동작 방식

도메인은 계층 구조로 상위 도메인부터 하위 단계의 순서대로 주소를 찾아간다. 상위 서버는 하위 서버의 위치를 알고 있다. 즉 .com -> .google -> www 순으로 주소 검색이 진행되며, 이 순서대로 도메인 연결 부분이 하나씩 늘어나며 최종 도메인 주소를 구성하게 된다. 그리고 원래 최상위 도메인 끝에 . 이 하나 더 붙는데, 이를 root domain 이라고 한다. 인터넷 도메인의 체계에서 최상위는 루트(root)로써 인터넷 도메인의 시작점이 된다.

  1. . : Root Domain
  2. .com : Top-Level Domain
  3. google.com : second-level domain (sub domain)
  4. www.google.com : third-level domain (sub domain)

image


image

  • 로컬 DNS : 권한 없는 네임 서버다. DNS 정보를 직접적으로 가지고 있지 않다. kt나 stk와 같은 통신사에서 제공을 해주는 것. 클라이언트와 직접적으로 통신을 하고 네임서버들과 통신을 하기 위해 있는 서버다.
  • 서브 도메인 네임 서버 : 실제로 DNS 정보를 가지고 있는 권한이 있는 네임 서버다.
  • 네임서버들은 다양한 기관에서 관리하고 있다.
    • Root NameServer : 국제 인터넷 주소 관리 기구
    • Top Level Name Server : 도메인 등록 기관
    • Sub Domain Name Server : 도메인 판매 업체 (ex 가비아)


  1. 웹 브라우저 창에 도메인 주소 입력하면 로컬 컴퓨터의 캐시에 해당 도메인의 IP 가 저장되어 있는지 확인한다. 있는 경우 바로 해당 IP 주소로 패킷 전송하고, 없는 경우 로컬 DNS 서버로 쿼리를 날린다.

  2. 로컬 DNS 서버의 캐시 및 주소록에서 IP 주소 검색하여 있는 경우에 해당 IP 주소로 패킷을 전송하고 없는 경우에는 Root DNS 서버로 쿼리를 날린다.

  3. Root DNS 서버에서는 ip 정보를 가지고 있지 않기 때문에 하위 도메인인 Top-Level Domain 네임 서버의 주소를 응답한다.
  4. Top-level Domain 서버에 쿼리를 요청한다.
  5. Top-Level Domain 서버에서도 ip 정보를 가지고 있지 않기 때문에 하위 도메인인 서브 도메인 네임 서버의 주소를 응답한다.

  6. ip 정보를 가지고 있는 서브 도메인 네임 서버에 쿼리를 ip 정보를 요청한다.
  7. IP 주소를 전달받고 로컬 DNS에 캐싱해둔다.
  8. 브라우저에 ip를 전달받고 pc에 캐싱한 뒤 패킷 전송한다.


클라이언트에서 로컬 DNS 서버로 보내는 요청을 재귀적 쿼리 라고 한다.

로컬 DNS 에서 root DNS 서버 & 하위 DNS 서버에 보내는 요청을 반복적 쿼리 라고 한다.

Categories:

Updated: