[혼자 공부하는 네트워크] 5-1 DNS와 자원

술술·2024년 9월 9일
0

도메인 네임과 네임 서버

  • 일반적으로 사용자는 상대 호스트를 특정하기 위해 IP 주소보다는 도메인 네임을 많이 사용
  • 도메인 네임(domain name): 호스트의 IP 주소와 대응되는 문자열 형태의 호스트 특정 정보
    • 전체 주소 도메인 네임(FQDN: Fully-Qualified Domain Name) - www.google.com
    • 도메인 네임과 IP 주소는 네임 서버에서 관리
  • 도메인 네임을 네임 서버에 질의하면 해당 도메인 네임에 대한 IP 주소를 알려주는 방식
  • 도메인 네임은 IP 주소에 비해 기억하기 쉽고, 바뀐 IP 주소에 도메인 네임을 다시 대응하면 되므로 IP 주소만으로 호스트를 특정하는 것보다 더 간편

  • DNS(Domain Name System): 도메인 네임 관리 체계, 도메인 네임 시스템을 이용할 수 있도록 하는 애플리케이션 계층 프로토콜을 의미하기도 함
    • DNS 서버: 도메인 네임을 관리하는 네임 서버
  • 네임 서버는 호스트의 도메인 네임과 IP 주소를 모아 관리하는 공용 전화번호부와 같은 역할
    • 여러 개 존재하며 전 세계 여러 군데 위치

  • 도메인 네임은 점(.)을 기준으로 계층적으로 분류
    • 최상단에 루트 도메인: .
    • 그 다음 단계인 최상위 도메인(TLD, Top-Level Domain): com
    • 2단계 도메인(최상위 도메인의 하부 도메인): example
    • 호스트 네임: FQDN의 첫 번째 부분(www), FQDN 자체, 네트워크상의 장치 자체의 이름
    • 계속 그 다음 단계의 도메인이 있는 식, 일반적으로 3~5단계 정도
  • 계층적인 도메인 네임을 효율적으로 관리하기 위해 네임 서버 또한 계층적 형태




계층적 네임 서버

  • 도메인 네임을 풀이 한다, 리졸빙한다: IP 주소를 모르는 상태에서 도메인 네임에 대응되는 IP 주소를 알아내는 과정
  • 중요한 역할을 담당하는 네임 서버의 유형
    • 로컬 네임 서버, 루트 네임 서버, TLD(최상위 도메인) 서버, 책임 네임 서버
  • 로컬 네임 서버

    • 클라이언트와 맞닿아 있는 네임 서버
    • 클라이언트가 도메인 네임을 통해 IP 주소를 알아내고자 할 때 가장 먼저 찾게 되는 네임 서버
    • 로컬 네임 서버의 주소는 일반적으로 ISP에서 할당해 주는 경우가 많다
    • 공개 DNS 서버를 이용할 수도 있다
      • 구글의 8.8.8.8, 8.8.4.4와 클라우드 플레어의 1.1.1.1
  • 루트 네임 서버

    • 로컬 네임 서버가 대응되는 IP 주소를 모를 때 질의
    • 루트 도메인을 관장하는 네임 서버로 질의에 대해 TLD 네임 서버의 IP 주소를 반환할 수 있음
  • TLD 네임 서버

    • TLD를 관리하는 네임 서버
    • TLD의 하위 도메인 네임을 관리하는 네임 서버 주소 반환
    • 하위 도메인 네임을 관리하는 네임 서버는 마찬가지로 그보다 하위 도메인 네임을 관리하는 네임 서버 주소 반환할 수 있음
  • 책임 네임 서버(authoritative name server)

    • 특정 도메인 영역을 관리하는 네임 서버
    • 자신이 관리하는 도메인 영역의 질의에 대해서 다른 네임 서버에게 떠넘기지 않고 곧바로 답할 수 있는 네임 서버
    • 로컬 네임 서버가 마지막으로 질의하는 네임 서버
    • 일반적으로 책임 네임 서버로부터 원하는 IP 주소 얻어냄


