DNS
DNS란
네트워크 안에서 호스트를 식별하기 위한 목적으로 IP 주소를 사용하는데, 사람의 경우 숫자보다 문자를 사용하는 것이 더 편하므로 도메인 이름을 이용해 호스트를 식별한다. 도메인 이름을 사용하는 경우에도 최종적으로 IP 주소를 알고 있어야 상대방과 연결이 가능하므로, 네트워크에서 도메인이나 호스트 이름을 숫자로 된 IP 주소로 해석해 주는 TCP/IP 네트워크 서비스인 DNS가 등장했다. DNS는 도메인을 계층적이게 관리해 서버를 분리하여 트리팩과 데이터를 분산한다.
URL 구조
http://www.google.com 이 있다고 할 때 이 url은 세부 부분으로 구성되어 있다.
- schema : http:// 또는 https:// 과 같이 맨 앞에 붙는 부분으로, 통신할 때 사용되는 통신 프로토콜이다.
- subdomain : www에 해당하는 부분
- domain name : google에 해당하는 부분. 도메인 주소를 구성하는 이름
- top-level domain : com과 같이 최상위 계층을 구성하는 부분
DNS 동작 방식
도메인은 계층 구조로 상위 도메인부터 하위 단계의 순서대로 주소를 찾아간다. 상위 서버는 하위 서버의 위치를 알고 있다. 즉 .com -> .google -> www 순으로 주소 검색이 진행되며, 이 순서대로 도메인 연결 부분이 하나씩 늘어나며 최종 도메인 주소를 구성하게 된다. 그리고 원래 최상위 도메인 끝에 . 이 하나 더 붙는데, 이를 root domain 이라고 한다. 인터넷 도메인의 체계에서 최상위는 루트(root)로써 인터넷 도메인의 시작점이 된다.
.
: Root Domain.com
: Top-Level Domaingoogle.com
: second-level domain (sub domain)www.google.com
: third-level domain (sub domain)
- 로컬 DNS : 권한 없는 네임 서버다. DNS 정보를 직접적으로 가지고 있지 않다. kt나 stk와 같은 통신사에서 제공을 해주는 것. 클라이언트와 직접적으로 통신을 하고 네임서버들과 통신을 하기 위해 있는 서버다.
- 서브 도메인 네임 서버 : 실제로 DNS 정보를 가지고 있는 권한이 있는 네임 서버다.
- 네임서버들은 다양한 기관에서 관리하고 있다.
- Root NameServer : 국제 인터넷 주소 관리 기구
- Top Level Name Server : 도메인 등록 기관
- Sub Domain Name Server : 도메인 판매 업체 (ex 가비아)
-
웹 브라우저 창에 도메인 주소 입력하면 로컬 컴퓨터의 캐시에 해당 도메인의 IP 가 저장되어 있는지 확인한다. 있는 경우 바로 해당 IP 주소로 패킷 전송하고, 없는 경우 로컬 DNS 서버로 쿼리를 날린다.
-
로컬 DNS 서버의 캐시 및 주소록에서 IP 주소 검색하여 있는 경우에 해당 IP 주소로 패킷을 전송하고 없는 경우에는 Root DNS 서버로 쿼리를 날린다.
- Root DNS 서버에서는 ip 정보를 가지고 있지 않기 때문에 하위 도메인인 Top-Level Domain 네임 서버의 주소를 응답한다.
- Top-level Domain 서버에 쿼리를 요청한다.
-
Top-Level Domain 서버에서도 ip 정보를 가지고 있지 않기 때문에 하위 도메인인 서브 도메인 네임 서버의 주소를 응답한다.
- ip 정보를 가지고 있는 서브 도메인 네임 서버에 쿼리를 ip 정보를 요청한다.
- IP 주소를 전달받고 로컬 DNS에 캐싱해둔다.
- 브라우저에 ip를 전달받고 pc에 캐싱한 뒤 패킷 전송한다.
클라이언트에서 로컬 DNS 서버로 보내는 요청을 재귀적 쿼리 라고 한다.
로컬 DNS 에서 root DNS 서버 & 하위 DNS 서버에 보내는 요청을 반복적 쿼리 라고 한다.