-
DNS란?프로그래밍 기초 공부 2022. 10. 31. 01:33
25번째로 포스팅하게 될 내용은 DNS에 관한 내용입니다.
[ DNS ]
- 웹사이트에 접속 할 때 우리는 외우기 어려운 IP 주소 대신 도메인 이름을 사용함
- 도메인 이름을 사용했을 때 입력한 도메인을 실제 네트워크상에서 사용하는 IP 주소로 바꾸고 해당 IP 주소로 접속하는 과정이 필요
- 이러한 전체 시스템을 DNS(도메인 네임 시스템)라고 함
- DNS는 전세계적으로 약속된 규칙을 공유
- 상위 기관에서 인증된 기관에게 도메인을 생성하거나 IP 주소로 변경할 수 있는 ‘권한’을 부여함
- DNS는 이처럼 상위 기관과 하위 기관과 같은 ‘계층 구조’를 가지는 분산 데이터베이스 구조를 가짐
[ DNS 구성 요소 ]
도메인 네임 스페이스
도메인 네임 스페이스라는 규칙으로 도메인 이름 저장을 분산
- DNS는 전세계적인 거대한 분산 시스템이다.
- 도메인 네임 스페이스는 이러한 DNS가 저장 관리하는 계층적 구조를 의미
- 도메인 네임 스페이스는 최상위에 루트 DNS 서버가 존재, 그 하위로 연결된 모든 노드가 연속해서 이어진 계층 구조
계층적 도메인 레벨
- 도메인 네임 스페이스의 트리 구조는 최상위 레벨부터 순차적으로 계층적 소속 관계를 나타냄
- 하위 조직의 네임 스페이스를 할당하고 관리하는 방식은 각 하위 기관의 관리 책임자에게 위임
- 위임 구조는 호스트의 증가에 대한 관리가 효율적으로 이루어지는 것을 가능하게 함
FQDN (Fully Qualified Domain Name)
- 전체 도메인 이름
- ex) 전체 도메인 이름: www.hello.kr
- 호스트 이름: www
- 도메인 이름: hello.kr
네임 서버
- 권한 있는 DNS 서버
- 문자열로 표현된 도메인 이름을 실제 컴퓨터가 통신할 때 사용하는 IP 주소로 변환시키기 위해서는 도메인 네임 스페이스의 트리 구조에 대한 정보가 필요한데 이러한 정보를 가지고 있는 서버
- 데이터베이스 역할(저장, 관리), 찾아주는 역할, 요청 처리 응답 구현
- 전 세계에 13개의 Root DNS 서버가 구축되어 있음
- Root DNS 서버
- ICANN이 직접 관리하는 절대적인 서버
- TLD DNS 서버 IP 주소를 저장하고 안내하는 역할
- Top-Level Domain(TLD) DNS 서버
- 도메인 등록 기관이 관리하는 서버
- Authoritative DNS 서버의 주소를 저장하고 안내하는 역할
- 도메인 판매 업체의 DNS 설정이 변경되면 도메인 등록 기관으로 전달되기 때문에 어떤 도메인이 어떤 판매업체에서 구매했는지 알수 있는 것
- Second-Level Domain(SLD) DNS 서버 (Authoritative DNS 서버 라고도 함)
- 실제 개인 도메인과 IP 주소의 관계가 저장, 변경되는 서버
- 그래서 권한의 의미인 Authoritative가 붙음
- 일반적으로 도메인/호스팅 업체의 네임서버
- 개인 DNS 구축해도 이 경우에 해당
리졸버
- 권한 없는 DNS 서버
- DNS 클라이언트 요청을 네임 서버로 전달하고 찾은 정보를 클라이언트에게 제공하는 기능을 수행
- 하나의 네임 서버에게 DNS 요청을 전달하고 해당 서버에 정보가 없으면 다른 네임 서버에게 요청을 보내 정보를 받음
- 수많은 네임서버에 접근하여 사용자로부터 요청 받은 도메인의 IP 정보를 조회하는 기능을 수행
- 리졸버에 기능을 단말에 구현하는 것은 자원의 한계가 있기에 대부분 기능을 DNS 서버에 구현하고
클라이언트 호스트는 리졸버의 단순한 기능만을 지닌 리졸버 루틴을 구현하는 옵션이 제시됨 - 스터브 리졸버(Stub Resolver)
- 단순화된 기능의 리졸버를
- 스터브 리졸버는 수 많은 네임 서버의 구조 파악 필요없이 리졸버가 구현된 DNS 서버의 IP 주소만 파악하면 됨
- 도메인에 대한 질의를 받은 스터브 리졸버는 설정된 DNS 서버로 DNS Query(질의)를 전달하고
DNS 서버로부터 최종 결과를 응답 받아 웹 브라우저로 전달하는 인터페이스 기능만을 수행
[ DNS Query ]
- DNS 클라이언트와 DNS 서버는 DNS 쿼리를 교환
- DNS 쿼리는 Recursive(재귀적) 또는 Iterative(반복적)으로 구분
- Recursive Query (재귀적 질의)
- 결과물(IP 주소)를 돌려주는 작업
- Recursive 쿼리를 받은 Recursive 서버는 Iterative 하게 권한 있는 네임 서버로 Iterative 쿼리를 보내서 결과적으로 IP 주소를 찾게 되고 해당 결과물을 응답
- 사전적 의미로써 재귀로, 응답을 돌려주는 쿼리
- Iterative Query (반복적 질의)
- Recursive DNS 서버가 다른 DNS 서버에게 쿼리를 보내어 응답을 요청하는 작업
- Recursive 서버가 권한 있는 네임 서버들에게 반복적으로 쿼리를 보내서 결과물(IP 주소)를 알아냄
- Recursive 서버에 이미 IP 주소가 캐시 되어있다면 이 과정은 건너 뜀
- Recursive Query (재귀적 질의)
[ DNS 동작 과정 ]
- 웹 브라우저는 해결사 서버에게 요청
- 해결사 서버는 최상위 기관에서 관리하는 네임 서버에게 요청
- 최상위 기관에서 관리하는 네임 서버는 응답
- 해결사 서버는 이제는 .kr 네임 서버에게 요청
- .kr 네임 서버는 응답
- 해결사 서버는 가비아 네임 서버에게 요청한다.
- 가비아 네임 서버는 응답
- 해결사 서버는 웹 브라우저에게 알려줌
'프로그래밍 기초 공부' 카테고리의 다른 글
CDN(Content Delivery Network)란? (0) 2022.11.03 CORS(Cross-Origin-Resource Sharing)란? (0) 2022.10.31 SSR과 CSR이란? (0) 2022.10.31 MPA와 SPA란? (0) 2022.10.29 AJAX란? (0) 2022.10.17