DNS(Domain Name Syetem)
- 도메인 이름(www.hanamon.kr)을 IP 주소로 변환하는 시스템
- 상위 기관에서 인증된 기관에게 도메인을 생성하거나 IP 주소로 변경할 수 있는 ‘권한’을 부여
- DNS는 이처럼 상위 기관과 하위 기관과 같은 ‘계층 구조’를 가지는 분산 데이터베이스 구조를 가짐
- 도메인을 IP로 변환하여 IP네트워크 통신하여 목적지 IP를 찾아가는 과정
구성요소
- 도메인 네임 스페이스(Domain Name Space)
-> 도메인 이름을 저장 분산
- 네임 서버(Name Server) = 권한 있는 DNS 서버
-> 해당 도메인 이름의 IP 주소 찾음
- 리졸버(Resolver) = 권한 없는 DNS 서버
-> DNS 클라이언트 요청을 네임서버로 전달하고 찾은 정보를 클라이언트에게 제공
- 우선 “이 도메인 이름은 이 IP 주소이다”라는 ‘텍스트’를 저장하는 데이터베이스가 필요하다.
- 그리고 분산된 데이터가 어디 저장되어 있는지 찾을 프로그램들이 필요하고 찾았으면 해당 IP 주소로 이동할 프로그램(브라우저 등)이 필요하다.
- 도메인 네임 스페이스라는 규칙(방법)으로 도메인 이름 저장을 분산한다.
- 네임 서버(DNS 서버와 같은 말, 그런데 리졸버 서버 등 시스템 안에서 다른 역할을 하는 서버도 있기에 그냥 DNS 서버라고 하는 것보다 네임 서버라고 하는게 더 의미가 전달되는 듯)가 해당 도메인 이름의 IP 주소를 찾는다.
- 리졸버가 DNS 클라이언트 요청을 네임 서버로 전달하고 찾은 정보를 클라이언트에게 제공하는 기능을 수행한다.
- 어떤 네임 서버에서 찾아야하는지, 이미 캐시 되어있는지 등 어떻게든 찾아서 클라이언트에게 찾았으면 찾은 것을 못 찾았으면 못 찾았다고 전달하는 역할을 한다.
- 리졸버는 단말에 구현하는 것은 무리수라 보통은 리졸버가 구현된 네임 서버의 IP 주소만을 파악한다.
- 대표적인 것이 KT/LG/SK와 같은 ISP(통신사) DNS 있고, 브라우저 우회 용도로 많이 쓰는 구글 DNS, 클라우드플레어와 같은 Public DNS 서버가 있다.
- 그래서 거의 Resolver = Recursive DNS Server = Local Server(of ISP) = Recursor
- 어떤 자료에서는 리졸버라는 요소를 생략하기도 하는 듯하다. 용어 때문에 허우적거렸는데 위와같이 정리하였다.
# 왜?
“이 도메인 좀 IP 주소로 바꿔줄래?”라고 할 수 있는 서버(네임서버)가 한 대만 있지 않기 때문이다. (슈퍼 짱짱 컴퓨터면 가능할지도… 그래도 물리적 거리가 멀면… 느릴듯…)
그렇다면 여러 서버(네임서버)를 만들면 되지 않을까? 그렇게 되면 해당 정보(도메인과 IP 주소)를 모든 서버에서 공유해야한다. 안그러면 어떤 서버(네임서버)에서는 ‘www.hanamon.kr’의 IP 주소를 모른다고 할 수도 있다.
그래서 도메인을 계층적으로 구분하는, 정보(도메인과 IP주소)를 분산하는 구조를 선택하게 되었다.
그래서 도메인에 닷(dot), 점이 있는 것이다. 점이 계층을 나타낸다.
동작방식
1. 웹 브라우저는 해결사 서버에게 요청 “www.hanamon.kr의 IP 주소를 알려주세요.”
2. 해결사서버는 최상위 기관에서 관리하는 네임서버에게 요청 ”.kr 이라는 도메인 있나요?”
3. 최상위 기관에서 관리하는 네임 서버는 응답 “.kr 한국 국가 도메인 입니다. .kr 네임 서버로 가보세요~”
4. 해결사 서버는 이제는 .kr 네임 서버에게 요청 “hanamon.kr 있나요?”
5. .kr 네임 서버는 응답 “네 가비아로 가세요~”
(”hakunamatata.kr 있나요?” 라고 물어봐도 “네 가비아로 가세요~”라고 응답한다.)
6. 해결사 서버는 가비아 네임 서버에게 요청 “www.hanamon.kr 있나요?”
7. 가비아 네임 서버는 응답 "네 12.345.678.900 으로 가세요!”
8. 해결사 서버는 웹 브라우저에게 알려준다. "네 12.345.678.900 으로 가세요!”
DNS 개념과 동작방식