본문 바로가기
  • 시 쓰는 개발자
1일 1개념정리 (24년 8월~)/네트워크, 클라우드

1일1개 (73) - 기사님 시청역으로 가주세요 (가는 길은 모름)

by poetDeveloper 2024. 11. 6.
반응형

1일 1개념정리 24.08.09.금 ~ 

 

큰 결정에 큰 동기가 따르지 않을 때도 있다. 하지만 큰 결심이 따라야 이뤄낼 수 있다.

무조건 무조건 1일 1개의 개념 정리하기 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!


#73. DNS 서버

DNS 서버는 도메인 이름을 IP 주소로 변환해주는 시스템이다. 우리가 ip주소를 모르고 tistory.com 이라고만 쳐도 연결이 되도록 매핑해주는 시스템이라고 보면 된다. 오늘은 DNS 서버에 대해서 알아봅시다.

 

DNS 서버

일단 원론적인 이야기에 앞서, 재밌는 것 부터 해보자. 우리는 google.com 이라고만 쳐도 ip주소 없이 연결되는 것을 안다. 그럼 반대로, ip주소를 직접 쳐도 구글이 연결될까 ??

 

이를 알아보기 위해, cmd에서 다음 명령어로 구글의 ip 주소를 알아내보자.

nslookup google.com

 

그리고 여기서 얻은 주소를 직접 구글에 쳐보자 !! 여담으로, 한두번정도 ip주소만 쳐서 들어가진 것으로 봤는데, 재현해보니 안되더라 .... 뭐가 잘 되고 안되는 건지 모르겠어서 영상도 찍어보려 했는데 재현 실패했다. 결과적으로 아래처럼 페이지는 작동되지 않았다.

 

문제를 찾아보니 여러 원인이 있을 수 있다 한다.

  1. 도메인 기반 라우팅 : 구글처럼 대형 사이트는 수많은 서버에서 도메인을 관리하므로, 단순히 IP 주소만 입력하면 서버는 google.com의 요청인지 알 수 없고 올바른 페이지를 로드하지 못할 수 있다 한다.
  2. 부하 분산 장치와 캐시 서버 : 특정 ip로 직접 접근하면 구글의 로드밸런싱을 무시하고 접근하는 것이므로 비정상 페이지로 인지하고 페이지 로딩이 안될 수 있다.
  3. HTTPS와 HTTP 리디렉션 설정 : 정상 접근이라면 https로 접근할텐데, ip 주소로 접근하면 HTTP로 연결 시도해서 올바른 인증서가 제공되지 못해 오류가 발생할 수 있다.

 

DNS 서버의 작동 방식

이제 좀 이론적인 이야기를 해보자. 우리가 google.com을 쳤을 때 어떤 redirection이 이루어져서 ip 주소를 받아올 수 있는 것일까 ?? 다음 흐름을 살펴보자.

  1. 사용자 요청 : 사용자가 브라우저에 google.com 입력
  2. 로컬 DNS 캐시 확인 : 먼저 캐시된 ip 주소 목록에 있는지 확인해본다. 해당 주소를 자주 접근하면 캐시로 들고있을 테니 먼저 확인해보고, 여기 있으면 바로 연결이 되고, 없으면 다음 단계로 넘어간다. 
  3. DNS 계층 구조 탐색 (재귀 DNS 서버) : 도메인 이름에 대한 IP 주소를 찾기 위해 여러 서버에 문의한다. 이는 계층적으로 탐색하게 되는데, 그것은 아래와 같다.
    1. Root DNS 서버 : 먼저 root DNS 서버에 요청을 보낸다. 루트 서버는 전 세계에 분산되어 있고 최상위 도메인(= TLD, Top Level Domain) 서버 위치를 제공한다.
    2. TLD 서버 : 루트 서버에서 받은 정보를 기반으로 TLD 서버(ex   .com 서버)에 요청을 보낸다. 이 서버는 해당 도메인의 IP 주소를 제공할 수 있는 권한이 있는 DNS 서버의 위치를 알려준다.
    3. 권한 있는 네임 서버 : TLD 서버에서 알려준 권한 있는 네임 서버에 최종적으로 요청을 보내어, 원하는 도메인에 대한 정확한 IP 주소를 받아온다.
  4. IP 주소 반환 및 연결 : 위와같은 재귀로 IP주소를 받아서 사용자에게 반환한다. 이제 사용자는 해당 IP 주소로 웹사이트에 접근할 수 있다.
  5. DNS 캐시 저장 : 요청한 IP 주소는 일정 시간 동안 사용자의 로컬 컴퓨터와 ISP의 재귀 DNS 서버에 캐시된다. 이후 동일한 도메인에 접속할 때 더 빠르게 처리할 수 있다.

 

DNS 서버의 유형

위에서 설명한 여러 DNS 서버의 유형을 살짝 정리해보자.

  1. 재귀 DNS 서버 : 사용자가 요청한 도메인 이름의 IP 주소를 찾기 위해 여러 DNS 서버와 소통하는 역할이다. 즉, 사용자가 www.google.com 가는 ip주소 찾아주세요! 하면 그것을 찾아서 반환해주는 바쁜 역할이다. ISP나 공용 DNS 서버(Google의 8.8.8.8 등)가 이에 해당한다.
  2. 권한 있는 DNS 서버 : 특정 도메인에 대한 최종 IP 주소 정보를 가지고 있으며, 해당 도메인의 IP 주소를 정확하게 반환한다. 도메인 소유자가 설정한 서버를 의미함.
  3. 루트 DNS 서버 : 인터넷 최상위에 위치한 서버로, 전 세계에 13개 루트 서버 그룹이 존재. 각 루트 서버는 최상위 도메인 서버(TLD 서버)로의 연결 정보를 제공함.
  4. TLD 서버 : .com, .org, .net 등 특정 최상위 도메인에 대한 정보(ex. 홈페이지의 맨 오른쪽 글자)를 가지고 있으며, 해당 TLD에 속한 도메인에 대한 권한 있는 네임 서버를 연결해줌.

 

DNS 서버의 역할

  • 도메인 이름 해석 : 사람이 사용하는 도메인 이름을(google.com) 컴퓨터가 이해할 수 있는 IP 주소로 변환함. (어쩌면 이게 메인 역할)
  • 인터넷 성능 향상 : DNS 서버는 캐시를 통해 도메인 이름을 바로 불러와 접속을 빠르게 한다.
  • 보안 기능 : DNS는 보안이 중요해서 DNSSEC같은 인증 시스템으로 DNS 응답의 무결성을 확인할 수 있다.
반응형