본문 바로가기
CS

DNS란 무엇일까?

by 너츠너츠 2023. 8. 19.

DNS란 무엇일까?

도메인 이름 시스템(Domain Name System)은 사람이 읽을 수 있는 도메인 이름(ex: www.naver.com)을 읽을 수 있는 IP 주소 (ex: 192.0.2.44)로 변환합니다.

 

스마트폰이나 노트북부터 대규모 소매 웹 사이트의 콘텐츠를 서비스하는 서버에 이르기까지 인터넷 상의 모든 컴퓨터는 숫자를 사용하여 서로를 찾고 통신합니다. 이러한 숫자를 IP 주소 라고 합니다. 웹 브라우저를 열고 웹 사이트로 이동할 때 긴 숫자를 기억해 입력할 필요가 없습니다. 그 대신 example.com과 같은 도메인 이름을 입력해도 원하는 웹 사이트로 갈 수 있습니다.

 

인터넷의 DNS 시스템은 이름과 숫자 간의 매핑을 관리하여 마치 전화번호부와 같은 기능을 합니다. DNS 서버는 이름을 IP 주소로 변환하여 도메인 이름을 웹 브라우저에 입력할 때 최종 사용자를 어떤 서버에 연결할 것인지를 제어합니다. 이 요청을 쿼리라고 부릅니다.

 

DNS 쿼리 유형

재귀 쿼리

확인자가 레코드를 찾을 수 없는 경우, DNS 클라이언트는 DNS 서버 (일반적으로 DNS 재귀 확인자)가, 요청한 자원 레코드 또는 오류 메시지를 사용하여 응답하도록 요구합니다.

 

반복 쿼리

이 경우, DNS 클라이언트는 DNS서버가 가능한 최상의 응답을 반환하도록 합니다. 쿼리한 DNS 서버가 쿼리 이름과 일치하는 이름을 갖고 있지 않은 경우, 하위 수준의 도메인 네임스페이스에 대한 권한 있는 DNS 서버에 대한 참조를 반환합니다. 그러면 DNS 클라이언트가 참조 주소를 쿼리합니다. 이 프로세스는 오류 또는 제한 시간 초과가 발생할 때까지 추가 DNS 서버가 쿼리 체인을 중단한 상태로 계속됩니다.

 

비재귀 쿼리

일반적으로, DNS 확인자 클라이언트의 쿼리를 받은 DNS 서버가 해당 레코드에 대한 권한이 있거나 캐시 내부에 해당 레코드를 갖고 있어, DNS 서버가 액세스 권한을 갖고 있는 레코드를 쿼리할 때 발생합니다. 일반적으로, DNS 서버는 추가 대역폭 소비 및 업스트림 서버의 부하를 방지하기 위해 DNS 레코드를 캐시합니다.

 

DNS 서비스 유형

신뢰할 수 있는 DNS

신뢰할 수 있는 DNS 서비스는 개발자가 퍼블릭 DNS 이름을 관리하는 데 사용하는 업데이트 메커니즘을 제공합니다. 이 메커니즘을 통해 DNS 시스템은 DNS 쿼리에 응답하고 도메인 이름을 IP 주소로 변환합니다. 그러면 컴퓨터가 서로 통신할 수 있게 됩니다. 신뢰할 수 있는 DNS는 도메인에 대해 최종 권한이 있으며 재귀적 DNS 서버에 IP 주소 정보가 담긴 답을 제공할 책임이 있습니다.

 

재귀적 DNS

대개 클라이언트는 신뢰할 수 있는 DNS 서비스에 직접 쿼리를 수행하지 않습니다. 대신에 해석기 또는 재귀적 DNS 서비스라고 알려진 다른 유형의 DNS 서비스에 연결하는 경우가 일반적입니다. 재귀적 DNS 서비스는 DNS 레코드를 소유하고 있지 않지만 사용자를 대신해서 DNS 정보를 가져올 수 있는 중간자의 역할을 합니다. 재귀적 DNS가 일정 기간 캐시된 또는 저장된 DNS 참조를 가지고 있는 경우, 소스 또는 IP 정보를 제공하여 DNS 쿼리에 답을 합니다. 그렇지 않다면, 해당 정보를 찾기 위해 쿼리를 하나 이상의 신뢰할 수 있는 DNS 서버에 전달합니다.

 

DNS가  트래픽을 웹 애플리케이션에 라우팅하는 방법

1. 사용자가 웹 브라우저를 열어 주소 표시줄에 www.example.com을 입력하고 Enter 키를 누릅니다.

2. www.example.com에 대한 요청은 일반적으로 케이블 인터넷 공급업체, DSL 광대역 공급업체 또는 기업 네트워크와 같은 인터넷 서비스 제공업체 (ISP)가 관리하는 DNS 해석기로 라우팅됩니다.

3. ISP의 DNS 해석기는 www.example.com에 대한 요청을 DNS 루트 이름 서버에 전달합니다.

