본문 바로가기
Dev/Network

[Network] DNS

by 흰바다제비 2022. 8. 27.
728x90

DNS

DNS(Domain Name System)는 인터넷 전화번호부와 같다. DNS는 사람이 읽을 수 있는 도메인 이름(ex. www.example.com) 을 머신이 읽을 수 있는 IP 주소(예: 192.168.1.1)로 변환한다. 

 

웹 브라우저를 통해 원하는 사이트에 접속하려면 해당 사이트의 IP 주소를 입력해야 한다. 예를 들어, 네이버의 IP 주소는 223.130.195.200이다. 주소창에 http://223.130.195.200를 입력하면 네이버 메인화면으로 이동한다. 이게 네이버라는 사이트 주소를 찾아가는 근본적인 방법이다.

 

그러나 이렇게 존재하는 모든 IP 주소를 외우는 건 너무 비효율적이다. DNS에 IP 주소와 도메인을 매핑하는 방법으로 이 문제를 해결할 수 있다. 223.130.195.200 www.naver.com 처럼 짝을 지어 등록한다. 이렇게 하면 이용자가 www.naver.com이라는 도메인을 요청하면 DNS 서버를 통해 223.130.195.200 주소를 자동으로 찾아간다

 

과정을 간략히 이야기하면 다음과 같다.

1. 도메인 주소 naver.com을 브라우저에 입력하게 되면, 도메인 주소들을 가지고 있는 DNS 서버에 접속

2. DNS 서버에 접속한 도메인(naver.com)과 연결된 IP 정보(223.130.192.200)를 확인하고, IP를 사용자 PC에 전달

3. 사용자 PC는 전달받은 서버의 IP 주소로 접속

4. 서버의 IP로 연결된 브라우저에 서버의 내용(홈페이지)을 출력

 

 

DNS의 작동원리

DNS의 동작 순서

 

1. 웹 브라우저에 www.naver.com을 입력하면 먼저 PC에 저장된 Local DNS(기지국 DNS 서버)에게 "www.naver.com"이라는 hostname"에 대한 IP 주소를 요청한다.

Local DNS(기지국 DNS 서버) 란?

기본적으로 인터넷을 사용하기 위해선 IP를 할당해주는 통신사(KT, SK, LG 등...)에 등록하게 된다.
컴퓨터의 LAN선을 통해 인터넷이 연결되면, 가입했던 각 통신사의 기지국 DNS 서버가 등록되게 된다.
그러니까 KT를 사용하는 집이면 KT DNS가 되고, SK통신사 사용하는 집이면 SK DNS가 자동으로 셋팅 된다.

Local DNS 에는 "www.naver.com 의 IP 주소"가 있을 수도 없을 수도 있다. 만일 예전에 네이버에 접속했던 전적이 있다면, Local DNS에 접속정보가 캐싱이 되어있어, 바로 PC에 IP 주소를 주고 끝난다. (바로 1번 → 8번으로 넘어가 빠르게 웹페이지에 접속할수 있다.)

 

본 설명에서는 Local DNS에 "www.naver.com 의 IP 주소"가 없다고 가정 한다.

 

2. Local DNS는 "www.naver.com 의 IP 주소"를 찾아내기 위해 다른 DNS 서버들과 통신(DNS 쿼리)을 시작한다.
먼저 Root DNS 서버에게 "www.naver.com 의 IP 주소"를 요청한다. (DNS Query)

Root DNS(루트 네임서버) 란?

Root DNS는 인터넷의 도메인 네임 시스템의 루트 존이다.
ICANN이 직접 관리하는 절대 존엄 서버로, TLD DNS 서버 IP들을 저장해두고 안내하는 역할을 한다.
전세계에 961개의 루트 DNS가 운영되고 있다.

 

3. Root DNS 서버 는 "www.naver.com 의 IP 주소" 를 찾을 수 없어 Local DNS 서버에게 "www.naver.com 의 IP 주소 찾을 수 없으니 다른 DNS 서버에게 물어봐" 라고 응답을 한다. (DNS Response)

 

 4. 이제 Local DNS 서버는 com 도메인을 관리하는 TLD DNS 서버(최상위 도메인 서버)에 다시 www.naver.com에 대한 IP 주소를 요청한다. (DNS Query)

TLD(Top-Level Domain, 최상위 도메인) DNS Server 란?

