[Network] DNS

Bik_Kyun·2022년 4월 10일
0
post-thumbnail

1. DNS

Domain Name System
도메인 네임 시스템(Domain Name System, DNS)은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었다. 특정 컴퓨터(또는 네트워크로 연결된 임의의 장치)의 주소를 찾기 위해, 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 식별 번호(IP 주소)로 변환해 준다. 도메인 네임 시스템은 흔히 "전화번호부"에 비유된다. 인터넷 도메인 주소 체계로서 TCP/IP의 응용에서, www.example.com과 같은 주 컴퓨터의 도메인 이름을 192.168.1.0과 같은 IP 주소로 변환하고 라우팅 정보를 제공하는 분산형 데이터베이스 시스템이다. -wikipedia

  • 도메인 이름과 IP주소를 변환하는 역할
  • 문자로 구성된 도메인을 네트워크에서 찾아갈 수 있는 IP로 변환해주는 시스템
  • DNS를 운영하는 서버 : Name Server
  • Name Server는 모든 PC의 URL과 IP정보를 저장
  • 포트 번호는 53번 사용
  • 도메인의 총 관리는 ICANN이 관리한다.

🔧 DNS의 계층 구조

Domain Name Space : DNS가 저장, 관리하는 계층적 자료 구조

  • DNS는 전 세계 분산형 DB구조로 동작한다.
  • 최상위에 Root DNS서버(.)가 존재하고 그 밑으로 TLD, SLD, Sub Domain으로 구성되어 있다.
    각 층의 도메인들은 그 하위 도메인에 관한 정보를 관리하는 구조이다.
  • SubDomain.SLD.TLD

🔧 DNS의 구성 요소

Resource Record : 도메인에 대한 설정을 담당하는 zone파일에 등록하는 도메인의 타입

도메인 이름에 설정할 수 있는 데이터 타입들

  • A(Host) : 호스트와 IPv4주소를 매핑
    주소/호스트 레코드;
  • AAAA : 호스트와 IPv6주소를 매핑
    주소 레코드;
  • CNAME(Canonical Name) : 실제 호스트명의 별칭을 정의
    별칭 레코드;
  • MX(Mail eXchange) : 메일서버에 도착할 수 있는 라우팅 정보 제공
    메일 교환 레코드;
  • SRV(SeRVice) : 비슷한 TCP/IP 서비스를 제공하는 다수의 서버 위치 정보 제공
    서비스 위치 레코드;
  • SOA(Start Of Authority) : DNS영역의 메인DNS서버를 정의하고 영역의 변경사항을 기록하고 영역의 기본 TTL(Time To Live)값을 정의
    권한 시작 레코드;
  • NS(Name Server) : DNS 영역의 DNS서버의 목록
    네임 서버 레코드;

Resolver(Client S/W)

  • 클라이언트의 요청을 네임 서버로 전달 및 네임 서버로 부터 도메인 이름과 IP 주소를 받아 클라이언트에게 제공
  • Name Server에 요청했을 때, 해당 서버의 정보가 없으면 다른 네임 서버에게 요청을 보내 정보를 받아옴.

Name Server

  • 문자열로 표현된 도메인 이름을 IP 주소로 변환하기 위한 Domain Name Space의 데이터를 가지고 있는 서버
  • Resolver로 부터 요청받은 도메인 이름에 대한 IP정보를 다시 Resolver로 전달.

2. DNS의 질의 과정

✔️ 재귀적 질의


