본문 바로가기
네트워크

[네트워크] 2.4 DNS: 인터넷 디렉터리 서비스

by Lizardee 2023. 10. 1.
  • 호스트 이름(hostname)
  • IP 주소(IP address)
    예) 121.7.106.83
    --> IP 주소를 통해 어떤 호스트가 어디에 위치하는지에 대한 자세한 정보를 얻을 수 있다.

 

2.4.1 DNS가 제공하는 서비스

▶ DNS (Domain Name System)

: hostname --> IP address

  • 분산 데이터베이스: DNS 서버들의 계층구조
  • 애플리케이션 계층 프로토콜: host가 분산 데이터베이스로 질의하도록 함
  • Port 53

예) 사용자 호스트가 HTTP 요청 메시지를 웹 서버 www.someschool.edu로  로 보낼 수 있도록 www.someschool.edu의   IP 주소를 얻어야 한다.

--> 1) DNS --> IP address, 2) TCP 연결

  1. 같은 사용자 컴퓨터는 DNS 애플리케이션의 client 측을 수행한다.
  2. 브라우저: URL로부터 hostname www.someschool.edu를 추출하고, 그 hostname을 DNS 애플리케이션의 client 측에 넘긴다.
  3. DNS client: DNS server로 hostname을 포함하는 질의를 보낸다.
  4. DNS client: hostname에 대한 IP address를 가진 응답을 받게 된다.
  5. 브라우저가 DNS로부터 IP address를 받으면, 브라우저는 해당 IP address와 그 주소의 80번 포트에 위치하는 HTTP server 프로세스로 TCP 연결을 초기화한다.

 

▶ DNS 기능 (추가 기능)

  • host aliasing (호스트 에일리어싱)
    : 복잡한 hostname을 가진 host는 하나 이상의 별명을 가질 수 있다. 따라서 DNS는 host의 IP address뿐만 아니라, 제시한 별칭 hostname에 대한 정식 hostname을 얻기 위해 이용될 수 있다.
  • mail server aliasing (메일 서버 에일리어싱)
    : e-mail 주소는 기억하기 쉬운 것이 좋다. 그러나 핫메일 서버의 hostname은 더 복잡하다. 따라서 DNS는 host의 IP address뿐만 아니라, 제공된 별칭 hostname에 대한 정식 hostname을 얻기 위해 메일 애플리케이션에 의해 수행된다.
  • load distribution (부하 분산)
    : DNS는 중복 웹 서버와 같은 여러 중복 서버 사이에 부하를 분산하기 위해서도 사용되고 있다. 인기 있는 사이트는 여러 서버에 중복되어 있어서, 각 서버가 다른 종단 시스템에서 수행되고, 다른 IP address를 갖는다. 중복 웹 서버의 경우, 여러 IP address가 하나의 정식 hostname과 연관되어 있다. DNS 데이터베이스는 이 IP address 집합을 갖고 있다. client가 IP address 집합으로 매핑하는 hostname에 대한 DNS 질의를 하면, server는 IP address 집합 전체를 가지고 응답한다. client는 대체로 IP address 집합 내부의 첫 번째 IP address로 HTTP 요청 메시지를 보내므로, DNS 순환 방식은 여러 중복 서버들 사이에서 트래픽을 분산하는 효과를 가진다.
    DNS 순환 방식은 e-mail에서도 사용되어 여러 mail server가 동일한 별칭을 가질 수 있다.

 

 

2.4.2 DNS 동작 원리 개요
  1. 사용자 호스트의 DNS는 네트워크에 질의 메시지를 보낸다. 모든 DNS 질의와 응답 메시지는 포트 53의 UDP 데이터그램으로 보내진다.
  2. 수 밀리초에서 수 초의 지연 후에, 사용자 호스트의 DNS는 요청한 매핑에 해당하는 DNS 응답 메시지를 받는다. 이제 이 매핑은 호출한 애플리케이션으로 전달된다.
    따라서 사용자 호스트의 호출한 애플리케이션 관점에서 DNS는 간단하고 직접적인 변환 서비스를 제공하는 블랙박스다.

