[Network] 도메인과 DNS - 1편

coderH·2022년 11월 13일
0

네트워크

목록 보기
1/2
post-thumbnail

도메인과 DNS - 1편

오늘은 네트워크에서 필수 지식 중 하나이자 많이 접해보았을 개념인 도메인과 DNS에 대해서 알아보겠습니다.

도메인이란?

컴퓨터는 기본적으로 숫자만 읽을 수 있으며 우리가 컴퓨터상에서 사용하는 영어와 한글같은 문자들은 모두 숫자로 변환되기 때문에 사람과 기계 간 소통이 가능합니다.

우리가 일반적으로 특정 사이트에 접속하기 위해서 주소창에 google.com과 같은 알파벳으로 이루어진 URL(URI)을 사용하여 사이트에 접속하지만 컴퓨터는 이를 읽을 수 없고 IP주소를 통해서만 서버에 접근할 수 있습니다.

  • 특정 사이트의 IP주소 알아보기
    터미널에서 nslookup이라는 명령어를 이용하여 찾아볼 수 있습니다.
    nslookup 예시
    위쪽에 위치한 서버와 Address는 사용자의 서버와 DNS 주소이며
    아래에 권한 없는 응답 부분이 구글과 구글의 IP주소입니다.
    또한, 구글의 경우 IP주소가 2개로 나오고 있는데 위쪽은 IPv6형식, 아래쪽은 IPv4형식의 IP주소 입니다.

하지만 숫자만으로 이루어진 형태를 사람이 사용하기엔 가독성도 외우기에도 쉽지 않습니다.
그래서 이러한 불편함을 해소하고자 도메인이 생기게 되었습니다.

URL의 구조

우리가 사용하는 URL은 사진과 같은 구조를 가지고 있으며 www.google.com 이 부분 전체를 도메인이라고 합니다.

또한 도메인은 서브도메인, 도메인(SLD), 최상위 도메인으로 구성되어 있습니다.

DNS(Domain Name System)란?

위에서 말한 것 처럼 컴퓨터는 IP주소로만 특정 서버에 접근할 수 있기 때문에 사용자가 입력한 도메인을 IP주소로 변경해줄 수 있는 시스템이 필요합니다.

이 역할을 DNS가 해주는것이며 URL이 IP주소로 변환되는 과정을 보기전에 먼저 DNS의 기본 구성요소들엔 어떤 것들이 있는지 알아보겠습니다.

DNS의 구성요소

DNS의 기본 구성요소는 Domain Name Space, DNS Server, DNS Resolver 이렇게 3가지가 있습니다.

Domain Name Space

도메인을 식별하고 분리하는 규칙으로 도메인은 위에서 설명한대로 루트부터 TLD, SLD, 서브도메인까지 계층구조로 이루어져 있습니다.

도메인의 계층 구조

출처: CS Notes

DNS Server

인터넷에 존재하는 도메인명과 IP주소의 리스트를 가지고 있는 서버입니다.

만약 이 DNS Server에서 해당 도메인의 IP주소를 찾지 못한다면 404에러가 발생하게 됩니다.

404 에러 사진

DNS Resolver

DNS Resolver는 ISP(Internet Service Provider, 인터넷서비스제공업체)에서 제공하는 서버
중 하나입니다.
한국의 인터넷 서비스 제공업체라면 SK, KT, LG같은 회사가 대표적이겠죠?

대부분의 일반인이 사용하는 인터넷은 모두 ISP로부터 일정 요금을 지불하고 사용하며
ISP에서 제공하는 모든 인터넷은 이 DNS Resolver와 연결됩니다.

네트워크 탭의 DNS 서버

네트워크탭의 자세히 보기를 통해 DNS 서버라는걸 확인할 수 있는데 여기서 말하는 DNS 서버가 DNS Resolver입니다.

DNS Resolver는 몇몇 필수 도메인의 IP주소를 가지고 있으며 사용자가 이전에 방문했던 사이트를 정해진 일정 기간동안 캐싱하여 사용자가 더 빠르게 IP주소를 찾을 수 있도록 도와줍니다.

밑에서 IP주소를 찾는 과정에 대해 자세히 다루겠지만 DNS Server에 요청하여 IP주소를 찾는 일이 가벼운 작업이 아니기 때문에 이를 캐시를 이용해 빠르게 처리합니다.

캐시된 도메인과 IP주소의 리스트는 터미널에서 ipconfig /displaydns라는 명령어를 통해 확인해 볼 수 있습니다.

ipconfig /displaydns 결과값

결과값 중 TTL이라는 값이 보이는데 이 TTL이 캐시 유효기간을 말하며 초단위로 작성되어 있습니다.
최대 14400초(4시간)까지 캐시가 가능하며 TTL이 짧을수록 유동 IP, 길수록 고정 IP를 쓸 확률이 높습니다.

