DNS-인터넷의 디렉터리 서비스

Stormi·2022년 7월 6일
1

네트워크

목록 보기
26/37

naver.com을 쳤을 때 어떻게 동작하지의 첫번째 step

DNS는 5계층서비스!! IP address는 3계층 서비스!!

사람은 여러가지 방식으로 자신을 식별할수 있다. 주민번호, 이름 등으로 식별이 가능하다. 안녕하세요 주민번호 1234-5678입니다. 이렇게 말하는 것보다 안녕하세요 코꿈이입니다. 라고 하는 것이 기억하기 쉬울 것이다. 마찬가지로 IP address보다 Domain Name이 더 쉬울 수 있다.

인터넷 호스트는에 대한 하나의 식별자는 호스트네임이다. www.facebook.com, www.naver.com과 같은 호스트 네임은 기억하기 쉽다. 그러나 호스트네임은 인터넷에서의 그 호스트 위치에 대한 정보를 거의 제공하지 않는다. 더나아가, 호스트네임은 가변 길이의 알파뉴메릭 문자로 구성되므로 라우터(쿠팡물류 센터라고 생각하기)가 처리하는 데 어려움이 있다. 이러한 이유로 호스트는 흔히 말하는 IP주소로도 식별된다.

IP주소는 계층구조를 갖는다.

  • IP주소는 4바이트로 구성되고 계층구조를 갖는다.
  • IP주소는 121.7.106.83 과 같은 형태이고, 0~255의 십진수로 표현하는 각 바이트는 점으로 구분한다.
  • 1byte.1byte.1byte.1byte -> 8bits.8bits.8bits.8bits -> 2^8 -> 256 -> 0~255
  • IP주소는 계층 구조여서 주소를 왼쪽에서 오른쪽으로 조사함으로써, 그 호스트가 인터넷의 어디에 위치하는지(네트워크로 연결된 네트워크에서 어는 네트워크 내에 있는 지)에 대한 자세한 정보를 얻을 수 있다.
  • 예를 들어 경기도 동그라미시 세모동이라고 하면 거주자의 위치에 대한 정보를 왼쪽에서 오른쪽으로 읽을 때 더 자세히 알 수 있는 것과 마찬가지이다.

DNS가 제공하는 서비스

사람은 좀 더 기억하기 쉬운 호스트네임 식별자를 좋아하지만, 라우터는 고정길이의 계층구조를 가진 IP주소를 더 좋아한다. 이러한 선호차이를 절충하기 위해, 호스트 네임을 IP주소로 변환해주는 디렉터리 서비스가 필요하다. 이것이 바로 인터넷 DNS(domain name system)의 주요 임무이다.

DNS

  • DNS 서버들의 계층구조로 구현된 분산 데이터베이스이다. (커다란 엑셀을 쪼개서 나눔)
  • 호스트가 분산 데이터베이스로 질의하도록 허락하는 애플리케이션 계층 프로토콜이다.
  • DNS는 다른 애플리케이션 프로토콜들이 HTTP, SMTP, FTP 등 사용자가 제공한 호스트 네임을 IP주소로 변환하기 위해 주로 이용한다. 예를 들어, 어떤 사용자의 호스트에서 수행되는 브라우저 (HTTP 클라이언트)가 URL www.naver.com/index.html 이라고 요청할 때, 사용자의 호스트가 HTTP 요청 메시지를 웹서버 www.naver.com으로 보낼 수 있게 하기 위해 www.naver.com의 IP 주소를 얻어야만 한다.

이 www.naver.com 호스트네임을 떼서 우리 PC의 DNS 어플리케이션 클라이언트에 보내야함.
왜 애플리케이션 계층에서 이 일을 할까? IP 주소는 3계층 프로토콜인데 왜?? 네트워크에서 DNS를 변환하기에는 너무 크다.

수행과정

  1. 같은 사용자컴퓨터는 DNS 애플리케이션의 클라이언트 측을 수행한다.
  2. 브라우저는 URL로부터 호스트네임 www.naver.com을 추출하고 그 호스트 네임을 DNS 애플리케이션 클라이언트 측에 넘긴다
  3. DNS 클라이언트는 DNS 서버로 호스트네임을 포함하는 질의를 보낸다. (재귀적 질의를 함)
  • 재귀적 질의 : DNS 서버가 즉 local DNS 서버일 경우가 많고, 로컬 DNS 서버는 root, TLD, auth순으로 재귀적 질의를함
  1. DNS 클라이언트는 결국 호스트네임에대한 IP주소를 가진 응답을 받게 된다.
  2. 브라우저가 DNS로 부터 IP 주소를 받으면, 브라우저는 그 IP주소와 그 주소의 80번 포트에 위치하는 HTTP 서버 프로세스로 TCP 연결을 초기화한다.
  • 이 예로 부터 DNS는 DNS를 사용하는 인터넷 애플리케이션에게 추가 지연을 준다는 것을 볼 수 있다.
    IP주소는 가까운 DNS서버에 캐시로 되어있어서 평균 DNS 지연 뿐만아니라 DNS 네트워크 트래픽 감소에 도움을 준다.

