티스토리 뷰

DNS

지우 초이 2021. 6. 2. 14:47

DNS는 

Domain Name System 의 준말이다.

 

즉, Domain Name을 실제 컴퓨터가 연결할 때 쓰는 ip 주소로 resolving 해준다.

ip주소를 resolving 해나가는 과정은 여러가지가 있지만, 대표적인 "recursive resolving"이라는 과정을 다룬다.

recursive resolving 같은 경우는 DNS 분산 시스템을 활용하는데, 각 도메인 레벨별로 DNS 서버를 나눠서, ip resolving을 요청하는 트래픽을 레벨별로 분산해 처리할 수 있도록 하고, 또한 하나의 DNS서버에서 가져야 하는 ip주소의 숫자를 역할별로 최소한으로 할 수 있다.

1. 로컬 DNS 서버

브라우저 등지에서 domain name으로 request를 보내면, 이 request를 기반으로 local dns 서버 에서찾는다.

보통 DHCP option 6를 통해 로컬 DNS 서버의 ip주소를 받는다. (보통은 한가지가 죽었을 때 를 대비해서, 두가지의 DNS서버 주소를 받아놓는다)

 

그럼 이제 Local dns 서버를 통해 hostname (http://www.naver.com)에 대한 ip주소를 묻는다.

 

* DHCP는 ip주소들을 동적으로 관리해주는 전용 서버라고 보면 된다. IP주소를 한곳에서 관리해주고, 사용자는 그냥 받은 ip만 사용 할 수 있다.

https://kim-solshar.tistory.com/30

 

[전산학] DHCP란?

DHCP란 평소 컴퓨터를 켜면 무엇을 하는가. 메일을 확인하거나, 메신저를 켜거나, 게임을 한다. 그리고 이 중 인터넷 연결없이 돌아가는 것은 없다. TCP/IP 프로토콜에서 인터넷으로 다른 컴퓨터와

kim-solshar.tistory.com

 

2.  Root DNS

만약 Local DNS에 naver.com 호스트에 대한 ip주소를 resolving할 수 없다면, 루트 DNS에 묻는다.

루트 DNS는 전세계에 고루 분포되어있는 서버로 총 13개의 ip가 존재한다. DNS를 설계상, 루트 DNS에는 총 13개의 ip를 최대로 가질 수 있다. 그렇다고 해서 root dns서버가 13개뿐이라는것은 아니다. 

 

이 root dns의 최종 관리자는 미국 상무부의 일부인 NTIA의 권한을 가지고 있고, ICANN에 위임하여 국제적인 리소스 등으로 사용되고 있다. 이런 root dns 서버의 ip같은 경우는 대부분 local dns 서버들이 이미 알고 있어서, local dns에서 ip를 찾지 못하는 경우 저장되어있는 root dns ip로 요청을 보낸다.

https://www.cloudflare.com/ko-kr/learning/dns/glossary/dns-root-server/

 

루트 DNS들은 그럼 어떤 정보를 가지고 있을까?

Root DNS같은 경우는 ip정보를 가지고 있진 않고, 어디로 가야 정보를 얻을 수 있는지 안내역할을 한다.

 

https://www.youtube.com/watch?v=mpQZVYPuDGU

하지만 루트서버는 도메인의 Top level (www.naver.com이면 com, net, org, edu 같은..) 을 보고, top level domain server의 주소를 보여준다. 위 사진에서는 173.184.33.xx로 보여지고 있는 주소로 안내한다.

3.  Top Level Domain Server

TLD 서버의 주소를 받은 Local DNS는 다시 TLD서버에게 www.naver.com이 있는지 물어본다. 

TLD서버는 com을 관리하는 서버이지, naver 회사는 아니므로 당연히 www.naver.com 에 대한 주소는 없다. 

하지만 적어도 naver를 찾으려면 어디로 가야하는지 알려줄 수 있다. 

TLD는 authoriative name server (인가받은 name server) 로 연결을 시켜준다.

 

4.  Authoriative name server

인가받은 name server에는 naver에서 허가받은 dns 네임서버에 (ISP)등에 본인들의 ip를 등록해놨을것이다.

만약 더 뎁스가 깊어진다면, 아마 네이버의 자체적인 DNS 네임서버를 타서 끝까지 Ip주소를 확인할것이다.

결과적으로 마지막으로 ip주소를 반환해준다.

 

만약 본인이 도메인을 가지고 있고, 도메인의 네임서버를 등록하고 싶다면, 아래와 같은 사이트에서 도메인을 해서 네임서버를 대여해볼 수 있다.

 

https://kr.dnsever.com/

 

DNSEver.com 웹기반 DNS 서버 (네임서버)

 안정적인 DNS서비스 제공 | Stable DNS Service DNSEver는 도메인은 보유하고 있으나 네임서버가 없으신 분, 네임서버 구축 또는 관리가 어려운 분들을 위하여, 안정적인 네임서버를 제공하고 있습니다

kr.dnsever.com

5.  Local DNS Caching

local dns에서는 그 응답을 받고 ip주소를 캐싱해둔다.

마지막으로 그 정보를 ip단말에게 전달해준다. ip를 받은 단말은 ip를 기준으로 찾을것이다.

 

https://www.youtube.com/watch?v=mpQZVYPuDGU 

https://www.netmanias.com/ko/post/blog/5353/dns/dns-basic-operation

 

DNS 기본 동작 설명

DNS 기본 동작 설명 DNS Basic Operation December 12, 2011 | By 유창모 (cmyoo@netmanias.com)

www.netmanias.com

https://gunnm.tistory.com/143

 

ISP 사업자별 DNS 정보

국내 인터넷망을 관리하는 통신사, 즉 ISP 사업자별로 대표 DNS 가 등록되어 있다. 보통 가정에서 KT, SK, LG 와 같은 통신 사업자를 통해 인터넷 사용시에는 DHCP 방식을 통해 제공되는 IP 를 자동으로

gunnm.tistory.com

https://www.liquidweb.com/kb/how-to-demystify-the-dns-process/

 

Understanding the DNS Process | Liquid Web

DNS stands for Domain Name System. When we access a website, we are using DNS to locate the server where the domain's website is located.

www.liquidweb.com

6. DNS 레코드

DNS서버에서는 어떻게 호스트 ip등을 관리할까? 이런 처리방법에 대한 저장 양식을 레코드라고 하며, 일련의 텍스트파일로 구성된다. 이 레코드에는 TTL이라는것이 설정되어 있는데, 이는 DNS서버가 이 레코드들을 새로고치는 빈도를 나타낸다.

 

- CNAME : 다른 alias 도메인을 가지고 있는 컬럼.

예를들어 blog.example.com 같은 경우는, example.com을 CNAME값으로 가지고 있어서, example.com의 A레코드를 참조하여 실질적인 DNS서버를 찾아가도록 유도한다.

 

여기서 example.com을  blog.example.com의 canonical name (or true name)이라고 말한다.

https://www.cloudflare.com/ko-kr/learning/dns/dns-records/dns-cname-record/

 

- A 레코드 : 도메인의 Ip를 직접적으로 가지고 있는 컬럼. IPv4 주소가 들어있다. IPv6 주소는 'AAAA'레코드에 담겨있다.

 

- TXT레코드 : 관리자의 메모용 레코드 .

- MX 레코드 : Mail exchange라는 의미, mail서버로 돌려준다는 의미이다. priority값이 존재하며 낮은 priority값을 가진 것부터 먼저 ㅣ시도한다

 

- NS 레코드 : name server 레코드라는 의미, ns 레코드는 실제 도메인 ip주소를 찾기 위해 가야할 곳을 적어놓은 정보이며, CNAME등을 활용할 수 없다.

nslookup을 통해 확인해보니 아래와 같은 결과과 나왔다.

https://www.cloudflare.com/ko-kr/learning/dns/dns-records/

 

'' 카테고리의 다른 글

세션과 쿠키  (0) 2021.04.04
자바 backend 개발 시 URL 경로 설정.  (0) 2021.03.31
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함