Recursive Queries

  • 질의된 도메인에 대해 즉각 응답하거나, 다른 서버에게 질의한 결과로 응답하거나, 찾고 있는 정보가 없다는 에러 메시지를 보내줌
  • 가장 단순한 DNS 쿼리 유형

  1. 웹 브라우저에 www.naver.com을 요청하면, 웹 브라우저 캐시에 www.naver.com에 대한 IP주소가 있는지 찾아봄. (캐시는 한번 가져온 값을 저장하고 있다가 일정 시간이 지나면 삭제함.)

  2. 캐시에 있으면 해당 IP정보로 요청하고, 없으면 다음 단계로 넘어감.

  3. hosts파일에 www.naver.com 정보가 있는지 검색함. (hosts 파일은 운영 체제가 호스트 이름을 IP 주소에 매핑할 때 사용하는 컴퓨터 파일이다. 이 hosts 파일은 플레인 텍스트 파일이며 전통적으로 hosts라는 이름을 사용한다.)

  4. hosts파일에 있으면 해당 IP정보로 요청하고, 없으면 다음 단계로 넘어감.

  5. Local DNS에 www.naver.com에 대해 물어봄.

  6. Local DNS에 www.naver.com의 정보가 없을 시, Root DNS에 물어봄.

  7. Root DNS에 캐싱되어 있다면 응답하고 그렇지 않으면 .com DNS 서버에 요청한다.

  8. .com DNS 서버에 캐싱되어있다면 응답하고 그렇지 않다면 naver.com DNS 서버에 요청한다.

✔️ 반복적 질의


Iterative Queries

  • 질의된 도메인에 대해 응답하거나, 아니면 이 작업을 할 수 있는 다른 DNS 서버에 클라이언트를 연결 시켜 주는 작업
  • 자신이 관리하지 않는 알 수 없는 질의에 대해 응답 가능한 네임서버 목록 전달
  • 결국, 클라이언트는 다수의 DNS 서버들에게 같은 질의를 반복할 수 있게됨

  1. 웹 브라우저에 www.naver.com을 요청하면, 웹 브라우저 캐시에 www.naver.com에 대한 IP주소가 있는지 찾아봄. (캐시는 한번 가져온 값을 저장하고 있다가 일정 시간이 지나면 삭제함.)

  2. 캐시에 있으면 해당 IP정보로 요청하고, 없으면 다음 단계로 넘어감.

  3. hosts파일에 www.naver.com 정보가 있는지 검색함. (hosts 파일은 운영 체제가 호스트 이름을 IP 주소에 매핑할 때 사용하는 컴퓨터 파일이다. 이 hosts 파일은 플레인 텍스트 파일이며 전통적으로 hosts라는 이름을 사용한다.)

  4. hosts파일에 있으면 해당 IP정보로 요청하고, 없으면 다음 단계로 넘어감.

  5. Local DNS에 www.naver.com에 대해 물어봄.

  6. Local DNS에 www.naver.com의 정보가 없을 시, Root DNS에 물어봄.

  7. Root DNS가 www.naver.com의 정보가 없다면, Local DNS에 .com DNS 정보를 제공함.

  8. Local DNS는 .com DNS에 www.naver.com에 대해 물어봄.

  9. .com DNS에 www.naver.com에 대한 정보가 없다면, Local DNS에 naver.com DNS 정보를 제공함.

  10. Local DNS는 naver.com DNS에 www.naver.com에 대해 물어봄.

  11. naver.com DNS는 Local DNS에 www.naver.com 도메인에 대한 IP정보를 제공함.

  12. Local DNS는 www.naver.com에 대한 캐시를 업데이트함.

  13. Local DNS는 웹 브라우저에게 www.naver.com 도메인에 대한 IP정보를 줌.

  14. 웹 브라우저는 www.naver.com에 대한 캐시를 업데이트함.

  15. 사용자는 웹 브라우저는 www.naver.com 도메인의 IP주소를 이용해 웹 사이트에 접속함.

여담

velog.io와 github.io는 영국령 인도양 지역의 인터넷 국가코드 최상위 도메인이다. io도메인을 쓰면 기존 .com, .net이 점유하고 있던 도메인들을 벗어나 새롭게 도메인을 확보할 수 있다고 한다. 개별국가 NIC가 관리하고 주로 회사들이 이용해서 비싸다고한다.

profile
비진

0개의 댓글