CS/네트워크

[네트워크] DNS

mhko411 2021. 7. 7. 20:57
728x90

DNS(Domain Name System)은 문자열 형태로 되어있는 URL을 숫자로 되어있는 IP주소로 치환해준다. 그렇다면 DNS가 왜 필요한지, 어떻게 동작하는지 알아보자.


IP 주소를 그대로 사용한다면?

만약 google, naver 등에 접속하기 위한 주소를 숫자로 기억해야한다면 쉽지 않을 것이다. www.google.com으로  입력하면 될 것을 32bit의 수를 기억하여 원하는 정보를 검색해야 한다면 불편할 것이기 때문에 이러한 IP 주소대신 문자열 형태로 되어있는 도메인이름을 사용한다.

 

하지만 실제로 데이터를 전송하기 위해서는 IP주소가 필요하다. 따라서 브라우저에 입력한 도메인이름에 해당되는 IP주소를 찾는 과정을 거치게된다. 근데 이 과정에서 번거롭게 도메인이름에 해당되는 IP주소를 찾고 IP주소를 받아서 요청을 해야할까? 그냥 문자열 형태로 되어있는 주소 하나만 사용하면 되지 않을까? 하는 생각을 하게된다.

 

IP 주소는 8bit씩 4개로 구성되어있고 총 32bit = 4byte가 된다. 하지만 문자열 형태로 되어있는 주소라면 최대 255byte를 사용하게된다. 따라서 데이터를 운반하는데 더 많은 시간이 걸리기 때문에 효율적이지 못하다. 따라서 데이터를 송수신하기 위해서는 숫자로 되어있는 IP주소를 사용하고 사람들이 알아보기 쉽게하기 위해서 문자열로 되어있는 도메인네임을 사용한다.

 

DNS 서버가 요청에 응답하는 방법

위에서 DNS의 필요성을 알 수 있었다. 우리는 문자열 형태의 URL에 해당하는 IP주소를 얻기위해 DNS 서버에 IP 주소를 알려달라는 요청을 보내게된다. 요청을 보내는 클라이언트는 3가지의 정보가 포함된 조회 메시지를 보낸다.

- 접속하고자 하는 서버의 이름

- 네트워크를 식별하기 위한 클래스

- 어떤 정보가 지원되는지를 나타내는 타입 (웹 서버, 메일 서버)

이러한 조회 메시지를 통해 DNS 서버는 서버에 등록된 대응표를 탐색하여 클라이언트가 원하는 정보를 반환한다.

 

하지만 인터넷에 존재하는 수 많은 정보를 하나의 DNS 서버에 저장하는 것은 불가능하며, 이에 따라 DNS 서버에 클라이언트가 요청한 정보가 없을 수도 있다.

DNS 서버들은 정보를 분산시켜 여러 대의 DNS 서버에 등록하고 DNS 서버들끼리 정보가 어디에 등록되어있는지 통신한다. 도메인을 계층별로 나눠서 저장하게 되는데 google.com을 조회한다고 했을 때 루트 도메인 계층에서 com이 저장된 DNS 서버로 이동한다. 이어서 google이 저장되어있는 DNS 서버로 이동하게 된다. 

 

이처럼 google.com에서 google은 com의 하위 계층으로 등록하게되어 루트 도메인을 출발하여 최종적으로 google.com의 IP 주소를 찾을 수 있게된다.

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

[네트워크] 서버의 부하를 분산하는 방법  (0) 2021.07.20
[네트워크] 방화벽의 동작원리  (0) 2021.07.19
[네트워크] 네트워크 장비  (0) 2021.07.12
[네트워크] TCP/IP  (0) 2021.07.08
[네트워크] HTTP  (0) 2021.07.07