4. ISP의 DNS 해석기는 www.example.com에 대한  요청을 이번에는 .com 도메인의 TLD 이름 서버 중 하나에 다시 전달합니다. 

5. ISP의 DNS 해석기는 www.example.com에 대한 요청을 해당 이름 서버에 전달합니다.

6. 해당 이름 서버는 www.example.com 호스팅 영역에서 www.example.com 레코드를 찾아 웹 서버의 IP 주소 192.0.2.44 등 연관된 값을 받고 이 IP 주소를 DNS 해석기로 반환합니다.

7. ISP의 DNS 해석기가 마침내 사용자에게 필요한 IP 주소를 확보하게 됩니다. 해석기는 이 값을 웹 브라우저로 반환합니다. 또한 DNS  해석기는 다음에 누군가가 example.com을 탐색할 때 좀 더 빠르게 응답할 수 있도록 사용자가 지정하는 일정 기간 example.com의 IP 주소를 캐싱(저장)합니다. 자세한 내용은 Time to Live (TTL)을 참조하세요.

8. 웹 브라우저는 DNS 해석기로부터 얻은 IP 주소로 www.example.com에 대한 요청을 전송합니다. 여기가 콘텐츠가 있는 곳으로, 예를 들어 웹 사이트 엔드 포인트로 구성된 Amazon S3 버킷 또는 Amazon EC2 인스턴스에서 실행되는 웹 서버입니다.

9. 192.0.2.44에 있는 웹 서버 또는 그 밖의 리소스는 www.example.com의 웹 페이즈를 웹 브라우저로 번환하고, 웹 브라우저는 이 페이지를 표시합니다.

 

DNS 캐싱은 뭘까?

캐싱의 목적은 데이터를 임시 저장하여, 데이터 요청에 대한 성능과 신뢰성을 높이는 것입니다. DNS 캐싱은 요청하는 클라이언트와 가까운 것에 데이터를 저장함으로써, DNS 쿼리를 조기에 확인할 수 있고 DNS 조회 체인의 추가 쿼리를 피할 수 있이므로, 로드 시간이 향상되고 대역폭/CPU 소비가 줄어듭니다. DNS 데이터는 다양한 위치에 캐시될 수 있으며, 각 위치는 TTL에 의해 정의된 설정 시간 동안 DNS 레코드를 저장합니다.

 

TTL (Time to Live)

패킷이 라우터에 의해 폐기될 때까지 네트워크 내부에 존재하도록 설정된 시간 또는 "홉"의 양을 나타냅니다. TTL은 또한 CDN 캐싱과 DNS 캐싱 등 다른 컨텍스트에서도 사용됩니다.

※ 홉: Router

 

TTL의 동작 방식

정보 패킷이 생성되어 인터넷을 통해 전송되면 라우터에서 라우터로 무한정 전달될 위험이 있습니다. 그럴 가능성을 완화하기 위해 패킷은 TTL 또는 홉 제한에 따라 만료되도록 설계되었습니다. 패킷 TTl은 패킷이 유포되는 기간을 결정하는 데 유용할 수 있으며, 보내는 사람은 인터넷을 통해 패킷 경로에 대한 정보를 받을 수 있습니다.

 

각 패킷에는 네트워크를 통해 얼마나 더 계속 이동해야 하는지를 결정하는 숫자 값을 저장하는 위치가 있습니다. 라우터는 패킷을 수신할 때마다 TTL 수에서 하나를 빼고 네트워크의 다음 위치로 전달합니다. 뺄셈을 한 후 TTL 수가 0이 되면 라우터는 패킷을 폐기하고 ICMP 메시지를 원래 호스트로 다시 보냅니다.

 

일반적으로 사용되는 네트워크 명령 ping 및 traceroute는 모두 TTL을 사용합니다. traceroute 명령을 사용하면 점점 더 높은 순차적 TTL을 가진 패킷 스트림이 인터넷을 통해 대상으로 전송됩니다. 연결의 각 단계는 패킷 중 하나의 종점이므로 각 위치에서는 패킷을 폐기한 후 발신자에게 ICMP 메시지를 반환합니다. 그런 다음 ICMP 메시지가 발신자에게 반환되는 데 걸리는 시간이 네트워크를 따라 각 연속 홉에 도달하는 데 걸리는 시간을 결정하는 데 사용됩니다.

 

 

참고
https://aws.amazon.com/ko/route53/what-is-dns/

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

https://www.cloudflare.com/ko-kr/learning/cdn/glossary/time-to-live-ttl/

 

 

 

 

 

 

반응형

'CS' 카테고리의 다른 글

[CS] 컴퓨터 구조  (0) 2023.10.13
[CS] 운영체제 - 메모리 관리  (0) 2023.10.02
CDN이란 무엇일까요?  (0) 2023.08.15
함수형 프로그래밍이란?  (0) 2023.08.05
[알고리즘] Dynamic Programming (동적 계획법)  (0) 2023.02.12

댓글