DNS(Domain Name System)란?
DNS(Domain Name System)는 사람이 읽을 수 있는 도메인 이름(예: www.amazon.com)을 머신이 읽을 수 있는 IP 주소(예: 192.0.2.44)로 변환해주는 시스템
DNS 등장 배경
- 인터넷 표준 프로토콜은TCP/IP이다.
- TCP/IP 프로토콜을 사용하는 네트워크 안에서Host들을 식별하기 위한 목적으로 IP 주소를 사용한다.
- 사람의 경우숫자보다 문자를 사용하는 것이 더 편하기 때문에 도메인 이름을 사용하여 Host들을 식별한다.
- 도메인 이름을 사용하는 경우에도 최종적으로IP주소를 알고 있어야 상대방 장비와 연결이 가능하다.
- 네트워크에서 도메인이나 호스트 이름을 숫자로 된 IP 주소로 해석해 주는 TCP/IP Network Service인 DNS가 등장하였다.
DNS의 구성 요소
1) 도메인 네임 스페이스 (Domain Name Space)
DNS가 저장,관리하는 계층적 구조를 의미한다.
DNS 계층적 구조
최상위에 루트 DNS 서버가 존재하고,그 하위로 인터넷에 연결된 모든 노드(네모 표시)가연속해서 이어진계층 구조로 구성되어 있다.
PC에서 사용하는 디렉토리 구조와 유사함을 알 수 있는데,각 레벨(Top level, Second level 등)의 도메인은 그 하위 도메인 에 관한 정보를 관리하는 구조이다. (계층적 구조)
2) 네임 서버 (Name Server)
- 문자열로 표현된 도메인 이름을 실제 컴퓨터가 통신할 때 사용하는숫자로 표현된 IP 주소로 변환시켜 주기 위해서는 도메인 네임 스페이스의 트리 구조 에 대한 정보가 필요하며, 이러한 정보를 가지고 있는 서버를 네임 서버라고 한다.
- 도메인 이름을 IP 주소로 변환하는 것을 네임 서비스라고 한다.
- 리졸버(Resolver)로부터 요청 받은 도메인 이름에 대한 IP 정보를 다시 리졸버로 전달해주는 역할을 수행한다.
Primary Name Server:는 해당 도메인을 관리하는주 네임 서버이다.
Secondary Name Server:는 primary 네임 서버 의 고장 등의 이유로동작하지 못하는 경우 이를 대신하여 네임 서버 역할을 수행하는 서버이고 주기적으로 Primary 네임 서버로부터 정보를 받아와 자신의 정보를 갱신하여 전체 네임 서버의 정보가 일관성 있게 유지 및 관리된다.
3) 리졸버 (Resolver)
- 웹 브라우저와 같은DNS 클라이언트의 요청을 네임 서버로 전달하고 네임 서버로부터 정보(도메인 이름과 IP 주소)를 받아 클라이언트에게 제공하는 기능을 수행한다.
- 하나의 네임 서버 에게 DNS 요청을 전달하고 해당 서버에 정보가 없으면 다른 네임 서버에게 요청을 보내 정보를 받아 온다.
- 수많은 네임 서버에 접근하여 사용자로부터 요청 받은 도메인의 IP 정보를 조회하는 기능을 수행할 수 있어야 한다.
4) 스터브 리졸버(Stub Resolver)
- 리졸버의 모든 기능을 PC와 같은 클라이언트 호스트에 구현하는 것은 단말 시스템 자원의 한 계와 같은 제약이 있다.
- 리졸버의 대부분의 기능을 DNS 서버에 구현하고, 클라이언트 호스트에는 리졸버의 단순한 기능만을 지닌 리졸버 루틴을 구현한것이다.
- 스터브 리졸버는 수 많은 네임 서버의 구조를 파악할 필요 없이 리졸버가 구현된 네임 서버의 IP 주소만 파악하면 된다.
- 도메인에 대한 질의를 받은 스터브 리졸버는 설정된 네임 서버로 DNS 질의를 전달하고 네임 서버로부터 최종 결과를 응답 받아 웹 브라우저로 전달하는인터페이스 기능만을 수행한다.
DNS 동작 과정
DNS 동작과정
- ①~③: Root DNS 서버는전체 FQDN* 정보는 알지 못하기 때문에자신의 하위 Domain인COM DNS 서버의 주소를 알려준다.
- ④~⑤: 이를 수신한 Local DNS 서버는 다시Iterative Query를 사용하여 com DNS 서버에게 정보를 요청하고, com DNS 서버도 자신의 하위 레벨 Domain인naver.com의 DNS서버 주소를 알려준다.
- ⑥~⑦: 이를 수신한 Local DNS 서버는 다시Iterative Query를 사용하여 naver.com DNS 서버에게 www 호스트에 대한 정보를 요청하고, naver.com DNS 서버는www.naver.com에 대한 IP서버 주소를 알려준다.
- ⑧: Local DNS 서버는 위와 같이 www.naver.com 에 대한 IP주소를 수신 후 자신의DNS Cache에 등록하고 해당 정보를 요청했던 Client에게 응답메세지로 답변한다.
해당 Client는 수신한 www.naver.com의 의 IP주소를 사용하여 실제 해당 서버에 패킷을 전송하게 된다. 그 후 Local DNS 서버는 다른 Client에게동일한 FQDN에 대한 DNS Query를 수신할 경우 DNS서버 Cache에 등록된 정보로 답변하는 것이 가능하다.
*FQDN (Full Qualified Domain Name: 정규화된 도메인 이름)
- 네트워크상에서 컴퓨터시스템을 지칭하는 하나의 완전한 이름이다.
- DNS의 서버이름을hostname + domain name으로 표현된다.
- Host name : 실제 서버에 주어진 컴퓨터의 이름이다. (www.naver)
- Domain name : 논리적인 그룹을 표기한다. (.com)
참고: https://aws.amazon.com/ko/route53/what-is-dns/
https://peemangit.tistory.com/52