CS 공부

DNS 서비스 & 동작원리 본문

CS공부/컴퓨터네트워크

DNS 서비스 & 동작원리

kluiop1 2021. 8. 2. 17:55

호스트에 대한 하나의 식별자는 호스트 네임이다.

호스트 네임은 인터넷에서의 그 호스트위치에 대한 정보를 거의 제공하지 않는다.

 

이러한 이유로 호스트는 흔히 말하는 IP주소로도 구별된다.

 

DNS가 제공하는 서비스

 

라우터는 고정길이의 계층구조를 가진 IP주소를 좋아한다.

이러한 신호 차이를 절충하기 위해 호스트 네임을 IP주소로 변환해 주는 디렉터리 서비스가 필요하다

 

DNS 프로토콜은 UDP 상에서 수행되며 포트번호 53을 이용한다.

 

DNS는 다른 애플리케이션 프로토콜들이 HTTP,SMTP,FTP등 사용자가 제공하는 호스트 네임을 IP주소로 변환하기 위해 주로 이용

 

DNS는 호스트 네임을 IP 주소를 변환하는 것 외에 다음과 같은 중요한 추가 서비스를 제공한다.

 

호스트 엘리어싱(Host aliasing): 복잡한 호스트 네일을 가진 호스트는 하나이상의 별명을 가질 수 있다.

 

예를 들어 relay1.west-coast.enterprise.com 같은 호스트 네임은 enterpriser.comwww.enterprise.com 과 같은 2개의 별칭을 가질 수있다. 이 경우에 relay1.west-coast.enterprise.com은 정식 호스트 네임(canonical hostname)이라고한다.

 

DNS는 호스트의 IP주소 뿐만 아니라 제시한 별칭 호스트 네임에 대한 정식 호스트 네임을 얻기 위해서 이용될 수 있다.

 

메일 서버 엘리어싱(mail server aliasing): DNS는 호스트의 IP주소 뿐만 아니라 제공된 별칭 호스트 네임에 대한 정식 호스트 네임을 얻기 위해 메일 애플리케이션에 의해 수행된다.

 

부하 분산(load distribution): DNS는 중복 웹 서버 같은 여러 중복 서버 사이에 부하를 분산하기 위해서도 사용하고 있다.

 

CNN.com 과 같은 인기 있는 사이트는 여러서버에 중복되어있어서 각 서버가 다른 종단 시스템에서 수행되고 다른 IP주소를 갖는다

 

중복 웹 서버의 경우 여러 IP 주소가 하나의 정식호스트네임과 연관되어있다. DNS 데이터베이스는 이 IP 주소가 하나의 정식 호스트 네임과 연관되어 있다. DNS 데이터베이스는 이 IP 주소 집합을 갖고 있다.

 

클라이언트가 주소 집합으로 매핑하는 호스트 네임에 대한 DNS 질의를 하면 서버는 IP주소 집합 전체를 가지고 응답한다.

 

각 응답에서의 주소는 순환식으로 보낸다.

 

클라이언트는 대체로 주소 집합 내부의 첫 번째 IP주소로 HTTP 요청메시지를 보내므로 DNS의 순환 방식은 여러 중복 서버들 사이에 트래픽을 분산하는 효과를 낸다.

 

DNS 동작 원리 개요

사용자의 호스트에서 실행되는 어떤 애플리케이션 호스트 네임을 Ip주소로 변환시키려한다고 가정하자.

 

1 .애플리케이션은 변환될 호스트 네임을 명시하여 DNS 측의 클라이언트를 호출할 것이다.

2. 그리고 사용자 호스트의 DNS는 네트워크에 질의 메시지를 보낸다 모든 DNS 질의와 응답 메시지는 포트 53UDP 데이터그램으로 보내진다.

3. DNS는 요청한 매핑에 해당하는 DNS 응답 메시지를 받는다

4. 매핑은 호출한 애플리케이션으로 전달된다.

 

단일 서버

DNS의 간단한 설계로 모든 매핑을 포함하는 하나의 인터넷 네임서버를 생각할 수 있다.

이 방식은 간단하므로 매력이 있지만 수많은 호스트를 가진 오늘날의 인터넷에는 적합하지 않다 이 방식의 문제점으로는 다음과 같은 것을 생각 해볼 수 있다.

 

서버의 고장: 만약 이 네임 서버가 고정나면 전체 인터넷이 작동하지 않는다.

 

트래픽 양: 단일 DNS 서버가 모든 DNS 질의를 처리해야한다.

 

먼 거리의 중앙 집중 데이터베이스: 단일 DNS 서버가 모든 질의 클라이언트로부터 가까울 수만은 없다.

이는 매우 심각한 지연을 일으킬 수 있다.

 

유지관리: 단일 네임 서버는 모든 인터넷 호스트에 대한 레코드를 유지해야한다.

이 중앙 집중 데이터베이스는 거대해직 모든 새로운 호스트를 반하기 위해 자주 갱신해야만 한다.

 

요약하면 단일 DNS 서버에 있는 중앙 집중 데이터베이스는 확장성이 전혀 없다.

 

분산 계층 데이터베이스

확장성 문제를 다루기 위해 DNS는 많은 서버를 이용하고 이들은 계층형태로 구성하며 전 세계에 분산시킨다.

어떠한 단일 DNS 서버도 인터넷에 있는 모든 호스트에 대한 매필을 갖지 않는 대신에 그것은 DNS 서버 사이에 분산된다.

 

위의 그림을 보면 계층으로 구성된 세 유형의 DNS 서버가 있다.

 

루트 DNS 서버

인터넷에슨 400개 이상의 루트 DNS 서버가 있음

 

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

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

 

책임DNS 서버

인터넷에서 접근하기 쉬운 호스트를 가진 모든 기관은 호스트 네임을 IP주소로 매핑하는 공개적인 DNS 레코드를 제공해야한다.

 

DNS의 다른 중요한 형태는 로컬 DNS 서버이다 로컬 DNS 서버는 서버들의 계층구조에 엄격하게 속하지는 않지만 DNS 구조에 중심에 있다.

 

ISP들은 로컬 DNS 서버를 갖는다. 호스트가 ISP에 연결될 때 그 ISP는 로컬 DNS 서버로부터 IP주소를 호스트에게 제공한다.

 

DNS 질의의 형태

반복적 질의(iterative query)

 

 

재귀적 질의(recursive query)

 

DNS 캐싱

 

DNS는 지연 성능 향상과 네트워크의 DNS 메시지 수를 줄이기 위해 캐싱을 사용한다.

 

DNS 질의 사슬에서 DNS 서버가 DNS 응답을 받았을 때 그것은 로컬 메모리에 응답에 대한 정보를 저장할 수 있다.

 

만약 호스트 네임과 IP 주소 쌍이 DNS 서버에 저장되고 다른 호스트네임으로부터 같은 질의가 DNS 서버로 도착한다면 DNS 서버는 호스트 네임에 대한 책임이 없을 때 조차 원하는 IP주소를 제공할 수 있다.

 

호스트 DNSIP 주소사이의 매핑과 호스트는 영구적인 것이 아니기 때문에 DNS 서버는 어떤 기간 이후에 저장된 정보를 제거한다.

'CS공부 > 컴퓨터네트워크' 카테고리의 다른 글

POST와 GET  (0) 2021.08.02
HTTP 스트리밍 및 대쉬(dash) & CDN  (0) 2021.08.02
Blocking & Non-Blocking I/O(+동기/비동기)  (0) 2021.06.30
로드밸런싱  (0) 2021.06.30
UDP란  (0) 2021.06.26