DNS와 작동 원리

유제·2021년 3월 20일

Developer Roadmap

목록 보기
2/2

저번 글의 말미에서 네트워크에 연결된 모든 컴퓨터에는 IP 주소라는 고유한 주소가 있고, IP 주소에 이름을 지정해 사람이 읽을 수 있는 도메인 네임이 있다고 했습니다. 왜냐하면 IP주소를 사람이 기억하기 힘들기 때문입니다.

도메인 네임?

도메인 네임은 우리 주변에서 아주 쉽게 볼 수 있습니다. google.com, naver.com같은 게 도메인 네임입니다. 도메인 네임이 없었다면 구글은 172.217.161.238, 네이버는 223.130.195.200로 접속해야합니다. (IP주소는 terminal 혹은 cmd에 ping google.com, ping naver.com을 치면 나옵니다.)

확실히 IP주소보다 도메인 네임을 사용하는 게 더 괜찮은 것 같습니다. 그렇다면 도메인 네임으로부터 IP주소를 어떻게 알아내는 걸까요?

DNS

Domain Name System

DNS란 도메인 네임을 IP 주소로 변환하거나, IP 주소를 도메인 네임으로 변환하는 일을 수행하는 시스템입니다. 이 시스템을 운영하는 서버를 네임 서버라 부릅니다.

그럼 DNS를 이용해서 도메인 네임으로부터 IP주소를 알아낼 수 있습니다. 이제 어떤 흐름으로 도메인 네임으로부터 IP주소를 알아내는 지 알아봅시다.

아래 그림의 과정을 거치면서 IP주소를 알아냅니다.

이미지 출처: NETMANIAS

위의 그림을 천천히 따라가 봅시다. (순서를 더 추가했기 때문에 그림의 순서와 다릅니다.)

  1. 사용자가 브라우저에 주소를 입력합니다. (www.naver.com)

  2. 브라우저는 Local 네임 서버에게 www.naver.com에 대한 IP 주소를 요청합니다.

  3. Local 네임 서버에 IP 주소가 있다면, 브라우저에게 IP 주소를 주고 끝이 납니다.

  4. Local 네임 서버에 IP 주소가 없다면, 다른 네임 서버와 통신을 합니다. 먼저 Root DNS 서버에 www.naver.com에 대한 IP 주소를 요청합니다. 이를 위해 Local 네임 서버에는 Root DNS 서버의 IP주소가 저장되어있습니다.

  5. Root DNS 서버는 www.naver.com의 IP 주소를 모르기 때문에 다른 네임 서버에게 요청을 하라는 응답을 해줍니다. 여기서 다른 네임 서버는 .com 도메인을 관리하는 네임서버입니다. (아래 부연설명이 있습니다.)

  6. .com 도메인을 관리하는 네임 서버에도 www.naver.com의 IP 주소가 없습니다. 그래서 이 네임 서버는 Local 네임 서버에게 또 다른 네임서버에게 요청하라는 응답을 해줍니다. 이 또 다른 네임 서버는 naver.com 도메인을 관리하는 네임 서버입니다.

  7. 이제 Local 네임 서버는 naver.com 도메인을 관리하는 네임 서버로부터 www.naver.com의 IP주소를 받았습니다. 그리고 사용자가 www.naver.com를 입력할 때마다 위의 과정을 거치지 않도록 Local 네임서버는 www.naver.com의 IP 주소를 저장(캐싱)합니다.

TLD

최상위 도메인은 TLD라 불리며, gTLD(일반 최상위 도메인, (.com, .net, .org ...)), ccTLD(국가 코드 최상위 도메인, (.kr, .jp ...))로 나뉩니다.

Root DNS 서버는 .com과 같은 TLD에 대한 DNS 정보를 포함합니다. 그렇기 때문에 5번 과정에서 .com 도메인을 관리하는 네임서버에 대한 정보를 가지고 있습니다.

도메인 네임? URL? 호스트 네임?

URL은 웹사이트 주소라고 불리기도 합니다. URL은 사이트의 도메인 네임 외에도 protocol, path 등 다른 정보들도 포함을 합니다. 예를 들어 URL https://www.naver.com/robots.txt에서 naver.com는 도메인 네임, https는 protocol, 그리고 /robots.txt는 웹사이트에서 특정 페이지를 가르키는 path입니다.

호스트 네임은 네트워크에 연결된 장치들에게 부여되는 각각의 고유한 이름입니다. 우리가 도메인 주소를 생성하고 나면 서비스를 구분하기 위해 별도의 서브 도메인을 사용하기도 합니다. 네이버 메일 서비스의 경우 mail.naver.com이라는 주소를 사용하고 네이버 웹툰의 경우 comic.naver.com 이라는 주소를 사용합니다. 여기서 mail과 comic은 naver.com이라는 도메인 네임에서 각각의 서비스를 구분하기 위한 호스트 네임입니다. - 출처: 탕구리's 블로그

참고 자료

0개의 댓글