본문 바로가기
ComputerScience/Network

DNS, DNS 테이블과 DNS 캐싱이란?

by whitele 2021. 5. 14.
반응형

 DNS

 dns는 사용자에게 편리함을 주기 위해 만들어졌다. 웹사이트들은 각각의 IP를 가지고 있고 그 아이피로 접속을 해야 우리가 보는 웹 사이트가 나온다. 하지만 우리가 접속하는 웹사이트만 해도 수십 가지이고 그것들을 일일이 외울 수 없어 이름 주소(domain name)를 사용하여 웹 페이지에 접속을 하는 것이다. 간단히 DNS는 domain name을 ip로 바꿔주는 역할을 한다.

 DNS를 이용하려면 domain name을 ip로 변환해주는 무언가가 있어야 한다. 그것을 DNS 서버라 하며 여러 종류의 DNS 서버가 있으며 그중 우리가 사용하는 것은 보통 ISP(인터넷 제공 업체 ex.KT,SKT..)에서 제공하는 로컬 DNS 서버를 사용한다. 전송 프로토콜로는 UDP를 사용하며 DNS 질의를 DNS 서버로 보낸 후 서버에서 DNS 응답을 보낸다. PORT는 53번 포트를 사용한다. UDP를 사용하는 이유는 굳이 TCP를 사용할 만큼 크기가 크지 않기 때문이다. 그러나 영역 전송이나 용량이 큰 경우 TCP를 사용한다.

 UDP port 53 : DNS 질의

 TCP port 53 : 영역전송

 클라이언트는 컴퓨터마다 hosts.txt 파일이 있으며 이곳에 DNS 정보가 들어있다. DNS 테이블이라 한다. 굉장히 많은 도메인 주소가 있어 이것을 모두 담는 것은 무리가 있다. 때문에 DNS 서버를 두고 DNS 프로토콜을 이용하여 정보를 받는다.

 

DNS의 계층적 구조

DNS 계층 구조

위와 같이 계층적 구조로 되어 있으며 상위 도메인은 그 하위 도메인을 관리하는 형태이다.

FQDN

 Full Qualified Domain Name의 약자이다. 완전한 주소 이름을 지칭한다. 호스트 이름과 도메인 이름을 합친 형태이다.

 

DNS의 동작 과정

DNS 기본동작

 기본 동작은 위와 같다. Local DNS에 DNS 정보가 없을 경우 계층적으로 DNS 서버에게 질의를 한다. root DNS 서버에게 전달한 후  계층적으로 질의를 하여 Local DNS가 최종적으로 클라이언트에게 IP주소를 응답한다. 모든 동작이 위와 같지는 않다. 최상위 도메인 서버가 바로 IP를 응답하도록 구조가 되어있는 경우도 있으며 DNS 서버를 두는 로컬망의 경우 서버 하나가 DNS 역할까지 맡아서 하는 경우도 있다. Local DNS에 정보가 DNS 테이블에 있을 경우 바로 응답을 하게 된다.

 

DNS 캐싱

Local DNS 서버

 Local DNS 서버는 이 정보를 수집하여 자신의 저장장치에 저장한다. 매번 Client에게 질의를 받을 때마다 상위 도메인 서버에 질의를 할 수 없다. 그렇기에 새로 질의를 하게 되면 DNS 캐싱을 하여 저장한다.

대부분의 DNS 동작

 이러한 정보들도 계속 가지지는 않는다. 계속 저장하게 되면 이미 바뀐 정보가 아닌 이전 정보를 보낼 수 도 있기에 주기적으로 내용을 업데이트한다.

Client 

 클라이언트에서도 DNS 정보를 캐싱한다. DNS 정보는 hosts.txt 파일에 저장되어 있으며 주기적으로 내용을 삭제한다. DNS 정보가 Client에 저장되어있으면 매우 빠른 처리가 가능하기에 유리하다. 만약 이 파일에 DNS 정보가 없다면 앞서 설명한 것처럼 DNS 서버에게 질의를 하게 된다.

추가로 ARP 캐시 테이블과 매우 흡사한데 ARP가 Mac 주소를 저장하듯 DNS는 IP를 저장한다.

 

DNS 공격

 DNS를 이용한 공격이 가능하다. 대표적으로 DNS 스푸핑 , 포이즈닝이 있다.

 DNS 스푸핑 : 클라이언트가 질의를 할 때 그 질의를 낚아채 먼저 잘못된 정보를 응답하는 공격이다. 나중에 도착한 올바른 정보는 버려지게 되므로 클라이언트는 잘못된 주소로 접속하게 된다.

 DNS 포이즈닝 : DNS 정보를 잘못된 정보로 직접 바꾸는 방식이다. 서버에게도 해당된다.

 

DNS는 생각보다 간단한 형태로 되어있다. 지금 같은 DNS 서비스가 존재하기 이전에는 hosts.txt 파일을 직접 받아서 썼다. 

728x90
반응형

댓글