DNS 조회 (DNS Lookup)

ChoiYongHyeun·2024년 2월 1일
0

HTTP

목록 보기
17/17

웹페이지를 표시한다는 것: 브라우저는 어떻게 동작하는가

MDN 의 개발자를 위한 웹 개술을 읽으며 바텀 업 형식으로 공부해나가는 포스트

이번 DNS 는 널널한 개발자님의 유튜브 영상 중

웹 브라우저에 URL 입력하면 일어나는 일 - 인프라 위주DNS 를 공부해야겠다는 것을 깨닫고

전세계 인터넷을 멈추는 방법과 DNS 을 보고 DNS 에 대해 딥다이브 해서 공부한 내용을 정리한 내용이다.

널널goat ㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷ


인터넷은 라우터와 DNS 의 계층적 구조

인터넷은 서비스를 이용하고자 하는 클라이언트와 서비스를 제공하는 서버간을 잇는

수 많은 라우터들과 올바른 제공자를 찾을 수 있게 해주는 DNS 간의 계층적 구조로 이뤄져있다.

클라이언트는 서버에게 packet 이라 불리는 데이터 단위를 받아

물리적 거리와 상관 없이 어디서든지 서비스를 제공 받을 수 있다.

이 때 packet 이 지나가는 도로를 라우터 , packet 을 요청하기 위해 필요한 이정표를 인간 친화적으로 바꿔주는 것이 DNS (Domain name system) 이다.

계층 구조 이해하기

라우터는 네트워크 종단에 위치한 서버로부터 클라이언트까지 데이터 패킷을 효율적으로 전송 될 수 있도록 하는 중추적인 역할을 한다.

각 라우터는 라우팅 알고리즘을 통해 효과적으로 패킷을 빠르게 전송하고

신뢰성 있는 전송을 위한 다양한 알고리즘들이 존재한다.

라우터는 존재하는 위치와 역할에 따라 다양한 기능을 가졌으며 예시로

서버 단에 위치한 최상위 라우터는 라우터 경로들을 관리하며 클라이언트 단에 위치한 라우터들은 지역화된 트래픽을 처리한다.

라우터와 관련된 깊은 내용은 네트워크 공부 할 때 더 하도록 하고 DNS 와 연관된 라우터에 대한 내용을 더 생각해보자

패킷의 여정

서버를 통해 정보를 교환한다는 것은 결국 네트워크 종단간에 있는 서버와 클라이언트가 서로 패킷을 주고 받는 것이다.

그럼 패킷이 네트워크 종단에서 어떻게 이동하는지 확인해보자

AB 에게 요청을 보내는 상황이다.
[따라學IT] 06. 멀리 있는 컴퓨터끼리는 이렇게 데이터를 주고받는다 - 라우팅 테이블 및 전송 과정

AB 가 패킷을 주고 받기 위해서는 우선

요청하는 쪽에서 요청을 보낼 곳의 IP 주소를 알고 있어야 한다.

이후 AB 의 주소에 요청을 보내기 위해서는 가기 위한 길을 확인하기 위해

라우팅 테이블을 확인한다.

각 라우터들은 도착 IP 주소로 가기 위해 연결해야 하는 라우터의 주소를 라우팅 테이블을 통해 관리하고 있으며

라우팅 테이블 중 IP 주소와 가장 연관성이 높은 라우터와 연결 한다.

BIP 주소가 192.168.20.20 이니 192.168.20.0 대로 가기 위한 라우터의 IP 주소는 192.168.10.1 이다.

그럼 192.168.10.1 주소를 가진 라우터와 연결되고

또 연결된 라우터에서 라우팅 테이블을 확인하고 점점점 B 근처로 도달하여 결국엔 도착하게 된다.

라우터를 통해 패킷이 오고가는 동안 계층 별 헤더가 존재하는데 그것 또한 네트워크 공부 할 때 더 깊게 하도록 하자 !!

이처럼 라우터들은 지역적 관계에 따라 라우팅 테이블을 관리하고 있으며 이런 계층적 관계를 통해 우리는 먼 지역의 서버 향하는 길을 효율적으로 찾아 갈 수 있다.

실제로 우리가 네이버에 접속하기 위한 주소는 223.130.195.200 으로 해당 IP 주소를 입력하면 네이버에 접속 할 수 있다.


DNS: 인간 친화적인 이름으로 변환해주는 서버

우리는 라우터들을 통해 지리적 위치와 상관없이 리소스를 제공받을 수 있다.

네트워크 환경만 존재한다면 :)

리소스를 제공받기 위해서는 도착지의 IP 주소를 알아야 하지만

192.168.20.20 이라는 주소는 너무 끔찍하게도 익숙하지 않다.

옷을 사기 위해 192.168.20.20 이라는 주소를 치는 것은 너무 어색하다.

서버들은 본인의 IP 주소를 클라이언트에게 인간 친화적인 이름으로 변환하여 클라이언트에게 제공한다.

이렇게 인간 친화적인 이름으로 변환된 주소를 Domain 이라고 한다.

우리가 주소창에 http://www.naver.com 를 입력하면

해당 도메인을 IP 주소로 변환해 정보를 요청 할 수 있도록 도와주는 서버를

DNS (Domain name server) 라고 한다.

Domain 의 구성

