DNS : 웹 사이트의 문자열 주소(도메인)를 IP로 변경하거나, IP를 문자열 주소(도메인)로 변경해주는 시스템
 
우리는 일반적으로, 어떠한 웹사이트에 접속하기 위해 문자열로 된 주소를 입력한다.
www.naver.com
www.google.com
www.daum.net 
이런 영문과 특수기호로 이루어진 문자열을 주소창에 입력하면 웹사이트에 접속이 된다.
하지만, 실제로는 영문 문자열이 아니라 IP주소를 알아야 웹 사이트에 접속할 수 있다.
 
구글에 PING을 한 번 보내보자.

 
[2404:6800:4005:814::2004] 라는 IPv6 주소를 확인할 수 있다.
www.google.com이라는 문자열은 어떠한 과정을 거쳐서 [2404:6800:4005:814::2004]라는 IP주소로 변환이 되고, 우리는 그 IP주소를 통해 웹 서버에 접속할 수 있게 되는 것이다.
 
이 때, 문자열 주소(도메인)를 IP로 변환하는 역할을 담당하는 것이 DNS이다.
 
복잡하고 직관적이지 않은 IP주소를 사이트 별로 모두 외우는 것은 유저 입장에서 접근성이 상당히 떨어지는 일이기 때문에, 쉽고 간편하게 접근할 수 있는 문자열 주소를 사용할 수 있게 도와주는 셈인 것이다.
 

DNS의 과정

 

1. Local DNS에 IP주소 요청

Local DNS란, 기지국의 DNS서버이다. 모든 PC는 인터넷 가입시, 해당 통신사 기지국의 DNS 서버를 등록하게 된다.
어떠한 도메인의 IP를 찾기 위해, PC는 Local DNS에 해당 도메인의 IP를 요청하게 된다.
 

2.Local DNS에서 Root Name Server에 IP주소 요청

기지국의 DNS 서버는 요청받은 도메인의 IP주소를 Root Name Server라는 DNS 서버에 요청하게 된다.
 
DNS서버는 트리 구조로 이어져있다고 한다. 해당 트리의 루트 노드가 바로 Root Name Server인 것이다.
해당 Root Name Server에 IP주소를 요청하면, Root Name Server는 TLD 네임 서버의 주소를 반환해준다. 
 

3.Local DNS에서 TLD 네임 서버에 IP요청

TLD 네임 서버란,  최상위 도메인(TLD)의 네임 서버이다. 도메인 주소를 보면, 닷(.)으로 분류되어 있는 것을 볼 수 있다.
www.naver.com 의 경우, www와 naver과 com으로 분류되어 있다. 이중 가장 뒤에 있는 com이 최상위 도메인이다.
www.daum.net  의 경우, net이 최상위 도메인이 된다.
 
우리가 Local DNS에 www.naver.com 의 IP를 요청했다면, Root Name Server에선 com의 DNS 서버를 알려주게 된다.
Local DNS는 Root Name Server로부터 제공받은 com의 DNS 서버에 다시 IP를 요청하게 된다. 최상위 도메인 naver.com의 DNS 서버를 찾아서 다시 local DNS에 반환해준다.
 

4.Local DNS에서 최종적인 IP를 받을 때까지 재귀적으로 IP요청

예를 들어, 요청한 주소가 A.B.C.D.E.F.G.com 이라고 해보자. (물론 이런 주소는 실제로는 없겠지만)
그렇다면, Root Name Server가 TLD DNS 서버를 제공해주고, 다시 TLD DNS 서버에 IP를 요청하면, G.com의 DNS 서버를 제공해줄 것이며, G.com의 DNS 서버는 F.G.com의 DNS 서버를 제공해줄 것이다.
local DNS는 A.B.C.D.E.F.G.com의 IP주소를 반환 받을 때까지 이 과정을 재귀적으로 반복하게 된다.
최종적으로 IP를 알게 되면, Local DNS는 해당 IP주소를 PC에 알려주게 된다.
 

DNS 캐싱

DNS는 이처럼 상당히 번거로운 과정을 거치고 있다. 하지만, 항상 저 모든 과정을 거치는 것은 아니다.
왜냐하면, 각 DNS는 최근에 탐색된 IP주소를 캐싱 하기 때문이다. 캐싱이란, 별도의 공간에 IP를 저장 해놓는 것이다.
 
예를 들어, Local DNS에 www.naver.com  의 아이피 주소가 캐싱되어 있다면, Root Name Server에 IP를 요청할 필요 없이 캐싱된 IP를 바로 PC에 반환해줄 수 있는 것이다. (컴퓨터에 사용되는 캐시 메모리와 동일한 기능이라고 생각하면 된다.)
 
어떠한 DNS 서버에서 캐싱된 IP주소를 발견할 수 있다면, 끝까지 재귀적 탐색을 하지 않고 중간에 종료하여 IP 주소를 얻어낼 수 있는 것이다. 그리고 이렇게 얻어낸 IP 주소는 각 DNS 서버에만 캐싱되는 것이 아니라 우리 PC에도 캐싱된다.
(cmd에 ipconfig /displaydns 를 입력하면, 캐싱된 데이터를 볼 수 있다.) 
 
하지만, PC에 캐싱된 IP정보는 모종의 이유로 변조될 수 있다고 한다. (바이러스, 해킹 등...)
www.naver.com을 을 쳤는데 다른 IP 주소로 접속이 되는 보안 취약점이 발생할 수 있다는 것이다.
그러므로, PC에 저장된 DNS 캐시는 주기적으로 정리해주는 것이 좋다고 한다.
(물론, 개인 PC 뿐만이 아니라 각 DNS 서버에서도 발생할 수 있는 문제이긴 하다.)

'네트워크' 카테고리의 다른 글

네트워크 - UDP vs TCP  (0) 2024.05.26
네트워크 - PING (Packet Internet Groper), Ping Of Death  (0) 2024.05.26
네트워크 - LAN, MAN, WAN  (0) 2024.05.26

+ Recent posts