DNS

DNS


DNS란?

DNS란 인터넷 도메인 이름들의 위치를 알아내기 위한 IP 주소로 바꾸어주는 시스템이다. 도메인 이름은 인터넷 주소로서 사람들이 기억하기 쉽고, 의미있게 붙인 이름이지만, 인터넷에서 어떤 컴퓨터를 실제로 찾기 위해서는 숫자 체계로 된 IP 주소가 필요하다.

즉 사람들이 도메인 이름을 검색하면 DNS 서비스에서 해당 도메인의 이름을 숫자로 이루어진 IP 주소로 변환시켜서 사람들이 원하는 인터넷 도메인으로 들어갈 수 있게 해주는 것이 바로 DNS이다. 비유하자면 전화번호부에서 XX건설이라는 이름을 찾으면 XX건설의 전화번호가 나오는 것과 같다. 여기서 XX건설은 해당 도메인의 이름이고 XX건설의 전화번호는 해당 도메인의 실제 IP 주소이다

인터넷 규모가 아주 작았던 시대에는 특정 IP 주소를 특정 컴퓨터와 일치시키는 일이 별로 어렵지 않았지만 인터넷이 커지고 더 많은 디바이스와 사람들이 참여하면서 상황이 바뀌었다. 모든 디바이스를 위한 디렉터리를 만들어야 한다는 점 외에도 사람은 다양한 사이트에 연결하기 위해 단어를 사용한다는 점도 고려해야 한다. 대부분의 사람에게 숫자 집합보다는 단어를 기억하기가 더 쉽기 때문이다. 지금도 여전히 브라우저에 IP 주소를 입력하는 방법으로 웹사이트에 접속할 수 있다.

DNS의 구성 요소

도메인 이름과 IP 주소의 매핑을 위한 관리 체게인 DNS는 크게 도메인 네임 스페이스(Domain Name Space), 네임 서버(Name Server), 리졸버(Resolver)로 구성된다.

도메인 네임 스페이스(Domain Name Space)

도메인 네임 스페이스란 DNS는 거대한 분산 네이밍 시스템이며, 도메인 네임 스페이스는 이러한 DNS가 저장/관리하는 계층적 구조를 의미한다.


DNS


위 그림과 같이 도메인 네임 스페이스는 최상위에 루트 DNS 서버가 존재하고, 그 하위로 인터넷에 연결된 모든 노드(네모 표시)가 연속해서 이어진 계층 구조로 구성되어 있다.


이는 우리가 일반적으로 PC에서 사용하는 디렉토리 구조와 유사함을 알 수 있는데, 각 레벨(Top Level, Second Level 등)의 도메인은 그 하위 도메인에 관한 정보를 관리하는 구조이다.


네임 서버(Name Server)


네임서버란 각각의 호스트를 나타내는 주소는 앞서 설명하였듯이, 숫자로 구성된 IP 주소와 함께 사용하기 편리하고 기억하기 쉬운 도메인 이름을 사용한다.


그러나 실제 웹 클라이언트 - 웹 서버 간의 통신은 숫자로 표현된 IP 주소를 사용하여 통신하는데, 이를 위해서는 문자열로 표현된 도메인 이름을 실제 컴퓨터가 통신할 때 사용하는 숫자로 표현된 IP 주소로 변환시켜 주어야한다.


이러한 동작을 위해서는 도메인 네임 스페이스의 트리 구조에 대한 정보가 필요하며, 이러한 정보를 가지고 있는 서버를 네임 서버라고 한다.


즉, 도메인 이름을 IP 주소로 변환하는 것을 네임 서비스라고 하며 리졸버(Resolver)로부터 요청 받은 도메인 이름에 대한 IP 정보를 다시 리졸버로 전달해주는 역할을 수행하는 것이 네임 서버이다.


이러한 네임 서버는 Primary, Secondary로 구분되는데, Primary 네임 서버는 해당 도메인을 관리하는 주 네임 서버이다. 이 서버의 고장 등의 이유로 동작하지 못하는 경우 이를 대신하여 네임 서버 역할을 수행하는 서버를 Secondary 네임 서버라고 하며, 주기적으로 Primary 네임 서버로부터 정보를 받아와 자신의 정보를 갱신하여 전체 네임 서버의 정보가 일관성 있게 유지 및 관리된다.


리졸버(Resolver)


리졸버는 웹 브라우저와 같이 DNS 클라이언트의 요청을 네임 서버로 전달하고 네임 서버로부터 정보(도메인 이름과 IP 주소)를 받아 클라이언트에게 제공하는 기능을 수행한다.


이 과정에서 리졸버는 하나의 네임 서버에게 DNS 요청을 전달하고 해당 서버에 정보가 없으면 다른 네임 서버에게 요청을 보내 정보를 받아 온다. 이렇듯 리졸버는 수많은 네임 서버에 접근하여 사용자로부터 요청 받은 도메인의 IP 정보를 조회하는 기능을 수행할 수 있어야 한다.


하지만 이러한 리졸버의 모든 기능을 PC와 같은 클라이언트 호스트에 구현하는 것은 단말 시스템 자원의 한계와 같은 제약이 있다.


이에 따라 리졸버의 대부분의 기능을 DNS 서버에 구현하고, 클라이언트 호스트에는 리졸버의 단순한 기능만을 지닌 리졸버 루틴을 구현하는 옵션이 제시되었다.


이러한 단순화된 기능의 리졸버를 스터브 리졸버(Stub Resolver)라고 하며, 스터브 리졸버는 수 많은 네임 서버의 구조를 파악할 필요 없이 리졸버가 구현된 네임 서버의 IP 주소만 파악하면 된다.
도메인에 대한 질의를 받은 스터브 리졸버는 설정된 네임 서버로 DNS 질의를 전달하고 네임 서버로부터 최종 결과를 응답 받아 웹 브라우저로 전달하는 인터페이스 기능만을 수행한다.

참고: http://www.itworld.co.kr/t/62078/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/108921 https://blog.naver.com/PostView.nhn?blogId=sharp428&logNo=220633341869

2019

Chat

4 minute read

ChatClient.java ```JAVA import java.net.; import java.io.;

CMS

less than 1 minute read

Contents Management System

Virtual Machine & Ubuntu

1 minute read

가상 머신으로 리눅스(Ubuntu) 서버 구축하기 우분투를 설치하는 방법은 여러가지가 있다.

DNS

2 minute read

DNS DNS란?

블로그 만들었습니다

less than 1 minute read

OSS와 실전프로젝트 2 수업에서 필요한 내용들을 업로드하는 용도입니다.

리눅스 명령어 연습

3 minute read

OSS 수업에서 리눅스 명령어들을 연습하고 블로그에 포스팅하라는 과제가 나왔습니다.

Back to Top ↑