DNS 내용 정리

soo·2024년 2월 5일
0

Network

목록 보기
6/6
post-thumbnail

DNS란?

DNS는 Domain Name System으로, 도메인 주소(예: www.google.com)를 IP 주소(예: 127.0.0.1)로 변환하는 역할을 한다. 비유하자면 일종의 전화번호부로, 사람이 복잡한 IP 주소를 일일이 외우고 다니지 않아도 해당 웹 서비스의 도메인 이름만 입력해도 올바른 서버에 연결할 수 있도록 도와준다.
DNS는 '시스템'로써 도메인을 IP로 변환하는 과정 전체를 의미하기 때문에 여러 계층과 구성 요소로 이루어져 있으며, 전 세계적으로 분산된 서버 네트워크를 포함한다.

또한 서버 IP 변경에 쉽게 대처할 수 있으므로 네트워크 통신에서 DNS의 역할이 매우 중요하며, 특히 최근 클라우드 기반 인프라 구성이 많아지면서 인프라가 빈번히 변경되고, MSA(Micro Service Architecture) 기반의 서비스 설계가 많아지면서 다수의 API를 이용하다보니 사용자의 호출뿐만 아니라 서비스 간 API 호출이나 인터페이스가 많아져 DNS의 역할은 더 중요해지고 있다.

용어 정리
IP: 서버 실제 주소 (예: 127.0.0.1)
도메인: 사이트 이름 (예: www.example.com)
DNS: 도메인을 통해 실제 IP에 접속하는 프로세스 일체
DNS 서버: 사이트 이름의 IP를 가리켜주는 서버

참고
인터넷은 전 세계 컴퓨터 네트워크가 상호 연결되어 있는 거대한 네트워크입니다. 이 네트워크 상에서 각 장치(예: 웹 서버, 사용자의 컴퓨터)는 고유한 IP 주소를 가지고 있습니다. 이 IP 주소는 인터넷 상에서 데이터를 전송하고 받을 때 장치를 식별하는 데 사용됩니다. 즉, 웹 서비스를 이용하려면 해당 서비스가 호스팅되고 있는 서버의 IP 주소를 알아야만 데이터를 올바른 목적지로 보낼 수 있습니다.


특징

  • OSI 7 Layer에서 7 Layer(Application Layer, 응용 계층)에 해당하는 프로토콜
  • 데이터 프로토콜이 잘 동작하도록 도와주는 컨트롤 프로토콜. 통신에 직접 관여하지 않지만 처음 통신하거나 통신을 유지하는데 큰 역할을 함
  • Port
    - DNS는 속도가 중요하기 때문에 기본적으로 UDP/53를 사용
    - 특수한 경우(로드가 많은 경우)에는 TCP/53 사용
    • 데이터가 512 byte를 넘는 경우(예: 많은 수의 리소스 레코드가 포함된 경우) - UDP는 데이터 크기가 512 byte로 제한되기 때문
    • Zone Transfer(DNS 서버간 동기화를 위해 DNS Zone을 전송하는 경우) - 이 때는 속도보다 신뢰성이 중요하기 때문
  • 상위/하위 기관과 같은 '계층 구조'를 갖는 분산 데이터베이스 구조

DNS 구조와 명명 규칙

도메인은 역 계층 구조로 이루어져 수많은 인터넷 주소 중에서 원하는 주소를 효율적으로 찾아갈 수 있다. 역트리 구조로 최상위 루트부터 TLD(Top-Level Domain, 최상위 도메인), SLD(Second-Level Domain, 차상위 도메인), Third-Level Domain과 같이 하위 레벨로 주소를 단계적으로 찾아간다. 도메인 주소를 사용할 때 각 계층의 경계를 .으로 표시하고 뒤에서 앞으로 해석한다.

도메인과 URL
URL(Uniform resource Localator)은 도메인을 포함한 경로로, 사용자가 도메인 서버로 접속을 원할때 프로토콜 + 도메인 + 경로 등을 통합적으로 나타내는 주소이다.


DNS 구현 요소

  1. Domain Name Space: DNS가 관리하는 계층적 데이터 베이스(= 트리구조로 구성된 분산 데이터 베이스 ).
  2. Name Server: DNS에서 도메인 및 그 데이터에 관한 정보를 보유/관리하는 DNS 서버(또는 서버용 프로그램)
    • 기능: 도메인 정보의 저장 및 관리 + 변환 요청에 대한 응답 수행(DNS 질의에 대한 응답)
  3. Resolver:
    Resolver = Recursive DNS Server = Local Server(of ISP) = Recursor

DNS 서버 종류

