본문 바로가기

CS 백엔드/네트워크

도메인과 DNS - 이론

1. Domain (도메인) 이란?

  • 도메인은 웹 브라우저를 통해 특정 사이트에 진입을 할 때, IP 주소를 대신하여 사용하는 주소이다. 정확히는 해당 도메인에 매핑되어있는 IP주소를 가져오는 것이라고 보면 된다.
  • 도메인을 사용하면 복잡한 IP주소보다 한눈에 파악하기 쉽다
  • 예를 들면 IP주소가 지번 또는 도로명 주소라면, 도메인 네임은 해당 주소에 위치한 상호 또는 건물명을 의미한다.

 

2. DNS (Domain Name System) 이란?

  • 네트워크 상에 존재하는 모든 PC는 IP주소를 가지고 있다.
  • 그러나 모든 IP가 도메인 네임을 가지고 있는 것은 아니다.
  • 로컬 PC의 127.0.0.1 IP 주소는 localhost 라는 도메인 네임을 사용할 수 있지만, 그 외의 모든 도메인 네임은 일정 기간동안 대여하여 사용한다.

 

3. DNS의 과정

위의 사진처럼 mo-rak(우테코 영상)나 우리가 흔히 아는 naver.com, google.com 이라는 사이트에 접속을 하려고 한다.

먼저, 브라우저에서 해당 URL을 입력을 합니다. 그러면 서버에서 페이지를 반환해줍니다.

서버는 페이지를 응답해주기 위해서는 IP 주소를 알아야 하는데 왜 도메인 네임을 브라우저에 입력했는데 서버는 IP주소로 인식을 하고 페이지를 반환해 줄까?
-> 여기서 DNS가 사용된 것이다.

이처럼 우리에게 익숙한 도메인 네임을 브라우저에 입력하면 DNS가 해당 도메인과 매핑되어있는 IP주소로 변환해서 IP에 맞는 서버에 페이지를 요청할 수 있게 되는 것이다.

 

 

4. DNS 간단한 동작 과정

 이제는 앞서 설명한 도메인 이름을 입력하면 DNS가 어떻게 처리해서 IP주소로 매핑되는지에 대한 과정을 설명할 것이다.

 

브라우저에 도메인 네임을 입력하면,
브라우저 캐시를 먼저 확인을 하고 IP주소가 캐시에 있으면 바로 페이지를 반환한다.
그게 아니라면 PC의 hosts 파일과 캐시를 확인을 하게 된다.
PC에서도 없으면 DNS 서버에 해당 도메인 네임의 IP를 요청하게 된다. DNS 서버는 해당 도메인 네임에 매칭되는 IP 주소를 PC에 응답하게 되는 과정이다.

여기서!
전 세계의 모든 도메인 네임과 IP를 하나의 DNS 서버에서 정보를 관리하는 것일까?
만약 하나의 DNS 서버가 관리하게 되면 과부하로 인해 서버가 터져버리게 될것이다,,,,,,,,,,

서버가 터져버리는 것을 예방하기 위해 DNS는 계층적으로 서버를 분리해서 관리한다.

 

 

5. DNS 계층 구조 및 동작 과정

DNS 서버를 분리해서 대규모 트래픽을 대응한다고 했는데, 그러면 분리된 DNS 서버의 계층 구조는 어떻게 될까?

테코톡에서는 mo-rak으로 설명되었는데,  여기서는 naver.com으로 하겠다.

[www.naver.com.]
<루트 도메인>
먼저 최상단 노드인 루트 도메인부터 시작하게 된다. 보통 루트 도메인은 도메인 네임의 가장 끝 부분인 ' . '으로 되어있는데 생략되는 경우가 많다.

<TLD 도메인>
루트 도메인을 거치고 트리는 오른쪽부터 왼쪽으로 탐색을 한다.
루트 도메인의 하위 노드인 Top-Level Domain은 도메인 네임에서 'com'가 해당된다. (사진에는 com말고도 다양함)

<서브 도메인>
서브 도메인에서는 'naver'과 'www'로 인식을 한다.
(서브 도메인 네임은 백엔드 개발을 하고 연습으로 배포를 할 때, IP주소를 보통 사용하지만 실제로 도메인을 구입해서 IP주소를 매핑해서 배포할 수도 있다. 가비아나 Route53이라는 사이트에서 우리가 직접 도메인을 구입할 수도 있으니 해보길 권장한다)

위의 순서대로 'www.naver.com' 도메인 네임이 DNS 서버에서는 여러 서버를 거친 과정을 통해 우리에게 네이버라는 페이지를 볼 수 있게 되는 것이다.

앞서 설명을 보충하면,
루트, TLD, 서브 도메인의 경우는 권한이 있는 네임서버 즉, IP 주소와 같은 정보가 있는 서버이고, 
로컬 DNS 서버는 권한이 없는 네임서버라고 한다. (통신사 SK, KT에 해당함)

브라우저에서 도메인 네임을 입력하면 로컬 DNS 서버의 캐시에서 IP주소를 확인하고, 없다면 루트, TLD, 서브 도메인을 거쳐서 IP주소를 요청하게 된다.

 

 

 

 

 

 

 

[참고]

https://www.youtube.com/watch?v=sDXcLyrn6gU&t=203s

'CS 백엔드 > 네트워크' 카테고리의 다른 글

[네트워크] 네트워크란 무엇인가?  (0) 2023.01.08
[네트워크] Cache  (0) 2022.11.09
Forward Proxy, Reverse Proxy  (0) 2022.10.25
HTTP/0.9, 1.0, HTTP/1.1, HTTP/2, 그리고 QUIC  (0) 2022.10.24
HTTP  (0) 2022.10.23