DNS
- 웹 브라우저를 통해 특정 사이트에 진입할 때, IP주소를 대신하여 사용하는 주소를 도메인이라고 한다.
- 한눈에 파악하기 힘든 IP주소를 보다 분명하게 나타낼 수 있다.
- Ex. IP주소가 지번 또는 도로명 주소라면, 도메인은 해당 주소에 위치한 상호명
- 터미널 명령어 nslookup
- 네트워크 상 존재하는 모든 PC는 IP주소 가짐
- But!!, 모든 IP주소가 도메인 이름을 가지는 것은 아니다.
- 로컬 PC를 나타내는 127.0.0.1은 localhost로 사용 가능, 그 외 모든 도메인 이름은 일정기간 동안 대여
도메인 이름과 IP주소 매칭 방법
- 브라우저의 검색창에 도메인 이름을 입력하여 해당 사이트로 이동하기 위해서, 해당 도메인 이름과 매칭 된 IP주소를 확인하는 작업이 반드시 필요
- 네트워크에는 이것을 위한 별도의 서버 있음 → DNS 서버
DNS
- Domain Name System → 데이터 베이스 시스템
- 호스트의 도메인 이름을 IP주소로 변환하거나, 반대의 경우를 수행하는 데이터베이스 시스템
- DNS는 범국제적인 단위로 웹사이트의 IP주소와 도메인 주소를 이어주는 환경/시스템
- DNS 시스템 안에서 이어주는 역할을 하는 서버 → 풀네임으로 DNS서버 (or 네임서버)
DNS 처리 순서
- 브라우저의 검색창에 naver.com 입력
- 이 요청은 DNS에서 IP주소 125.209.222.142 찾음
- 이 주소에 해당하는 웹 서버로 요청을 전달하여 클라이언트와 서버 통신
서버 종류
- Recursive DNS Server
- 인터넷 사용자가 가장 먼저 접근하는 DNS 서버
- 매번 3개의 DNS서버를 거치면 효율이 떨어져 이전에 DNS 서버에 요청에 얻은 데이터를 일정 기간 동안 캐시 하는 형태로 저장해두는 서버
- 직접 도메인과 IP주소의 관계를 기록/저장/변경❌ 캐시만 보관⭕️
- 대표적으로 KT/LG/SK와 같은 ISP(통신사) DNS 서버가 있음
- Root DNS server
- ICANN이 직접 관리, 최상위 도메인 DNS 서버 IP주소들을 저장해두고 안내하는 역할
- TLD (최상위 도메인) DNS Server
- 도메인 등록기관이 관리하는 서버
- Authoritative DNS Server
- 실제 개인 도메인과 IP주소의 관계가 기록/저장/변경되는 서버
- 일반적으로 도메인/호스팅 업체의 DNS 서버를 말하지만, 개인 DNS 서버를 구축한 경우에도 여기 해당
서버의 종류를 나누는 이유?
- 존재하는 도메인 수가 많기 때문에 하나의 DNS 서버만 사용한다면, 성능, 유지 관리 등 문제가 생김 → DNS 서버 종류를 계층화해 단계적으로 처리하여 트래픽을 분산하고 유지 및 관리를 안정적으로 하기 위해 분리
- 시간이 오래 걸림
- DNS 서버가 죽으면 → 서비스 중단
동작 과정 예시)
- 브라우저에서 Nesite.com을 검색한 뒤, 사용하고 있는 통신사인 KT DNS 서버에게 도메인 주소에 해당하는 IP 주소를 요청한다. (브라우저 기본 DNS 설정은 통신사 DNS 서버이다.)
- ISP 서버에서는 캐시 데이터가 없다는 것을 확인하고 Root DNS 서버에게 어디로 가야 하는지 요청한다. (만약 캐시가 있다면 8번 단계로 건너뛴다.)
- Root DNS 서버는 TLD DNS 서버 주소만 관리하므로 ***.com 도메인을 보고, com 최상위 도메인을 관리하는 TLD DNS 서버 주소를 안내한다.
- ISP 서버는 com 서버에게 어디로 가야 하는지 다시 요청한다.
- com 서버는 가비아 DNS 서버가 해당 도메인이 관리되고 있다는 사실을 확인하고, 가비아 DNS 서버 주소를 안내한다.
- ISP 서버는 가비아 서버에게 다시 요청한다.
- 가비아 서버는 요청 받은 도메인 주소의 IP 주소를 확인하고 알려준다. 동시에 ISP 서버는 해당 정보를 캐시로 기록한다.
- ISP 서버는 브라우저에게 알아낸 IP 주소를 안내한다.
DNS -UDP 사용
- 연결 설정에 드는 비용이 없다.
- 전달하는 패킷의 크기가 작기 때문에 신뢰성이 보장되지 않아도 괜찮다. 못 받으면 다시 전달
- 연결 상태 유지 필❌
DNS Round Robin
- round robin 이란, DNS 서버 구성 방식 중 하나
Round Robin 원리
- 웹 서비스를 담당할 여러 대의 웹 서버는 자신의 공인 IP를 각각 가지고 있다.
- 사이트 접속을 하기 위해 사용자가 해당 도메인 주소를 브라우저에 입력
- DNS가 도메인 정보 조회
- IP주소를 여러 대의 서버 IP리스트 중에서 라운드 로빈 형태로 랜덤 하게 하나 혹은 여러 개를 선택하여 사용자에게 알려줌
- 알려준 주소로 접속
- 사용자의 OS 어플리케이션에 따라 동작 다름
- 여러 개의 IP 중 제일 먼저 조회된 IP 선택
- 무작위로 IP 선택
- 선택 IP에 접속이 안될 경우, 그다음 조회된 IP로 접속하도록 호칙 추가 가능
- 사용자의 OS 어플리케이션에 따라 동작 다름
- 결과: 웹 사이트에 접속하는 다수의 사용자는 실제로는 복수의 웹 서버에 나뉘어 접속해도 되면서 자연스럽게 서버의 부하가 분산되는 방식
Round Robin 단점
- 서버의 수만큼 공인 IP주소 필요
- 균등 분산 ❌
- 서버가 다운되도 확인 불가
- 웹 서버의 부하가 높아서 응답이 느려지거나 접속수가 꽉 차서 접속을 처리할 수 없는 상황인 지를 전혀 감지할 수가 없기 때문에 어떤 원인으로 다운되더라도 이를 검출하지 못하고 유저들에게 제공
- 유저들은 간혹 다운된 서버로 연결
출처
https://hanamon.kr/네트워크-기본-도메인과-dns-네임서버란-개념편/
https://steady-coding.tistory.com/523
https://yaelimeee.tistory.com/46?category=962256