DNS는 호스트 네임을 IP주소로 변환하는 것 추가 서비스를 제공

  • 호스트 엘리어싱 : 복잡한 호스트 네임을 가진 호스트는 하나 이상의 별명을 가질 수 있다. 예를 들어, relay1.west-coast.enterprise.com같은 호스트 네임은 enterprise.com 과 www.enterprise.com과 같은 별칭을 가질 수 있다. 이러한 경우에 relay1.west-coast.enterprise.com는 정식 호스트네임이라고 한다. 별칭 호스트네임은 정식 호스트 네임보다 기억하기 쉽다. DNS는 호스트의 IP 주소 뿐만아니라 제시한 별칭 호스트 네임에 대한 정식 호스트네임을 얻기 위해 이용될 수 있다.
  • 메일 서버 엘리어ㅓ싱 : 전자 메일 주소는 기억하기 쉬운 것이 좋다. DNS는 호스트의 IP주소 뿐만아니라 제공된 별칭 호스트 네임에 대한 정식 호스트네임을 얻기 위해 메일 어플리케이션에 의해 수행된다. MX레코드는 기업의 메일 서버와 웹 서버와 같은 호스트 네임을 갖는 것을 허용한다. 따라서 @뒤에오는 호스트 네임을 간결하게쓸 수 있다.
  • 부하 분산 : DNS는 중복 웹 서버같은 여러 중복 서버사이에 부하를 분산하기 위해서도 사용되고 있다. cnn.com은 인기가 많아서 여러 서버에 중복되어서, 각 서버가 다른 종단 시스템에서 수행되고 다른 IP주소를 갖는다. 중복 웹 서버의 경우, 여러 IP주소가 하나의 정식 호스트 네임과 연관되어있다. DNS 데이터베이스는 이 IP 주소 집합을 갖고 있다. 클라이언트가 주소 집합으로 매핑하는 호스트네임에대한 DNS 질의를 하면, 서버는 IP주소 집합 전체를 가지고 응답한다. 그러나 각 응답에서의 주소는 순환식으로 보낸다. 클라이언트는 대체로 주소 집합 내부의 첫번째 IP주소로 HTTP 요청메시지를 보내므로, DNS의 순환방식은 여러 중복 서버들 사이에서 트래픽을 분산하는 효과를 나타낸다.

DNS : 클라이언트-서버 패러다임을 통한 주요 네트워크 기능
HTTP, FTP, SMTP처럼 DNS프로토콜은
1. 클라이언트 - 서버 구조로 통신하는 종단 사이에서 수행된다.
2. 통신하는 종단 시스템 사이에서 DNS 메시지를 전달하기 위해 하위 종단 트랜스포트 프로토콜에 의존하므로 애플리케이션 계층 프로토콜이다. 그러나 다른 의미에서 DNS의 역할은 웹, 파일 전송, 그리고 전자메일 애플리케이션과는 매우다르다. 이들 애플리케이션과는 다르게 DNS는 사용자가 직접 상호작용하는 애플리케이션이아니다. 대신에 DNS는 핵심적인 인터넷 기능을 제공한다. 즉, 인터넷에서 사용자 애플리케이션과 다른 소프트웨어를 위해 호스트 네임을 하위 IP주소로 변환하는 기능을 제공한다.