IP 주소를 알아내는 과정

  • 로컬 네임 서버가 네임 서버들에게 질의하는 방법에는 재귀적 질의반복적 질의가 있다.

  • 재귀적 질의
    • 클라이언트가 로컬 네임 서버에게 도메인 네임을 질의 → 루트 네임 서버 → TLD 네임 서버 → 다음 단계에 질의
    • 이 과정을 반복하며 최종 응답 결과를 역순으로 전달받는 방법

  • 반복적 질의
    • 클라이언트가 로컬 네임 서버에게 도메인 네임을 질의 → 루트 도메인 서버에 질의해서 다음으로 질의할 네임 서버의 주소를 응답 받음 → TLD 네임 서버에 질의해서 다음으로 질의할 네임 서버의 주소를 응답 받음
    • 이 과정을 반복하다가 최종 응답 결과를 클라이언트에게 알려 주는 방식

  • 지금까지 설명한 방법은 시간이 오래 걸리고 네트워크 상의 메시지 수가 지나치게 늘어날 수 있는 문제가 있다
  • DNS 캐시
    • 실제로는 네임 서버들이 기존에 응답받은 결과를 임시로 저장했다가 추후 같은 질의에 이를 활용
    • DNS 캐시를 저장하는 용도로만 사용되는 서버도 있음
    • 더 짧은 시간 안에 원하는 IP 주소 얻어낼 수 있다
    • 영원히 남아있는 것 아님
      • 임시 저장된 값은 TTL(Time To Live)이라는 값과 함께 저장되는데, 이 값은 캐시될 수 있는 시간을 뜻함
      • IP 패킷의 TTL과 다르다




자원을 식별하는 URI

  • 자원을 식별할 수 있는 정보, 자원을 식별하는 통일된 방식 URI(Uniform Resource Identifier)
  • 자원(resource): 네트워크 상의 메시지를 통해 주고받는 대상
    • 두 호스트가 네트워크를 통해 서로 정보를 주고받을 때 송수신하는 대상
  • URI를 식별 정보 기준으로 분류한 개념인 URL, URN
    • 위치를 이용해 자원을 식별하는 URL(Uniform Resource Locator)
    • 이름을 이용해 자원을 식별하는 URN(Uniform Resource Name)


URL

1. scheme

  • URL의 첫 부분
  • 자원에 접근하는 방법
  • 일반적으로 사용할 프로토콜이 명시
    • http://, https://

2. authority

  • 호스트를 특정할 수 있는 정보가 명시
    • IP 주소 혹은 도메인 네임
    • 콜론 뒤에 포트 번호를 덧붙일 수도 있음

3. path

  • 자원이 위치한 경로
  • 슬래시(/)를 기준으로 계층적으로 표현

4. query

  • HTTP는 요청-응답 기반의 프로토콜
    • 클라이언트는 서버에게 URI(URL)가 포함된 HTTP 요청 메시지를 보내고, HTTP 서버는 이에 대해 HTTP 응답 메시지를 보냄
    • 쿼리 문자열, 쿼리 파라미터
      • 물음표(?)로 시작되는 <키=값> 형태
      • 앰퍼샌드(&)를 사용하려 여러 쿼리 문자열을 연결
      • 개발자가 설계하기 나름

5. fragment

  • 자원의 한 조각을 가리키기 위한 정보
  • 흔히 HTML 파일과 같은 자원에서 특정 부분을 가리키기 위해 사용


URN

  • 자원에 고유한 이름을 붙이는 이름 기반 식별자
  • 자원의 위치와 무관하게 자원을 식별할 수 있다는 장점
  • 예시
    • ISBN이 0451450523인 도서를 나타냄
      • urn:isbn:0451450523
profile
Hello

0개의 댓글

관련 채용 정보