눈송이의 개발생활
[Network]DNS란? 본문
DNS (Domain Name System)
Domain이란?
- IP 주소를 대신해서 사용하는 주소
- 외우기도 어렵고 한 눈에 파악하기 쉽지 않은 IP 주소보다 쉽고 분명하게 나타낼 수 있음
DNS란?
- 도메인 이름을 실제 네트워크 상에서 사용하는 IP 주소로 변환해주고 접속해주는 시스템
- DNS 서버로 도메인 이름과 매칭된 IP 주소 확인
- DNS는 데이터베이스 시스템
- 상위 기관에서 인증된 기관에게 도메인을 생성하거나 IP 주소로 변경할 수 있는 ‘권한’을 부여
- 계층 구조를 갖는 분산 데이터베이스 구조
- 도메인에 점(dot) == 계층
- 도메인은 계층적으로 관리
DNS 구성 요소
🧩- 도메인 네임 스페이스(Domain Name Space)
- 도메인 이름 저장 분산
- 네임 서버(Name Server) = 권한 있는 DNS 서버
- = DNS 서버
- 해당 도메인 이름의 IP 주소 찾음
- 리졸버(Resolver) = 권한 없는 DNS 서버
- DNS 클라이언트 요청을 네임 서버로 전달
- 찾은 정보를 클라이언트에 제공
- Resolver = Recursive DNS Server = Local Server(of ISP) = Recursor
도메인 네임 스페이스(Domain Name Space)
1️⃣- DNS는 전세계적인 거대한 분산 시스템
- 도메인 네임 스페이스는 DNS가 저장 관리하는 계층적 구조
- 최상위 == Root DNS 서버
- 하위로는 연결된 모든 노드가 연속해서 이어지는 계층 구조
Fully Qualified Domain Name(FQDN)
- 전체 도메인 이름
- 도메인 이름 : naver.com / 호스트 이름 : www
- FQDN : www.naver.com
네임 서버(Name Server = DNS Server)
2️⃣- 도메인 네임 스페이스의 트리 구조에 대한 정보는 갖고 있는 서버
- 데이터베이스 역할(저장, 관리), 찾아주는 역할, 요청 처리 응답 구현
- 권한 있는 DNS 서버
- IP 주소와 도메인 이름 매핑
- Root DNS server
- ICANN이 직접 관리하는 존엄 서버
- TLD DNS 서버 IP 주소를 저장하고 안내하는 역할
- Top-Level Domain(TLD) DNS server
- 도메인 등록 기관이 관리하는 서버
- Authoritative DNS 서버의 주소를 저장하고 안내하는 역할
- 도메인 판매 업체의 DNS 설정 변경되면 도메인 등록 기관으로 전달됨
- 어떤 도메인이 어떤 업체에서 구매했는지 파악 가능
- Second-Level Domain(SLD) DNS server (= Authoritative DNS server)
- 실제 개인 도메인과 IP 주소의 관계가 기록(저장, 변경)되는 서버
- 일반적으로 도메인/호스팅 업처의 네임서버를 지칭
- 개인 DNS 구축했을 경우
리졸버(Resolver)
3️⃣- 권한 없는 DNS 서버
- 질의를 통해 IP 주소 알아내거나 캐시
- DNS 클라이언트(웹 브라우저)의 요청 네임 서버로 전달 ⇒ 네임 서버로부터 정보(도메인 이름 & IP 주소) 받아 클라이언트에 제공
- 하나의 네임 서버에게 DNS 요청을 전달하고 해당 서버에 정보가 없으면 다른 네임 서버에게 요청
DNS 동작 방식
⚙️
- 웹 브라우저에 도메인 주소가 입력되면 이전에 방문한 적 있었는지 캐시 확인
- 브라우저 캐시
- OS 캐시
- 라우터 캐시
- 웹 브라우저는 Recursive DNS 서버에게 도메인(www.naver.com)의 IP 주소 요청
- Recursive는 최상위 기관에서 관리하는 네임 서버인 Root DNS 서버에 요청(.com)
- .com도메인은 .com 서버(TLD server)로 가라고 응답
- Recursive는 .com 서버(TLD server)에 naver.com요청
- Authoritative에 가라는 응답
- Authoritative에 www.naver.com 있으면 IP주소 리턴
- 웹 브라우저에 IP주소 전달됨
DNS Query
- DNS 클라이언트와 DNS 서버는 DNS query 교환
- Recursive or Iterative로 구분
Recursive Query
- 결과(IP)를 돌려주는 작업
- Recursive 쿼리를 받은 Recursive 서버는 Iterative 하게 권한 있는 네임 서버로 Iterative 쿼리를 보내서 결과적으로 IP 주소를 찾게 되고 해당 결과물을 응답
Iterative Query
- Recursive DNS 서버가 다른 DNS 서버에게 쿼리를 보내어 응답을 요청하는 작업
- Recursive 서버가 권한 있는 네임 서버들에게 반복적으로 쿼리를 보내서 결과물(IP 주소)를 알아냄
- Recursive 서버에 이미 IP 주소가 캐시 되어있다면 이 과정은 skip
참고
https://hanamon.kr/dns%EB%9E%80-%EB%8F%84%EB%A9%94%EC%9D%B8-%EB%84%A4%EC%9E%84-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B0%9C%EB%85%90%EB%B6%80%ED%84%B0-%EC%9E%91%EB%8F%99-%EB%B0%A9%EC%8B%9D%EA%B9%8C%EC%A7%80/
https://velog.io/@dustjs159/DNS
'Computer Science > Network' 카테고리의 다른 글
[Network/Web]CORS란? (0) | 2023.02.13 |
---|---|
[Network]토큰(Token) 기반 인증 (0) | 2023.02.10 |
[Network]쿠키(Cookie)와 세션(Session) (0) | 2023.02.10 |
[Network]TLS/SSL Handshake (0) | 2023.02.09 |
[Network]대칭키와 공개키 (0) | 2023.02.08 |
Comments