DNS란?

hyun·2022년 4월 3일
1

네트워크

목록 보기
1/1
post-thumbnail

이 포스트에서 다룰 것

웹 브라우저의 동작 순서 포스팅을 하면서 나왔던 개념인, DNS가 무엇인지 학습한다. 학부생 시절 네트워크 수업을 수강하지 않았기 때문에, DNS나 도메인 등의 용어를 들어만 봤지 정확하게 무엇인지 모르고 있었다. 이번 포스팅을 하면서 웹 동작의 이해에 필요한 네트워크 지식을 쌓아야겠다.

DNS란?

Domain Name System의 약자이다. DNS가 무엇인지 알려면 도메인이 무엇인지 먼저 알아야겠다.

URL 구조

우리가 접속하는 URL은 여러 구성요소로 이루어져 있다.

Protocol


HTTP(Hyper Text Transfer Protocol)은 프로토콜(규약)으로,웹에서 서버와 클라이언트 간에 어떤 방식으로 자원을 교환할지 알려주는 역할이다. 익숙하게 본 HttpHttps 이외에도 ftp(파일을 주고받는 프로토콜), mailto(이메일 주소를 지정하는 프로토콜) 등 여러가지가 있다고 한다.
HTTP 프로토콜은 무상태(stateless)라는 특징을 가지고 있는데, 간단히 말하면 서버가 여러 클라이언트들을 구분할 수 없다는 것이다. 이 방식의 장점으로는 불특정 다수에게 서비스를 할 때 적합하고, 훨씬 많은 요청과 응답을 처리할 수 있다는 것이다. 단점으로는 연결이 끊어진 후에는 클라이언트가 이전에 어떤 작업을 했는지 알 수 없다는 것인데, 이 단점을 보완하고자 쿠키라는 기술이 등장했다.

Domain


www 뒤에 나오는 녀석이 도메인이다. 웹서버의 위치를 지정해 주는 역할을 한다. 우리가 브라우저에 도메인을 입력하면, 브라우저가 도메인을 타고 해당 웹서버에 찾아가 IP주소를 알려달라고 요청할 수 있다. IP 주소는 누군가에게 전화를 하려면 전화번호를 알아야 하듯이, 데이터를 받아오려면 알아야 하는 주소이다. 컴퓨터 네트워크 상에서 각 장치의 고유 번호라고 보면 되는데, 이 IP는 길고 외우거나 구별하기 어렵기 때문에 DNS를 통해 알기 쉬운 도메인 주소로 변환되는 것이다. 이를테면 네이버의 IP 주소는 223.130.195.200인데, 이걸 접속하기 쉬운 naver.com이라는 도메인 주소로 바꾼 것이다.

이 IP주소를 알고 있다면 도메인 대신 직접 IP주소를 사용하는 것도 가능하다. 로컬에서 개발을 할 때 127.0.0.1 으로 접속하는 것과 같이 말이다.

Port

포트는 말 그대로 항구와 같은 역할을 한다. 바다 너머의 세상과 육지를 연결해주는 관문과 같다. 웹에서도 마찬가지로, 인터넷 상에 있는 서버에 접속할 때 브라우저와 서버 간을 연결해주는 역할을 한다. URL 또는 IP를 토대로 찾아간 서버 컴퓨터 상에는 대부분 여러개의 프로그램이 실행되고 있어서, 이 여러개의 프로그램 중 어떤 프로그램에 접속할 것인지 알려주는 역할이다.

Query Parameter


& 기호로 구분되는 key-value 형식의 리스트로, key와 value는 = 문자로 구분한다.

Anchor

# 뒤에 나오는 녀석으로, 책갈피 역할을 한다. 특정 스크롤 위치로 이동하려고 할 때 생기며, 요청이 서버로 보내지지 않는다.

다시, DNS란?

앞에서, IP주소는 복잡하고 외우기 쉽지 않기 때문에 이를 쉬운 도메인으로 변경한 것이라고 했다.

도메인: www.naver.com
IP: 223.130.195.200

사이트마다 길고 어려운 IP주소를 외울수가 없기 때문에, 이렇게 전화번호부 같은 것을 만들어서 외우기 쉬운 주소들로 접속을 하는 것이다. 이 전화번호부의 정보가 저장되는 곳이 DNS이다.

내 컴퓨터에서 www.naver.com에 접속하려고 한다고 가정해보자. 그런데, 현재 내 브라우저는 네이버의 IP주소를 모른다. 그래서, 브라우저는 먼저 PC에 설정된 로컬 DNS 서버에 해당 도메인의 호스트명과 IP를 가지고 있는지 물어본다. 이 로컬 DNS 서버는 보통 통신사마다 지정된 곳이 있는데, 사용자가 다른 곳으로 바꿀 수도 있다. 로컬 DNS 서버에는 이 주소가 이미 캐싱되어서 정보를 가지고 있을 수도 있고, 없을 수도 있다. 있다면 바로 접속이 가능할 것이고, 없다면 로컬 DNS 서버가 Root 서버에게 이 주소에 해당하는 IP를 어디 찾을 수 있는지 물어본다. 이 루트 DNS 서버는 전세계에 13개가 있다고 한다.

이 루트 DNS 서버는 응답으로, .com으로 끝나는 도메인들을 담당하는 서버의 IP 주소를 반환한다. 로컬 DNS 서버는 이 주소를 받아들고 .com 담당 서버를 찾아간다. 그러면 .com 서버는 naver.com의 도메인 정보를 가진 DNS 서버의 IP 주소를 알려준다. 그 주소를 보고, naver.com의 여러 호스트네임 별 IP 주소들 중에서 www라는 호스트네임을 가진 IP 주소를 얻어낸다. 이 IP주소를 브라우저에 반환하면, 드디어 www.naver.com에 접속하게 되는 것이다.

정리

  • DNS란, 복잡한 IP 주소 대신 사용하는 도메인들의 정보를 저장하는 곳이다.
  • 브라우저에 주소를 입력하고 접속을 시도하면, 먼저 로컬 DNS에 해당 주소의 정보가 저장되어 있는지 찾는다.
  • 로컬 DNS에 정보가 있다면 바로 접속이 가능하지만, 없다면 Root DNS 서버에 물어본다.
  • Root DNS 서버에서 얻은 도메인 정보를 타고 가 IP주소를 얻어서 해당 주소에 접속할 수 있다.
profile
프론트엔드를 공부하고 있습니다.

0개의 댓글