모든 DNS 서버는 네가지 카테고리로 분류된다.

  • DNS 리커서(Recursor, 재귀확인자) - 리커서는 도서관의 어딘가에서 특정한 책을 찾아달라고 요청받는 사서로 생각할 수 있습니다. DNS 리커서는 웹 브라우저 등의 애플리케이션을 통해 클라이언트 컴퓨터로부터 쿼리를 받도록 고안된 서버입니다. 일반적으로, 리커서는 클라이언트의 DNS 쿼리를 충족시키기 위해 추가 요청을 수행합니다.
  • 루트 이름 서버 - 루트 서버는 사람이 읽을 수 있는 호스트 이름을 IP 주소로 변환(확인)하는 첫 번째 단계입니다. 도서관에서 책장 위치를 가리키는 색인으로 생각할 수 있으며, 일반적으로 다른 더욱 특정한 위치에 대한 참조로 사용됩니다.
  • TLD 이름 서버 - TLD(Top-Level Domain, 최상위 도메인) 서버는 도서관의 특정 책장으로 생각할 수 있습니다. 이 이름 서버는 특정 IP 주소 검색의 다음 단계이며 호스트 이름의 마지막 부분을 호스팅합니다(example.com에서 TLD 서버는 “com”입니다).
  • 권한 있는 이름 서버(Authorative Name Server) - 최종 이름 서버로서, 책장에 있는 사전처럼 특정 이름을 해당 정의로 변환합니다. 권한있는 이름 서버는 이름 서버 쿼리의 종착점입니다. 권한있는 이름 서버가 요청한 레코드에 대한 액세스 권한이 있다면, 요청한 호스트 이름의 IP 주소를 초기 요청을 한 DNS 리커서(사서)에게 돌려 보냅니다.

DNS 동작 과정

DNS 조회 단계


0. 사용자의 도메인 입력 -> 브라우저 캐시 확인(DNS 쿼리) -> OS 캐시 확인(systemcall) -> 라우터 캐시 확인 -> ISP(Internet Service Provider, 인터넷 서비스 제공자) 캐시 확인

(캐싱된 정보가 없는 경우, 아래 단계 진행)
1. 쿼리가 인터넷으로 이동 -> DNS 재귀 확인자에서 수신
2. 확인자가 DNS 루트 이름 서버(.)를 쿼리
3. 루트 서버가 TLD DNS 서버(예: .com, .net) 주소로 확인자에 응답.
4. 확인자가 .com TLD에 요청
5. TLD 서버가 도메인 이름 서버의 IP 주소로 응답
6. 재귀 확인자가 도메인 이름 서버로 쿼리 전송
7. IP 주소가 이름 서버에서 확인자에게 반환
8. DNS 확인자가 처음 요청한 도메인의 IP 주소로 웹 브라우저에 응답

(IP 주소가 반환되면, 브라우저가 웹 페이지를 요청할 수 있음.)
9. 브라우저가 IP 주소로 HTTP, HTTPS 요청 전송 -> 해당 IP의 서버에서 렌더링할 웹 페이지 반환


레코드

가장 일반적인 DNS 레코드 유형

  • A 레코드 - 도메인의 IP 주소를 갖고 있는 레코드. A 레코드에 대해 자세히 알아보세요.
  • AAAA 레코드 - 도메인의 IPv6 주소를 포함하는 레코드(IPv4 주소를 나열하는 A 레코드와 반대).AAAA 레코드에 대해 자세히 알아보세요.
  • CNAME 레코드 - 하나의 도메인이나 하위 도메인을 다른 도메인으로 전달하며, IP 주소를 제공하지는 않습니다. CNAME 레코드에 대해 자세히 알아보세요.
  • MX 레코드 - 이메일을 이메일 서버로 전송합니다. MX 레코드에 대해 자세히 알아보세요.
  • TXT 레코드 - 관리자가 레코드에 텍스트 메모를 저장할 수 있습니다.이 레코드는 종종 이메일 보안에 사용됩니다.TXT 레코드에 대해 자세히 알아보세요.
  • NS 레코드 - DNS 항목의 이름 서버를 저장합니다. NS 레코드에 대해 자세히 알아보세요.
  • SOA 레코드 - 도메인에 대한 관리자 정보를 저장합니다. SOA 레코드에 대해 자세히 알아보세요.
  • SRV 레코드 - 특정 서비스에 대한 포트를 지정합니다. SRV 레코드에 대해 자세히 알아보세요.
  • PTR 레코드 - 리버스 조회에서 도메인 이름을 제공합니다. PTR 레코드에 대해 자세히 알아보세요.

CDN과 GSLB

CDN (Content Delivery Network)

  • 정의: 데이터 사용량이 많은 애플리케이션의 웹 페이지 로드 속도를 높이는 상호 연결된 서버 네트워크(지리적으로 분산된 여러 개의 서버).
    전 세계에 분산된 서버 네트워크를 통해 컨텐츠를 사용자에게 빠르게 전달하는 시스템으로써, 컨텐츠를 사용자에게 물리적으로 가까운 서버에서 제공함으로써 로딩 시간을 줄이고 성능을 향상시킨다.
  • 장점
    - 성능 향상: 컨텐츠 캐싱을 통해 렌더링, 버퍼링 시간 단축 -> 사용자에게 고품질의 빠른 웹 경험 제공 가능
    • 가용성 보장: 분산되어 있기 때문에 하나의 서버에 장애가 발생해도 컨텐츠 제공이 가능함
    • 보안성 강화: DDoS 완화, 보안 인증 개선 등
    • 대역폭 비용 절감: 사용자와 더 가까운 서버에서 컨텐츠를 전송함으로써 대역폭 소비와 관련 비용 절감 가능

GSLB (Global Server Load Balancing)

  • 정의: 트래픽을 전 세계에 걸쳐 분산된 서버에 배포하는 방식. 사용자의 위치 뿐만 아니라 서버의 상태, 네트워크 지연 등 다양한 요소를 고려해 최적의 서버로 사용자의 요청을 라우팅한다.
  • 특징: CDN이 컨텐츠 전송에 최적화 되어있다면, GSLB는 글로벌 트래픽 관리와 라우팅에 초점을 맞추고 있다.
profile
이것저것 공부하는

0개의 댓글