http://www.naver.com:80

해당 주소는 우리에게 익숙한 주소이다.

이런 주소를 구성 요소로 분해 가능하다.

  • http : scheme 이라 하며 사용하는 프로토콜을 의미한다.

  • www.naver.com : 도메인 이름으로 리소스가 위치한 구체적인 주소다.
    해당 주소는 www 라는 하위 도메인과 naver.com 이라는 기본 도메인으로 나눠진다.

  • .com : TLD (Top-Level-Domain) 으로 최상위 도메인을 의미한다.

  • :80 : 서버의 포트 번호

도메인 주소는 위처럼 계층적인 구조를 가지고 있다.

DNS 는 만물상점처럼 http://www. ... .com 부터 https://www. ... .co.kr 까지

온 세상 모든 도메인 이름을 저장하고 있는 서버가 아니다.

도메인이 계층적 구조로 이뤄져있듯 DNS 또한 계층적인 구조로 이뤄져있다.

DNS 의 계층적 구조

구글 클라우드에 적힌 DNS 에 대한 내용을 살펴보면 재귀 리졸버니 서버 쿼리니 어려운 이름들이 등장한다.

처음에는 해당 글을 읽고 도저히 감이 안왔는데 널널GOAT 의 영상과 실습 영상을 보고 감이 왔다.

우리가 www.naver.com 이란 주소를 DNS 서버에 요청을 보낼 때

우선 도메인 주소를 분류한다.

www , naver , com 과 같이 하위도메인, 도메인이름, 최상위 도메인과 같이 말이다.

이후 우리는 www.naver.com이란 도메인 주소의 IP 주소를 가지고 있는 DNS 를 찾기 위한 여정을 떠난다.

  1. 맨 처음 최상위 도메인인 .com 을 사용하는 도메인 이름들의 주소를 가지고 있는 DNS 의 주소를 찾기 위해 최상위 도메인 서버에게 연락한다.

    계신가요 , 혹시 최상위 도메인이 .com 인 도메인의 주소들을 관리하는 서버의 주소를 아시는지요

    최상위 도메인의 주소들을 관리하는 DNSroot DNS 라고 하며 전 세계에 root DNS 는 13개가 존재한다.

이 때 이러한 연락을 쿼리라고 하며 , Domain 에 대한 적합한 정보를 줄 수 있는 서버들의 주소를 주고 받는다.

  1. root DNS 에서는 .com 인 도메인 이름들을 관리하는 DNS 서버들의 주소를 준다.

    계신가요 , 혹시 이곳에서는 .com 인 도메인들의 IP 주소를 알고 있다고 하셔서 찾아왔습니다 .. 혹시 naver.com 주소는 아시나요 .. ?

    .com 을 관리하는 DNSnaver.com 이라는 주소를 관리하는 DNS 를 소개시켜준다.

  2. 이후 소개 받은 DNS의 주소를 통해 쿼리를 보낸다.

    계신가요 .. 여기가 naver.com을 관리한다고 하셔서 찾아왔습니다 .. 혹시 www.naver.com을 아시나요 ..

    뺌 도착

이처럼 재귀적 리졸브란 이름이 붙은 것은 계층 구조를 따라 원하는 주소를 찾기 위해 쿼리를 날리는 행위를 반복하기 때문이다.

한 번 실습으로 알아보자

전 세계에 있는 root DNS 들의 주소이다.

지금 아니면 나사에게 연락을 할 일이 없을 것 같으니 나사에게 보내보도록 하겠다.

root DNS - NASA 와 연결하기

cmd 실행하여 프롬포트 실행 한 후 나사의 address 를 작성한다.

연결이 됐으니 물어보자

당돌하게 www.naver.com 알려달라고 하니 .com 을 관리하는 DNS의 주소를 알려준다.

.com 을 관리하는 DNS 서버에 연락하기

주어진 정보 잘 받았으니 exit 이후 마지막 서버로 접속하자

이후 당돌하게 물어보자

짜잔 주소를 받았습니다

와우


DNS 캐싱

정보통신용어사전 DNS 캐싱 에 있는 인터렉티브한 마인드맵인데 너무 귀엽다
그래서 움짤로 쪄왔습니다 빙글빙글

이처럼 DNS 에 매번 재귀적 쿼리를 날리는 것은 비용이 많이 든다.

오래 걸리고

그럼 우리는 www.naver.com 을 검색 할 때 마다 저 비효율적인 재귀 과정을 거쳐야 할까 ?

DNS 서버에서 받은 IP address 는 주소 뿐 아니라 캐싱을 위한 Expire 와 같은 헤더와 함께 받는다.

캐싱이 될 기간을 TTL (Time To Live) 라고 한다.

이런 캐싱 자료들은 브라우저의 메모리, 로컬메모리 , 사용하는 공유기 회사의 DNS 서버 등에 캐싱되고 동일한 Domain 에 대한 주소를 물어 볼 때

캐싱된 자료를 우선적으로 찾아본 후 존재하지 않을 경우 DNS 서버들에 쿼리를 날린다.


이를 통해 웹이 전달되기 위한 가장 첫 번째 스텝에 대해 공부해봤다.

굿

profile
빨리 가는 유일한 방법은 제대로 가는 것이다

0개의 댓글