DNS(Domain Name System)란?
DNS란 사람이 읽을 수 있는 도메인 이름을 IP 주소로 변환해주는 시스템이다.

원래는 네트워크 상 서버들은 IP주소로 서버를 식별한다. 그런데 사용자가 202.179.177.21이라는 IP 주소를 외울 순 없잖음?
그래서 나온게 www.naver.com같은 도메인 주소이다.
이렇게 도메인 주소를 IP 주소로 변환하고 해당 IP 주소로 접속하는 과정을 해주는 시스템을 DNS라고 하며, 네트워크 Application 계층에서 동작하는 서비스이다.
상위 기관에서 인증된 기관에게 도메인을 생성하거나 IP 주소로 변경할 수 있는 '권한'을 부여하는데
DNS는 이처럼 상위 기관과 하위 기관과 같은 '계층 구조'를 가지는 분산 데이터베이스 구조를 가진다.
DNS 구성 요소
1. 도메인 네임 스페이스(Domain Name Space)
- 도메인 이름을 분산 저장한다.
- 도메인 주소를 관리
2. 네임 서버(Name Server)
- 도메인 주소를 관리하기 위해 사용하는 DNS 전용 서버
- 해당 도메인 이름의 IP주소를 찾는다.
- 여러 계층으로 분산되어 있다.
3. 리졸버(Resolver)
- DNS 클라이언트 요청을 네임 서버로 전달하고 찾은 정보를 클라이언트에게 제공하는 기능을 수행
이렇게 역할을 분산한 이유는 네임서버가 여러대이기 때문이다. 그러니까 도메인에서 IP주소로 바꿔달라는 요청을 보낼 수 있는 서버가 여러대이다. 여기서 역할을 분산해놓지 않으면 네임서버에 도메인과 IP주소에 대한 모든 정보를 넣어놓아야 한다.
그래서 계층적으로 분리해서 정보를 분산시키는 구조를 갖게 되었다.
도메인 네임 스페이스(Domain Name Space)✨
DNS는 전세계적인 거대 분산 시스템이다.
도메인 네임 스페이스는 이런 DNS가 저장 관리하는 계층적 구조를 의미한다.
최상위에 Root DNS 서버가 존재하고 그 하위로 연결된 모든 노드가 연속해서 이어진 트리계층 구조로 이루어져 있다.

주소 영역
주소 영역은 .이라는 라벨(label)로 구분한다. 하나의 라벨은 최대 64byte 사용 가능하며 ASCII로 표현된다. 따라서 전체 도메인의 최대 주소 크기는 255byte이다.

도메인 네임 스페이스에 포함되는 각각의 노드들에 대해 살펴보겠다.
1. 루트 도메인 (Root Domain)
- 도메인을 구성하는 최상위 영역
- 최상위 도메인 서버의 정보를 가짐
- 전 세계에 13개의 원본 root 서버가 존재한다.
2. 최상위 도메인(Top Level Domain, TLD)
- 국가 코드 최상위 도메인(ccTLD: country code TLD)
- .kr, .jp, ...
- 일반 최상위 도메인 (gTLD: global TLD)
- .com, .net, ...
- 역방향 조회 시 사용되는 최상위 도메인(ARPA)
- in-addr.arpa
3. 2차 도메인(Second Level Domain)
- TLD 하위에서 관리되는 서브 도메인
- 국가 도메인 하위에 기관 유형에 따라 분류
- .co(일반회사), .ac(교육기관), .go(정부기관)...
4. 서브 도메인(Sub Domain)
- 상위 도메인에 소속되는 각 기관 또는 회사별 도메인
- google, naver...
네임 서버(Name Server)✨
문자열로 표현된 도메인 이름을 실제 컴퓨터가 통신할 때 사용하는 IP주소로 변화나시키기 위해서 Domain Name Space의 트리 구조에 대한 정보가 필요한데 이런 정보를 갖고 있는 서버가 Name Server이다.
즉, 데이터베이스같은 역할을 한다고 보면 된다.
위에서 말했듯, 전 세계에 13개의 Root DNS 서버가 구축되어 있다. 미국 10대, 일본/네덜란드/노르웨이 이렇게 존재함. DNS 서버를 복사해 같은 기능을 담당하는 미러 서버도 존재한다. 국내에는 3대 운용중이다.
1. Root DNS 서버
- TLD DNS서버 IP 주소를 저장하고 안내하는 역할을 한다.
2. Top-Level Domain(TLD) DNS 서버
- 도메인 등록 기관이 관리하는 서버이다.
- Authoritative DNS 서버 주소를 저장하고 안내하는 역할을 한다.
3. Second-Level Domain(SLD) DNS 서버 = Authoritative DNS 서버
- 실제 도메인과 IP 주소의 관계가 기록되는 서버
4. 권한 없는 DNS 서버
- DNS 서버는 도메인 네임 스페이스를 위한 권한 있는 DNS 서버와 권한이 없는 DNS 서버로 구분된다.
- Name Space를 위한 권한 있는 DNS 서버는 IP 주소와 도메인네임을 매핑함
- 권한 없는 DNS 서버는 쿼리를 통해 IP 주소를 알아내거나 캐시한다.
Local Name Server✨
개인이나 기업체에게 인터넷 접속 서비스 등을 제공하는 회사인 ISP(Internet Service Provider)는 하나의 local name server를 가지고 있다.
host가 local DNS server로 쿼리를 날리면 local DNS server는 도메인네임에 매핑되는 IP주소를 받아와 그 결과값을 전달하는데 이를 수행하는 서버가 local name server이다.
DNS 동작 과정

DNS 클라이언트와 DNS 서버는 DNS Query라는걸 교환한다. DNS 쿼리는 Recursive 또는 Iterative로 구분된다.
Recursive Query (재귀적 질의)

재귀적 질의는 IP 주소를 돌려주는 작업이다.
재귀적 질의를 받은 Recursive 서버는 Iterative한 권한이 있는 네임 서버로 Iterative쿼리를 보내 결과적으로 IP주소를 찾게 되고 해당 결과물을 응답한다.
예를 들어 local host가 naver.com에 대해 query를 보내면 Local DNS server가 root name server에 query를 보내고, root server는 자신의 서버에 등록되어 있는지 검사한 다음 없으면 com 담당 서버에 요청을 한다.
recursive하게 실제 도메인네임을 가지고 있는 서버까지 query가 이동해 IP 주소를 얻어오는 방법이다.
IterativeQuery (반복적 질의)

Iterative Query는 local DNS 서버가 다른 DNS 서버에게 query를 보내 답을 요청하는 작업이다.
자신이 직접 관리하지 않는 쿼리 요청이 있을 경우 응답 가능한 DNS 목록을 응답한다.
예를 들어 호스트가 naver.com에 대해 query를 보내면 Local DNS 서버가 root name server에 query를 보내 com 담당 서버의 주소를 받고, 다시 com 담당 서버에 query 를 보내 naver.com이 변환 요청을 보낸다.
이렇게 최종 IP 주소를 받을 때까지 요청과 응답을 계속해서 local name server가 반복하는 방법이다.
'Computer Science > Network' 카테고리의 다른 글
[네트워크] OSI 7계층과 TCP/IP모델 (0) | 2022.12.19 |
---|---|
[네트워크] SSL/TLS란? (+핸드쉐이킹 과정) (0) | 2022.12.12 |
[네트워크] Circuit/Packet Switching 이란? (0) | 2022.11.27 |
컴퓨터의 클라이언트와 서버에 대해 알아보자 (0) | 2022.04.27 |