TLD는 도메인 등록 기관(Registry)이 관리하는 서버로, 도메인 네미의 가장 마지막 부분을 말한다.
예를들어 웹사이트에서 한번쯤은 봐왔던 .com 이나 co.kr 같은 도메인들을 관리하고 부여하는 서버이다.
Authoritative DNS 서버 주소를 저장해두고 안내하는 역할을 한다. (밑에서 배움)

 

5. com 도메인을 관리하는 DNS 서버에도 해당 정보가 없으면, Local DNS 서버에게 "www.naver.com 의 IP 주소 찾을 수 없음. 다른 DNS 서버에게 물어봐" 라고 응답을 한다. (DNS Response)

 

6. Local DNS 서버는 naver.com DNS 서버(Authoritative DNS 서버) 에게 다시 "www.naver.com 의 IP 주소" 를 요청한다. (DNS Query)

Authoritative DNS Server 란?

실제 개인 도메인과 IP 주소의 관계가 기록/저장/변경되는 서버.
그래서 권한의 의미인 Authoritative가 붙는다.
일반적으로 도메인/호스팅 업체의 ‘네임서버’를 말하지만, 개인이나 회사 DNS 서버 구축을 한 경우에도 여기에 해당하게 된다.

 

7. naver.com DNS 서버 에는 "www.naver.com 의 IP 주소" 가 있다.
그래서 Local DNS 서버에게 "www.naver.com에 대한 IP 주소는 222.122.195.6" 라는 응답을 한다. 

(DNS Response w/ IP address of www.naver.com (222.122.195.6))

 

8. 이를 수신한 Local DNS는 www.naver.com 의 IP 주소를 캐싱을 하고, 이후 다른 요청이 있을시 응답할 수 있도록 IP 주소 정보를 단말(PC)에 전달해 준다.

이렇게 Local DNS 서버가 여러 DNS 서버에 차례대로 (Root DNS 서버 → TLD DNS 서버(.com) → Authoritative DNS 서버(naver.com) 요청하여 그 답을 찾는 과정을 재귀적 쿼리 Recursive Query 라고 부른다.

 

출처 :

 

[WEB] 🌐 DNS 개념 & 동작 ★ 알기 쉽게 정리

​DNS (Domain Name System) 란? 도메인 네임 시스템 (Domain Name System, DNS) 은 호스트의 도메인네임 (www.example.com)을 네트워크주소(192.168.1.0)로 변환하거나, 그 반대의 역할을 수행하는 시스템이다...

inpa.tistory.com

 

 

DNS 레코드 종류

A Record

Address record. A 레코드는 서버 IP 주소를 도메인 이름에 매핑한다. (ex. 72.21.206.6 to amazon.com)

CNAME

Canonical Name record. A CNAME 레코드는 한 도메인을 다른 도메인에 대한 alias(별칭)으로 설정한다. 따라서 별칭으로 주소가 지정된 모든 트래픽을 타겟인 표준 주소(canonica address)로 라우팅한다.

Alias Record

CNAME 레코드와 마찬가지로, Alias 레코드는 한 주소를 다른 주소에 매핑할 수 있다. 그러나 Aliase 레코드는 같은 이름을 사용하는 다른 레코드와 공존할 수 있다. 

MX Record

메일 교환 레코드(Mail Exchange Record). 이 레코드는 도메인의 이메일을 도메인의 사용자 계정을 호스팅하는 서버로 리다이렉트 한다. MX 레코드는 도메인에 대한 이메일 서버의 우선 순위를 결정하는 데 사용된다.

 


참고

 

DNS란

IP 주소 대신 도메인 이름을 사용하여 웹사이트에 연결하는 DNS 개념 및 원리를 소개합니다.

www.cloudflare.com

 

DNS와 hosts 파일의 역할

DNS(Domain Name System) 웹 브라우저를 통해 원하는 사이트에 접속하려면 해당 사이트의 IP 주소를 입력해야 합니다. 예를 들어, 네이버의 IP 주소는 223.130.195.200입니다. 주소창에 http://223.130.195.200를..

change-words.tistory.com

 

DNS와 작동원리

도메인 네임 시스템(Domain Name System, DNS)은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었다.

velog.io

 

728x90

'Dev > Network' 카테고리의 다른 글

[Network] Transport Layer  (0) 2022.09.13
[Network] OSI 7 layers  (0) 2022.09.12
[Network] Network commands - ping, traceroute, telnet  (0) 2022.08.26
[Network] TCP 3-way handshake  (0) 2022.08.24
[Network] DNS - A, CNAME, ALIAS, URL  (0) 2022.08.22

댓글