▶ 단일 DNS (with problems...)

: DNS의 간단한 설계로 모든 매핑을 포함하는 하나의 인터넷 네임 서버를 생각할 수 있다. 이러한 중앙 집중 방식에서 클라이언트는 모든 질의를 단일 네임 서버로 보내고, DNS 서버는 질의 클라이언트에게 직접 응답한다.

--> Problem: 단일 DNS 서버에 있는 중앙 집중 데이터베이스는 확장성이 없다. 

--> Solution: 분산 계층 데이터베이스 DNS

 

분산 계층 데이터베이스

DNS 서버 계층구조의 일부

  • root DNS server (루트 DNS 서버): 1000개 이상의 root DNS server 인스턴스가 전세계에 흩어져 있다.
  • TLD(Top-Level Domain) servers (TLD 서버): com, org, net, edu, gov 같은 상위 레벨 도메인과, kr, uk, fr, ca, jp 같은 모든 국가의 상위 레벨 도메인에 대한 TLD 서버가 있다.
  • Authoritative domain servers (책임 서버): 인터넷에 접근하기 쉬운 호스트(예: 웹 서버, 메일 서버)를 가진 모든 기관은 hostname을 IP 주소로 매핑하는 공개적인 DNS 레코드를 제공해야 한다. 기관의 책임 DNS 서버는 이 DNS 레코드를 갖고 있다. 또한 기관은 이 레코드를 갖도록 자신의 책임 DNS 서버의 구현을 선택할 수 있고, 일부 서비스 제공자의 책임 DNS 서버에 이 레코드를 저장하도록 비용을 지불한다 대부분의 대학과 큰 기업들은 자신의 기본 책임 DNS 서버와 보조 책임 DNS 서버를 유지하고 구현한다.

 

예) 어떤 DNS 클라이언트가 hostname www.amazon.com의  의 IP 주소를 결정한다.

  1. 클라이언트는 root DNS server 중 하나에 접속한다. root server는 최상위 레벨 도메인 .com을 갖는 TLD server IP 주소를 보낸다.
  2. 그런 다음 클라이언트는 이 TLD server 중 하나에 접속하고, server는 도메인 amazon.com을 가진 authoritative domain server의 IP 주소로 보낸다.
  3. 클라이언트는 amazon.com의 authoritative server 중 하나로 접속한다. 
  4. 서버는 hostname www.amazon.com의 IP 주소를 보낸다.

 

로컬 DNS 서버

: 호스트가 DNS 질의를 보내면, 이 질의는 먼저 프록시로 동작하는 로컬 DNS 서버에게 전달되고, 그 로컬 DNS 서버는 이 질의를 DNS 서버 계층으로 전달한다.

  • host --> 로컬 DNS 서버 --> DNS 서버 계층

 

▶ DNS name resolution: iterated query (반복적 질의)

DNS name resolution: iterated query

예) 호스트 cse.nyu.edu가 gaia.cs.umass.edu의 IP 주소를 원한다고 가정하자.

또한 cse.nyu.edu에 대한 NYU의 로컬 DNS 서버가 dns.nyu.edu이고, gia.cs.umass.edu에 대한 책임 DNS 서버는 dns.umass.edu라고 가정하자.

  1. 호스트 cse.nyu.edu가 먼저 자신의 로컬 DNS 서버 dns.nyu.edu에게 DNS 질의 메시지를 보낸다.
    질의에는 변환되어야 하는 호스트 이름, 즉 gaia.cs.umass.edu가 포함된다.
  2. 로컬 DNS 서버는 그 질의 메시지를 루트 DNS 서버에게 전달한다.
  3. 루트 DNS 서버는 edu를 인식하고, edu에 대한 책임을 가진 TLD 서버의 IP 주소 목록을 로컬 DNS 서버에게 보낸다.
  4. 로컬 DNS 서버는 질의 메시지를 TLD 서버로 보낸다.
  5. TLD 서버는 umass.edu를 인식하고, dns.umass.edu로 이름 지어진 매사추세츠대학교의 책임 DNS 서버의 IP 주소로 응답한다.
  6. 로컬 DNS 서버는 직접 dns.umass.edu(authoritative DNS server)로 질의 메시지를 다시 보내고
  7. authoritative DNS server는 gaia.cs.umass.edu의 IP 주소로 응답한다.

