네트워크 - DNS

2020-11-18

컴퓨터 네트워크를 공부하면서 정리를 한 내용들 입니다.

-참고 K-mooc 부산 대학교 유영환 교수님 : 컴퓨터 네트워크 강의


DNS는 왜 중요한가?

IP 주소는 IP 버전 4 같은 경우에 32-bit 길이를 갖습니다.

각각 점으로 나뉘는 네 개의 숫자로 나누어져 있고 각각의 숫자는 0에서 255개의 숫자에 한합니다.

내 컴퓨터의 주소 정도는 기억 할 수 있을지 몰라도 어떤 특정 서버에 접속하려고 하면

해당 서버의 IP주소는 기억하기가 힘듭니다.

google.com 이렇게 외우기는 쉬워도 google.com 서버의 주소를 외우기는 어려운 것 처럼.

이것을 해결하기 위한 목적으로 만들어 진 것이 도메인 네임 시스템(Domain Name System)입니다.

DNS(Domain Name System)

어떤 사용자가 이름이 ubnt.com이라는 서버에 접속하려 합니다.

사용자는 ubnt.com 이라는 이름은 기억 해도 ubnt.com의 IP 주소는 모를 것 입니다.

그래서 사용자가 ubnt.com에 접속하라는 명령어를 날리면

컴퓨터는 query message를 DNS 시스템에 전달 하는 것입니다.

DNS 시스템은 ubnt.com이 사용하는 주소인 52.40.57.158라고 알려 주고,

실제로 ubnt.com으로 접속을 하는 것이 아니라 52.40.57.158 이라는 주소로 접속을 합니다.

DNS 서비스의 역할

호스트 네임(hostname) ‘Google.com’, ‘Pusan.ac.kr’과 같은 이름을

실제 IP 주소로 변환 해 주는 역할을 하는 것이고

이렇게 하면서 또 한가지 얻을 수 있는 효과는 어떤 것이 있냐 하면

DNS 서비스는 각각의 클라이언트에 요구하는 로드를 분산 시킬 수 있습니다.

로드 분산에 대해

데이터 센터에 여러 서버를 동시에 두게 되었습니다.

이 각각의 중복 서버는 서로 다른 IP 주소를 갖고 있습니다.

하나의 데이터 센터 내에 서버가 네 대가 있다고 하면

google 데이터 센터를 예로들어 실제 서버가 네 대가 있는 것입니다.

이 각각의 서버들은 IP주소가 다르지만 외부로 표현되는 hostname은 google.com으로 동일합니다.

그러면 google.com에 대한 어떤 리퀘스트를 받았을 때 DNS 서비스는

하나의 IP주소로만 번역 해 주는 것이 아니라 여러 IP에 번갈아 나누어 주게 되면

결국 리퀘스트 로드가 여러 개의 서버에 분산이 됩니다.

DNS서버의 특징

데이터베이스 시스템이 분산되어 있다 하는 것인데, 전 세계에 도메인 네임 시스템 서버들이 분산되어 있습니다.

왜 DNS 시스템을 중앙 집중 해 두지 않았느냐 하는 것인데 이유는 scalable 하지 않기 때문입니다.

scalable : 클라이언트 수가 늘어나면 서비스가 원활해 지지 않는다

  • single point of failure.

한 군데에 있으면 해당 부분이 고장 나면 전체가 다 마비되어 버리기 때문

  • traffic volume

데이터가 한 군데에 다 모이면 또 트래픽이 너무 많아져서 서비스가 원활하지 않기 때문

  • distant centralized database

중앙 집중을 하면 일부 유저는 가까이 있겠지만 많은 유저들이 멀리 있을 것입니다. 그러면 지연시간이 길어지기 때문

DNS : Distributed & Hierarchical Database

이러한 이유로 데이터베이스가 분산되어 있는데, 지리적으로도 분산되어 있지만 계층적으로도 역할이 나누어져 있습니다.

데이터베이스가 분산되어 있는데, 지리적으로도 분산되어 있지만 계층적으로도 역할이 나누어져 있습니다.

Top-Level Domain

  • .com 이라는 도메인들을 각 관리하는 서버
  • .org는 공공기관 관리 도메인 서버
  • .edu는 대학 관리하는 도메인 서버

authoritative domain

  • 각각의 기관에서 자기 내부에 있는 서버들의 주소를 관리하는 데이터베이스

Service 동작

  1. 클라이언트는 자기가 어떤 특정한 주소의 서버가 필요.

    amazon.com 서버의 IP주소가 필요하다 하면 클라이언트는 Root DNS Server한테 먼저 물어볼 수 있습니다. 그랬더니 Root DNS Server는 .com을 모두 관리하는 DNS 서버의 주소는 안다고 답장합니다.’

  2. DNS 서버의 주소를 알려 주는 것입니다.

    그러면 확인을 해봅니다. amazon.com 내부에 있는 특정 서버 주소는 몰라도 amazon.com을 대표하는 DNS 서버는 알고 있습니다. 그러면 이것의 주소를 알려주고 나는 amazon.com의 DNS 서버한테 가서 amazon 내에 있는 특정한 서버, 특정한 웹 서버에 대한 주소를 알아 볼 수 있다는 것입니다.

Root Name Server는 제일 상위 서버인데 이것도 여러 군데로 분산 되어 있습니다.