Study/IT 지식

인터넷(Internet), 도메인 네임(Domain name), DNS 개념 이해

devyoseph 2021. 11. 23. 02:55

인터넷

인터넷은 수십억 대의 컴퓨터를 모두 연결하는 기술 인프라입니다

물리적(이더넷 케이블) 또는 무선(WIFI, Bluetooth)으로 서로를 연결할 수 있는데

그림처럼 하나씩 서로를 연결하면 천문학적인 비용이 듭니다

컴퓨터 10대면 45개의 연결선이 필요합니다

이를 해결하기 위해 라우터(패킷 전송 장치)라는

중간 장치를 사용해 연결을 효율적으로 만듭니다

그리고 다시 그 라우터들을 하나의 라우터에 연결하는 것이죠

전세계의 라우터들을 연결하기 위해서

서로 멀리 떨어져 있는 라우터까지 연결해야합니다

하지만 장거리 전송에서 디지털 신호는 손상될 수 있으므로

모뎀을 이용해 아날로그 신호로 변환한 다음 전화 시설을 통해 전송합니다

네트워크의 디지털 신호 → 전화선의 아날로그 신호

오른쪽에 모뎀이 연결된 모습

모뎀에서 어느 라우터로 보내야 하는지 모르고

그 라우터에 액세스(접근) 할 수 있는 권리도 없습니다

그래서 특수한 라우터를 관리하고 연결을 도와주는

ISP(Internet Service Provider, 인터넷 서비스 제공자) 를 이용합니다.

이 ISP의 라우터는 다시 다른 ISP의 라우터와 연결되어 있어서

같은 방식으로 하위의 컴퓨터에 신호를 전달할 수 있게 됩니다

도메인 네임

메시지를 보내려면 메시지를 받을 특정 컴퓨터를 지정해야하는데

네트워크에 연결된 모든 컴퓨터에는 IP 주소라는 고유한 주소가 있습니다.

( IP = Internet Protocol, 각 장치를 나타내는 IP 주소 )

ex) '173.194.121.32'

혹시 예시로 적은 IP주소가 어딘지 아시겠나요?

사람이 일일히 IP 주소를 기억할 수 없습니다

이에 사람이 기억할 수 있도록 IP 주소의 이름을 정한 것이

바로 도메인 네임입니다

위 IP 주소는 www.google.com 의 도메인 네임을 가집니다

* Domain은 영역을 뜻합니다

DNS

DNS는 도메인 네임 시스템(Domain Name System)의 약자입니다.

IP 주소 ↔ 도메인 네임

상호작용할 수 있게끔 변환시켜주는 시스템입니다

하지만 작동원리는 생각보다 단순하지 않습니다

DNS 작동 원리

보통 전화번호부에 비유하는데요

저의 방식으로 풀어보겠습니다

미국에 사는 마이클 아저씨에게 전화하고 싶은데

이름만 알고 있는 상황입니다. 어떻게 해야할까요?

여기서 마이클 아저씨는 도메인 네임이고

전화번호부는 DNS 서버입니다

전세계 모든 사람의 전화번호(도메인 네임)를 알 수는 없습니다

60억이 넘는 전화번호를 내 컴퓨터에 저장할 수도 없는 노릇이죠

어느 큰 저장소(전화번호부)가 필요하게 합니다

도메인 네임은 특수한 컴퓨터들(전화번호부) 안에 저장되어 있어서

사용자가 도메인 네임을 검색하면 내 컴퓨터는 그 특수한 컴퓨터들에게 연락해

저장된 값을 알아내는 방식으로 IP 주소를 얻어냅니다

*DNS 작동 방식

관련 분야가 아니라면 조금 어려울 수 있습니다.

마이클 아저씨를 찾으려는 찰나

마음씨 좋은 동네 친구가 나타났습니다

그 이름은 Local DNS

이 Local DNS는 마이클 아저씨의

전화번호를 가지고 있을 수도 없을 수도 있습니다

있다면 바로 주면 되겠죠

이것을 캐싱(Caching)이라고 합니다

그런데 Local DNS는 아저씨의 전화번호가 없다고 말합니다

나는 "전화번호를 알아내면 그 때만 연락해줘" 라고 말합니다

Local DNS는 자신의 지인들에게 한 명씩 연락하기 시작합니다

그리고 나를 따라 "전화번호를 알아내면 그 때만 연락해줘"

라고 말을 마치고 연락올 때까지 다음 전화를 하지 않습니다

지인의 이름은 Root DNS, com DNS, Bob.com DNS 입니다

내가 만약 Local에게서 전화를 받았다면 연락 순서는 어떻게 될까요?

Client(나) "찾아줘" → Local DNS "찾아줘" → Root DNS "오키"

Root DNS "없는데? com에게 물어봐" → Local DNS "찾아줘" → com DNS "오키"

com DNS "없는데? Bob에게 물어봐" → Local DNS "찾아줘" → Bob.com DNS "오키"

Bob.com DNS "야 찾음" → Local DNS "여깄음" → Client(나) "굿"

재귀적 질의(Recursive Query)

Client(나)에서 입장에서는 출발한 신호가

Local DNS → Root DNS → com DNS → Bob.com DNS

로 이동하고 다시 거꾸로 돌아옵니다

이렇게 캐시 데이터가 없을 때 최상위 Root 네임서버부터

계층 트리를 따라 반복적 질의를 수행하고

결과값을 호스트에게 반환하는 방식을 재귀적 질의라고 합니다

반복적 질의(Iterative Query)

Local DNS 입장에서는

Root DNS, com DNS, Bob.com DNS 에게 순서대로 연락했습니다

이렇게 캐시 데이터가 없을 때 최상위 Root 네임서버부터

위임된 네임 서버 정보에 따라 순차적으로 질의를 반복하는 방식을

반복적 질의라고 합니다