--> Local DNS server로 query가 집중된다.

 

▶ DNS name resolution: recursive query (재귀적 질의)

DNS name resolution: recursive query

--> root DNS server로 query가 집중된다.

 

DNS 캐싱

: Local DNS server는 두 번째로 질의한 호스트에게 다른 DNS 서버로의 질의 없이, 즉시 IP 주소를 보낼 수 있다.

  • Problem: out-of-date 문제

 

 

2.4.3 DNS 레코드와 메시지

▶ 자원 레코드 (resource record, RR)

: DNS 분산 데이터베이스를 구현한 DNS 서버들은 호스트 이름을 IP 주소로 매핑하기 위한 RR을 저장한다. 각 DNS는 하나 이상의 RR을 가진 메시지로 응답한다.

  • RR format: (Name, Value, Type, TTL)

type

 

DNS 메시지

Message header: identification, flags
질문 영역(questions), 답변 영역(answers), 책임 영역(authority), 추가 영역(additional info)

 

DNS 데이터베이스에 레코드 삽입 (자원 레코드; RR를 만드는 방법)

예) new startup "Network Utopia(NU)"

1. 도메인 네임 networkutopia.com을 등록기관에 등록한다.

  • 등록기관(register): 도메인 네임의 유일성을 확인하고, 그 도메인 네임을 DNS 데이터베이스에 넣고, 그 서비스에 대한 약간의 요금을 받는 상업기관

도메인 네임 networkutopia.com을 어떤 등록기관에 등록할 때, 등록기관에 주책임 서버와 부책임 서버의 이름과 IP 주소를 등록기관에 제공해야 한다. 그 이름과 IP 주소가 dns1.networkutopia.com, dns2.networkutopia.com, 212.212.212.1, 212.212.212.2라고 하자.

 

2. 이 두 책임 DNS 서버 각각에 대해 등록기관은 Typte NS와 Type A 레코드가 TLD com 서버에 등록되도록 확인한다.

특히 networkutopia.com에 대한 주책임 서버의 경우, 등록기관은 다음 2개의 자원 레코드(RR)를 DNS 시스템에 삽입한다.

  • (networkutopia.com, dns1.networkutopia.com, NS)
  • (dns1.networkutopia.com, 212.212.212.1, A)

 

예) Accessing Web Page of NU

예) 호주에 있는 앨리스가 www.networkutopia.com  웹 페이지를 보고자 한다고 가정하자. 

  1. 앨리스의 호스트는 먼저 DNS 질의를 자신의 Loacl DNS server로 보내고, Loacl DNS server는 TLD com server에 접속한다. (Local DNS server는 TLD com 스타일 server의 주소가 캐싱되어 있지 않으면, root DNS server에 접속해야만 한다.)
  2. TLD server는 Type NS와 Type A 자원 레코드를 가지고 있다. 왜냐하면 등록기관이 이들 자원 레코드를 모든 TLD com 서버에 삽입했기 때문이다.
    TLD com server는 앨리스의 Local DNS server로 두 자원 레코드를 포함하는 응답을 보낸다.
  3. Local DNS server는 www.networkutopia.com에 대응되는 Type A 레코드를 요구하는 DNS 질의를 212.212.212.1에게 보내면, 이 레코드는 요구하는 웹 서버, 즉 212.212.71.4의 IP 주소를 제공한다.
    Local DNS server는 앨리스 호스트에게 이 레코드를 전달한다. 
  4. 앨리스의 브라우저는 212.212.71.4 호스트로 TCP 연결을 초기화하고, 그 연결로 HTTP 요청을 보낸다.