DNS 동작 원리 개요

  • 호스트 네임을 IP 주소로 변환하는 서비스에 초점을 맞춘다.
  • 사용자의 호스트에서 실행되는 어떤 애플리케이션(크롬)이 호스트네임을 IP주소로 변환시키려 한다고 가정하자. 그 애플리케이션은 변환될 호스트 네임을 명시하여 DNS측의 클라이언트를 호출할 것이다. 그리고 사용자 호스트의 DNS는 네트워크에 질의 메시지를 보낸다. 모든 DNS질의와 응답 메시지는 포트 53의 udp데이터그램으로 보내진다. 수 msec에서 수 sec의 지연 후에 사용자 호스트의 DNS는 요청한 매핑에 해당하는 DNS응답 메시지를 받는다. 이제 이 매핑은 호출한 애플리케이션으로 전달된다.
  • 사용자 호스트의 호출한 애플리케이션 관점에서는 DNS는 간단하고 직접적인 변환서비스를 제공하는 블랙박스이다.
  • DNS의 간단한 설계로 모든 매핑을 포함하는 하나의 인터넷 네임 서버를 생각할 수 있다. 이러한 중앙 집중 방식에서 클라이언트는 모든 질의를 단일 네임 서버로 보내고, DNS 서버는 질의 클라이언트에게 직접 응답한다. 이 방식은 간단하므로 매력이 있지만, 수많은 호스트를 가진 오늘날의 인터넷에서는 적합하지 않다.
    -> 문제점
    1. 서버의 고장 : 만약 이 네임 서버가 고장나면, 전체 인터넷이 작동하지 않는다.
    2. 트래픽 양 : 단일 DNS 서버가 모든 DNS 질의를 처리해야한다.(수 많은 호스트에서 발생된 모든 HTTP 요청과 전자메일 메시지의 처리)
    3. 먼 거리의 중앙 집중 데이터 베이스 : 단일 DNS 서버가 모든 질의 클라이언트로 부터 가까울 수 만은 없다. 단일 서버를 뉴욕에 둔다면, 호주로 부터 모든 질의는 느리고 혼잡한 링크를 거쳐 지구 반대편까지 여행해야한다.
    4. 유지관리 : 단일 네임서버는 모든 인터넷 호스트에 대한 레코드를 유지해야한다. 이 중앙 집중 데이터베이스는 거대해지고 모든 새로운 호스트를 반하기 위해 자주 갱신해야만한다
    * 즉, 단일 DNS 서버에 있는 중앙 집중 데이터베이스는 확장성이 전혀 없다.

분산 계층 데이터 베이스

  • 확장성 문제를 다루기 위해 DNS는 많은 서버를 이용하고 이들을 계층 형태로 구성하며 전세계에 분산 시킨다. 어떠한 단일 DNS 서버도 인터넷에 있는 모든 호스트에 대한 매핑을 갖지 않는 대신에 그것은 DNS 서버 사이에 분산된다. 루트 DNS,TLD DNS, 책임 DNS가 있다.

  • 어떤 DNS 클라이언트가 호스트네임 www.naver.com의 IP주소를 결정하기 원한다고 가정해보자.
    먼저 이 클라언트는 루트 서버 중 하나에 접속한다. 루트 서버는 최상위 레벨 도메인 최상위 레벨 도메인 com을 갖는 TLD서버 IP주소를 보낸다. 그다음 클라이언트는 이 TLD 서버 중 하나에 접속하고, 서버는 도메인 naver.com을 가진 책임 서버의 IP주소를 보낸다. 클라이언트는 naver.com의 책임 서버 중에서 하나로 접속한다. 서버는 호스트 네임www.naver.com의 ip주소를 보낸다.

루트 DNS 서버

  • 인터넷에는 400개 이상의 루트 DNS 서버가 있는데 , 대부분 북미 지여게 위치한다.

최상위 레벨 도메인 (TLD) 서버

  • com, org, net, edu와 같은 상위 레벨 도메인과 kr, uk, ca, fr, jp 같은 모든 국가의 사우이레벨 도메인에 대한 TLD 서버가 있다.

책임 DNS 서버

  • 인터넷에 접근하기 쉬운 호스트를 가진 모든 기관은 호스트네임을 IP주소로 매핑하는 공개적인 DNS 레코드를 제공해여한다. 기관의 책임 DNS 서버는 이 DNS 레코드를 갖고있다. 또한 기관은 이 레코드를 갖도록 자신의 책임 DNS 서버의 구현을 선택할 수 있고, 일부 서비스 제공자의 책임 DNS 서버에 이 레코드를 저장하도록 비용을 지불한다.

로컬 DNS 서버

위의 세개와는 다르게 계층구조에 엄격하게 속하지 않는 서버이다. ISP들은 로컬 DNS 서버를 갖는다. 호스트가 ISP와 연결 될때, 그 ISP는 로컬 DNS서버로 부터 IP주소를 호스트에게 제공한다.

그림과 같은 과정을 재귀적 질의와 반복적 질의라고한다.
요청하는 호스트로부터 로컬 DNS까지 질의는 재귀적이고, 나머지 질의는 반복적이다.

여러개의 주소를 갖고 있음.

구글서버를 책임지는 책임서버를 물어보기


여기에 DNS 서버에 구글 서버를 넣어놓고 naver를 물어보면 접근이 안됨
DNS 서버에 구글을 넣어놓고 lookup naver.com을 하면 접근이 안됨

DNS 캐싱

DNS는 지연 성능향상과 네트워크의 DNS 메시지 수를 줄이기 위해 캐싱을 사용한다. 질의 사슬에서 DNS 서버가 DNS 응답을 받았을 때 그것은 로컬 메모리에 응답에 대한 정보를 저장할 수 있다. 사람들이 자주 가는 것을 기억해서 자주 가는 주소들을 기억하는 캐싱이다. -> 로드밸런싱, 투명성 담보

0개의 댓글