DNS(Domain Name System)
컴퓨터의 경우 사용하는 운영체제도 서로 다르고, 프로그램의 경우 아예 구현된 언어가 다르기 위해 네트워크에서 이들이 통신할 수 있도록 하려면 공통된 통신 규약, 즉 프로토콜이 필요합니다.
이러한 프로토콜로 IP가 있습니다.
IP는 통신에 필요한 고유 주소를 말하며 통신 기능이 제공되는 기기들이 서로 통신을 하기 위해 필요한 고유 번호이며, 각 장치들 간 통신을 식별할 수 있는 전화번호와 같습니다.
이러한 전화번호는 외우기도 어렵고, 잘못 기억할 가능성이 높기 때문에. 각각 번호에 대한 이름을 부여했으며 이것을 도메인 네임 이라 부릅니다.
도메인의 정보가 저장되어 있는 DNS 서버는 도메인과 도메인에 해당하는 IP 주소를 저장하고 있는 전화번호부와 같은 역할을 하고 있습니다.
이 시스템은 다층적으로 구성된 네트워크에 분산되어 도메인 정보들이 저장되고 조회됩니다.
자 이제 전화번에 이름도 있고 잘 정리도 했습니다.
서로 다른 전화번호가 연결되고 전달하고자 하는 내용이 잘 전달되기 위한 통로로 게이트웨이가 필요합니다.
이렇게 IP와 DNS, 게이트웨이의 개념에 대해 말씀드렸으며,
번호의 역할을 하는 IP 이런 전화번호에 이름을 붙여 관리하는 DNS란 어떻게 관리되고 사용되는지 더 자세히 알아보겠습니다.
DNS 작동 방식(쿼리 과정)
쿼리과정은 3개의 종류가 있습니다.
재귀 쿼리, 비재귀 쿼리, 반복 쿼리가 있습니다.
내 컴퓨터가 blog.naver.com이라는 도메인에 접속하려 합니다.
먼저 컴퓨터 자체에 호스트스 파일을 통해 자신이 이 도메인에 대한 IP 정보를 갖고 있는지 확인합니다.
여기에 있는 정보는 가장 우선순위 정보가 됩니다.
호스트스 서버에 먼저 확인하고 정보가 없는 것이 확인이 되면
브라우저는 pc에 설정된 로컬 DNS 서버에 해당 도메인의 IP를 갖고 있는지 물어봅니다.
여기에는 이 주소에 대한 정보가 이미 캐싱되어 있을 수 있고 없을 수도 있습니다.
없는 경우 재귀쿼리로 요청된 리소스 레코드 또는 레코드를 찾을 수 없는 경우 오류 메시지로 클라이언트에 응답합니다.
캐싱된 정보가 있는 경우 캐시 정보에 있는 IP 주소를 반환 합니다. 이것을 비재귀 쿼리라 합니다.
캐싱된 정보가 없어 재귀쿼리 후 클라이언트는 다시 DNS 서버에 물어봅니다.
dns 서버는 캐시가 없다는 것을 이미 처리를 한 후 이기에
전달자를 통해 root DNS 서버부터 하위 DNS 주소에 걸쳐 해당하는 IP를 어디서 찾을 수 있는지 물어봅니다.
루트 dns 는 응답으로 .com으로 끝나는 도메인들을 담당하는 서버의 ip 주소를 반환합니다.
로컬 dns 서버는 이 주소를 받아들고 top level dns 서버로 찾아갑니다.
.com 담당 서버는 이번에는 naver.com의 도메인 정보를 가진 second level dns 서버의 ip 주소를 반환합니다.
마지막으로 호스트의 정보를 받아 브라우저에 반환하고 해당 pc는 반환받은 ip 주소를 통해 blog.naver.com의 서버로 접속하게 됩니다.
이러한 각각의 네임서버를 통해 계층적 구조로 나누어 DNS에 해당하는 IP 주소를 찾아가며, 네임서버들이 도메인 주소를 관리하기 위한 트리구조를 네임스페이스라고 합니다.
호스트 이름과 일치하는 IP를 찾는 역할은 DNS Resolver에 의해 처리가 되며
이렇게 DNS에 대한 IP 주소를 요청해서 받아오는 과정을 DNS쿼리 과정이라 합니다.
전달자와 조건부 전달자
전달자는 없는 도메인 네임을 미리 설정한 DNS 서버에 물어보는 것입니다.
1번 과정을 보면 DNS 서버가 이름 쿼리를 받으면 기본 영역, 보조 영역 및 마지막으로 캐시를 해당 순서로 사용하여 이 쿼리를 확인하려고 시도합니다.
2번 과정에서 이름 쿼리가 로컬 영역 데이터 또는 캐시를 사용하여. 따라서 이름을 확인할 수 없는 경우 전달자로 지정된 DNS 서버로 쿼리를 전달합니다
초기 쿼리를 받은 원래 DNS 서버는 전달자로부터 응답을 잠시 기다립니다.
3번 작업은 앞의 1번과 2번 작업이 실패하면 루트 힌트에 지정된 DNS 서버에 최후의 수단으로 연결을 시도합니다.
조건부 전달자는 특정 도메인 네임을 설정한 DNS 서버에 물어보는 것입니다.
이는 특정 도메인 이름에 대한 쿼리만 전달하는 DNS 서버입니다.
조건부 전달자는 쿼리에 포함된 도메인 이름을 기반으로 특정 전달자에게 쿼리를 전달하도록 구성 됩니다.
도메인 이름에 따른 전달을 받은 전달 프로세스에 이름 기반 조건을 추가하여 기존 전달을 향상시킵니다.
이를통해 전달자와 조건부 전달자는
반복쿼리를 통해 루트 도메인(.)으로부터 해당 이름이 검색될 때까지 반복하는 상황에
DNS의 부하를 줄여 더 좋은 성능을 발휘할 수 있게 합니다.
'시스템엔지니어 > Server' 카테고리의 다른 글
Hyper-V 가상 스위치 만들기, 가상 컴퓨터 만들기 끝판왕 (0) | 2022.10.21 |
---|---|
Hyper-V 설치와 설치 확인 방법 끝판왕 (0) | 2022.10.21 |
OSI 7 Layer 정리 끝판왕 (0) | 2022.10.21 |
서브넷 마스크의 클래스와 예제 풀이 끝판왕 (0) | 2022.10.21 |
IP, SUBNET, GATEWAY 의 개념 끝판왕 (0) | 2022.10.21 |