IP주소를 찾아가는 과정

사용자가 도메인을 입력했을 때 어떻게 IP주소를 찾는지 먼저 간략하게 그림으로 알아보겠습니다.

IP주소를 찾는 과정

  1. 대부분의 운영체제에는 Hosts라는 파일이 존재하며 이 파일을 먼저 확인하고 해당 도메인과 IP주소가 존재한다면 해당 IP주소로 접속을 시도합니다.
    hosts 파일의 위치
    hosts 파일은 사용자가 직접 수정하지 않는 한 수정되는 경우가 거의 없으며
    내부에는 IP주소 도메인명의 형식의 값이 들어있어 이를 토대로 URL 입력시 가장 먼저 이 곳을 확인하게 됩니다.

  2. DNS Resolver에게 해당 도메인과 IP주소가 있는지 확인을 요청하고 존재한다면 바로 브라우저에게 해당 IP주소를 전달합니다.

  3. DNS Resolver가 해당 도메인에 대한 정보가 없어 IP주소를 찾기 위해 DNS Server에게 요청합니다.

  4. DNS Server가 해당 도메인과 맞는 IP주소를 찾아 반환하거나 혹은 없다고 응답합니다.

  5. DNS Resolver가 위 과정에 대한 응답을 브라우저에게 전달합니다.
    만약, 찾지 못했다는 응답이 왔을 경우 브라우저는 404에러를 띄우게 됩니다.

DNS 서버의 종류

위에서는 IP주소를 찾는 과정을 간단하게 다루기 위해 한개인것처럼 말했지만 사실 DNS 서버는 3가지 종류가 있습니다.

Root Domain Name Server

루트 도메인 네임 서버는 네임 서버 중 가장 최상위 계층에 위치해있으며 국제인터넷주소관리기구인 ICANN에서 직접 관리합니다.

루트 도메인의 역할은 해당 URL에서 해당하는 최상위 도메인 서버의 IP주소를 DNS Resolver에게 다시 전달해주는 역할을 합니다.

예를 들어, 사용자가 google.com이라고 입력한다면 com의 도메인 네임 서버 IP주소를 반환합니다.

IP주소를 찾기 위한 과정은 이 루트 도메인 서버로부터 재귀적으로 진행되기 때문에 모든 DNS Resolver는 이 루트 도메인의 IP주소를 알고 있습니다.

따라서 전 세계에서 접속해야 하므로 빠른 속도를 위해 전 세계에 13개의 서버가 존재합니다.

TLD(Top-Level Domain) Name Server

ICANN의 하부 조직인 IANA가 최상위 도메인 서버를 관리합니다.

TLD 서버는 URL의 가장 끝 부분에 위치한 com, kr, net과 같은 최상위 도메인을 담당하는 서버로

자신을 사용하는 모든 도메인(SLD)의 IP주소가 저장되어 있습니다.
예를들어, 최상위 도메인이 com이라면 google, naver등의 IP주소를 가지고 있는것입니다.

따라서 이 단계에서는 도메인(SLD)에 맞는 도메인 네임 서버의 IP주소를 반환합니다.
만약 서브도메인이 없는 URL이라면 이 과정에서 접속하고자 하는 사이트의 IP주소를 얻을 수 있습니다.

또한, TLD는 크게 gTLD, ccTLD 2가지로 나누어집니다.

  • gTLD (generic TLD)
    일반적으로 많이 쓰이는 com, ent, org, gov와 같은 도메인을 말하며 ICANN에서 관리합니다.

  • ccTLD (country code TLD)
    풀네임에서 볼 수 있듯이 국가, 국제 단체 등 특정 최상위 도메인(kr, uk, us, jp 등)이 해당되며 이들은 해당국가에서 직접 관리합니다.

SLD(Second-Level Domain) Name Server

SLD 네임 서버는 네임 서버 구조에서 가장 하단에 위치해있으며 만약 URL에 서브도메인이 있는 경우 서브도메인의 IP주소를 전달하는 역할을 합니다.

실제 서버의 IP주소를 가지고 있기 때문에 Authoritative Domain Name Server라고 부르기도 합니다.

이처럼 DNS Resolver가 각 네임 서버들과 요청과 응답을 반복하며 재귀적으로 IP주소를 찾아가며 만약 이 과정을 거쳤음에도 IP주소를 찾지 못하는 경우 흔히 보는 404에러를 반환하게 됩니다.

IP주소를 찾는 과정

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

참조

AWS | amazon

DNS | Wikipedia

CoRilla | Tistory

cloudflare

0개의 댓글