CS/네트워크

DNS (Domain Name System)

leah-only 2025. 2. 19. 16:01

DNS란?

Domain Name System의 약어

도메인 이름과 IP 주소를 매핑해주는 서버 또는 시스템

인터넷상에서 도메인 이름을 IP 주소로 변환 


DNS 서버

DNS 서버는 계층 형태로 분산된 DB

3가지 DNS 서버

루트 DNS 서버

  • TLD 서버의 IP 주소들을 제공

TLD (Top-Level-Domain, 최상위 레벨 도메인) DNS 서버

  • com, org, edu 등 상위 레벨 도메인 or kr, uk 등 모든 국가의 상위 레벨 도메인에 대한 서버 
  • 책임 DNS 서버에 대한 IP 주소를 제공

Authoritative (책임) DNS 서버

  • 조직 자체 DNS 서버
  • 조직의 명명된 호스트에 대한 IP 매핑에 권한있는 호스트 이름을 제공

DNS query

ISP(Internet Service Provider)의 DNS서버(DNS recursor)가 호스팅하고 있는 서버의 IP 주소를 찾기 위해 DNS query를 날린다.

 

'www.google.com' 주소에 대해 검색할 때, 

  1. DNS recursor가 루트 DNS 서버에 요청
  2. .com 도메인 TLD 서버로 redirect
  3. google.com 책임 DNS 서버로 redirect
  4. 최종적으로 DNS 기록에서 'www.google.com'에 매칭되는 IP 주소 찾기 
  5. 찾은 주소를 DNS recursor로 보냄

이런 과정에서 많은 질의 메시지가 필요

  질의 전송을 줄이기 위해 DNS 캐싱 사용


DNS 캐싱

DNS 서버가 DNS 응답을 받았을 때 local 메모리에 응답 정보를 저장 


웹 통신의 흐름 

ex) www.naver.com  입력 후 엔터 눌렀을 때부터 페이지가 렌더링되는 과정 

 

  1. 사용자가 브라우저에 URL(www.naver.com) 입력
  2. 브라우저는 캐싱된 DNS 기록(브라우저 캐시, OS 캐시, router 캐시, ISP 캐시)을 통해 해당 도메인 주소에 대응하는 IP 주소가 있는지 확인
  3. 요청한 URL이 캐시에 없는 경우, ISP의 DNS 서버가 www.naver.com을 호스팅하고 있는 서버의 IP 주소를 찾기 위해 DNS query를 보내 찾음
  4. 브라우저는 해당 URL에 해당하는 IP 주소를 찾아 해당 서버와 TCP 연결을 시도(3-way handshaking)
  5. TCP 연결 완료시 브라우저가 웹 서버에 HTTP request (GET 요청) 보냄
  6. WAS와 DB에서 우선 웹 페이지 작업 처리 
  7. WAS에서의 작업 처리 결과를 웹 서버로 전송
  8. 웹 서버는 브라우저에게 html 문서 결과를 응답
  9. 브라우저는 html 컨텐츠를 표시 

웹 서버

  • 정적인 컨텐츠 (HTML, CSS, IMAGE 등)를 요청받아 처리하여 제공하는 서버 
  • 동적인 컨텐츠 요청 받았을 때는 WAS에 요청 전달하고 WAS로부터 처리 결과 받아 client에 전달
  • ex) Apache Server, Ngnix 

WAS (Web Application Server)

  • 동적인 컨텐츠 (JSP, ASP, PHP 등)를 요청받아 처리하여 제공하는 서버 (+정적 리소스 제공 가능)
  • 웹 서버와 웹 컨테이너의 기능을 모두 포함
  • DB 서버와 함께 사용되어 데이터를 처리하고 관리
  • ex) Tomcat, Jeus, WebSphere
동적 컨텐츠
사용자의 요청에 따라 내용이 달라지는 컨텐츠

WAS가 필요한 이유?

웹 페이지는 정적 컨텐츠동적 컨텐츠를 모두 포함한다. 

웹 서버만으로는 동적 컨텐츠를 효율적으로 처리하기 어렵다. 

동적 컨텐츠를 찾아오려면 DB에서 데이터를 가져오고 비즈니스 로직에 따라 데이터를 가공하는 과정이 필요한데 이 작업을 웹 서버 혼자 처리하기에는 자원 부족 문제가 발생할 수 있다. 

WAS는 요청에 맞는 데이터를 DB에서 가져와 비즈니스 로직에 따라 처리하여 동적 컨텐츠를 생성함으로써 자원을 효율적으로 사용할 수 있다. 


CS 로드맵 : https://github.com/devSquad-study/2023-CS-Study

cs 질문 참고 : https://eunsun-zizone-zzang.tistory.com/35