Computer Science 기본 지식/컴퓨터 네트워크

[네트워크] 응용 계층 (2) DNS 도메인 네임 시스템

로파이 2021. 1. 10. 21:27

DNS (Domain Name System)

- 배경

  • 모든 전송은 목적지의 IP 주소를 알고 있어야 전송이 가능하나 응용을 위한 모든 IP 주소를 알기 힘들고 변동되는 경우가 많다. 
  • 문자열과 같은 직관적인 "이름"으로 IP 주소를 명명할 수 있다.
  • 사람이 읽을 수 있는 이름, 호스트 이름(hostname))으로 간단히 원하는 서비스를 요청할 수 있다. 

- Domain Name System/Service (DNS)

  • 계층적으로 구성된 분산형 데이터 베이스 시스템.
  • DNS 서버 혹은 네임 서버라고 한다.
  • 사용자가 hostname에 대응하는 IP 주소를 요청할때 DNS 응용프로토콜을 사용한다.

 - 분산적, 계층적 DNS 서버

DNS 서버는 계층적으로 분할 되어 있고 트리형식으로 각 상위 레벨 도메인은 하위 레벨 도메인을 관리한다.

계층적 분할 (출처: www.netmanias.com)

- Root Name Servers

최상위 계층 서버로 전세계 총 13개가 있다.

 

- Top Level Domain Servers

상용 기업(com) / 교육기관(edu) / 비정부 단체(org)/ 국가 분류(kr, us, uk, jp, ...) 

  • com servers: naver.com
  • edu servers: poly.edu
  • org servers: pbs.org
  • country domain servers: snu.ac.kr

- Autoritative Server

  • 조직, 기관에 의해 관리되는 네임 서버
  • 기관이나 조직이 관리하는 IP 주소에 대응하는 hostname을 직접 명명할 수 있다.
  • ex) 메일 서버

 

- Local DNS server

  • 계층에 속하지 않는다.
  • ISP가 지역적으로 설치하여 관리하며 "default name server"로 불린다.
  • 가장 먼저 접속되는 DNS 서버로 캐시 기능이 있다.

유저가 DNS Query를 통해 hostname에 해당하는 네트워크 IP를 알아내는 과정

 

User --(hostname이 포함된 DNS 쿼리)--> 계층적 DNS 서버 --(응답)--> User (IP주소를 알게된다.)

 

- Iterative DNS Query to Get IP address of www.naver.com

DNS Query (출처: www.netmanias.com)

 

  1. 사용자 -> Local DNS: www.naver.com의 IP 주소를 요청
  2. Local DNS -> 최상위 DNS (Root DNS): www.naver.com의 IP 주소를 요청
  3. Root DNS -> Local DNS: com DNS 서버의 IP 주소를 알림
  4. Local DNS -> com DNS: www.naver.com의 IP 주소를 요청
  5. com DNS  -> Local DNS: naver.com DNS의 IP 주소를 알림
  6. Local DNS  -> naver.com DNS: www.naver.com의 IP 주소를 요청
  7. naver.com DNS -> Local DNS: www.naver.com IP 주소를 알림
  8. Local DNS -> 사용자: www.naver.com IP 주소를 알림 

- Recursive query

  1. 사용자      -> Local DNS
  2. Local DNS -> Root DNS
  3. Root DNS -> TLD DNS
  4. TLD DNS  -> Sub domain of TLD DNS
  5. Sub domain of TLD DNS -> TLD DNS
  6. TLD DNS  -> Root DNS
  7. Root DNS -> Local DNS
  8. Local DNS -> 사용자

DNS Protocol

Query와 Reply용 메세지로 같은 프로토콜을 사용한다.

- header 내용

  • identification: ID 번호
  • flags: query or reply
  • questions: query를 위한 name, type 필드
  • answers: reply를 위한 RR format <name, value, type, TTL>
  • autority: 경유한 authorative servers를 기록