[Network] DNS(Domain Name System)

jgoneit·2023년 3월 27일
0

Network

목록 보기
5/6
post-thumbnail

1. 도메인 네임(Domain Name)

  • 도메인 네임은 숫자 IP 주소로 매핑되는 텍스트 문자열
  • 클라이언트 소프트웨어에서 웹 사이트에 액세스 하는데 사용됨
  • 'google.com'이나 'naver.com' 처럼 특정 웹 사이트에 접속하기 위해 입력하는 텍스트

    💡 IP 주소: 컴퓨터 네트워크에서 장치들이 서로 인식하고 통신하기 위해서 사용하는 특수한 번호

    • IPv4: IP version 4로 0~255사이의 10진수 네개를 사용하며 .로 구별(192.0.2.1)
    • IPv6: IPv4에서 주소가 부족해짐에 따라 버전6에서는 주소길이가 32비트에서 128비트로 대폭 확장되었으며, 두 자리의 16진수 여덟개를 사용하고 :기호로 구분(00:00:00:00:00:00:00:00)

2. 도메인의 종류와 체계

1. 도메인의 종류

도메인은 gTLDccTLD이렇게 두 종류로 구분할 수 있습니다.

1. gTLD(generic Top Level Domain)

gTLD는 전세계에서 등록이 가능한 Top-Level 도메인이며, 종류는 아래와 같습니다.

gTLD의 종류

  • .com
  • .net
  • .org
  • .edu
  • .gov
  • .int
  • .mil
  • .biz
  • .name
  • .info

2. ccTLD(country code Top Level Domain)

ccTLD의 경우는 각 국가의 네트워크 정보센터에서 위임받아 관리하는 Top-Level 도메인으로 국가에서 관리하는 도메인으로 생각하시면 됩니다. 종류 예시는 아래와 같습니다.

  • .kr
  • .us
  • .jp

2. 도메인 네임의 체계


도메인은 트리 구조형태를 하고있습니다. 최상위에는 루트(root)가 위치하고 루트에는 ICANN 이라는 비영리 단체가 존재합니다. ICANN은 현재 4억개에 달하는 도메인을 관리하는 단체입니다.

바로 아래 단계에 최상위 도메인인 TLD(Top Level Domain)를 관리하는 기관들이 해당합니다. 최상위 도메인은 국가코드(ccTLD)일반코드(gTLD)로 나뉘며, 그 하위에 도메인 네임이나 기타 도메인 문자열이 존재합니다.

여기서 TLD 관리에 해당하는 레벨의 기관을 Registry로 부릅니다. Registry는 각 도메인 정보의 데이터베이스를 관리하는 역할을 수행합니다.

Registry 하위 단계의 Registar은 중개 등록업체로 registry의 데이터베이스에 직접 도메인 정보를 등록가능한 업체를 의미합니다.

3. DNS(Domain Name System)

네트워크 상에 존재하는 모든 PC들은 각각의 IP주소를 가지고 있습니다. 하지만 모든 웹 사이트의 IP주소를 다 암기할 수 없기 때문에 도메인 네임을 사용하게 되었습니다. 이 때 IP주소를 도메인 네임으로의 전환 혹은 그 반대의 역할을 수행하는 것이 DNS입니다.

  • DNS 서비스는 도메인 네임을 IP주소로 변환해 서버연결을 제어하는 역할
  • 222.122.195.6과같은 긴 숫자 IP 주소가 아닌 www.naver.com 과 같이 사람이 암기하기 편한 문자 주소로 웹 사이트를 탐색할 수 있도록 도와준다.

4. DNS Server

웹페이지를 로드하기 위해서 사람이 도메인 주소를 입력하게 되면 클라이언트는 IP주소를 찾아서 값을 반환해야합니다. 그러나 전 세계의 모든 IP주소를 한 개의 서버에서 유지/관리할 수 없습니다.

그래서 IP주소는 여러 대의 DNS서버에 나눠서 저장되어있습니다. 그렇기 때문에, 우리는 IP 주소를 찾기 위해 탐색하는 과정을 필요로 합니다.

5. DNS 서버의 종류

1. Local DNS(Resolver, Recursive DNS)

Local DNS는 Resolver혹은 Recursive DNS라고도 쓰이며 웹 브라우저 등의 애플리케이션을 통해 클라이언트 PC로부터 쿼리(Query)를 받아 DNS서버로 전달하고, 응답받은 정보를 클라이언트 PC로 반환하는 역할을 수행합니다.

또한 탐색한 IP주소를 탐색할 때마다 재탐색하면 비효율적이기 때문에, DNS 조회 초기에 응답받은 레코드를 일정기간(TTL, Time to Live) 캐싱하여 효율적으로 요청작업을 수행할 수 있도록 합니다.

2. Root DNS

Root DNS는 도메인 네임을 IP 주소로 변환하기 위한 첫 단계 입니다. TLD서버에 대한 주소정보를 가지고 있어서 request한 도메인 네임의 Top-Level 도메인을 인식하여 해당 TLD에 대한 정보를 가지고 있는 TLD DNS정보를 response해줍니다.

3. TLD DNS

도메인 네임 체계에서 최상위 도메인인 TLD 서버입니다. 각 TLD를 가지고 있는 하위의 도메인을 찾아 도메인 네임에 대한 직접적인 IP주소를 가지고 있는 Authoritative DNS에 대한 주소정보를 가지고 있습니다.

요청받은 도메인 네임에서 해당 TLD에 해당하는 도메인 중 해당 도메인네임에 대한 정보를 직접 가지고 있는 네임 서버 DNS정보를 응답합니다.

4. Authoritative DNS(Name Server DNS)

실제 도메인 네임과 IP주소의 관계가 저장되어 있는 서버입니다. 일반적으로 네임 서버(Name Server)라고도 불리며 Local DNS에서 요청한 쿼리의 종착점입니다.

요청한 레코드에 대한 액세스 권한이 있기 때문에, 요청한 IP 주소를 Local DNS에 응답하는 역할을 수행합니다.

6. DNS 작동 원리

  1. 클라이언트 PC에서 Local DNS에 'www.naver.com'이라는 hostname에 대한 IP주소를 요청.
  2. 'www.naver.com'에 관한 IP 주소가 캐싱되어 있다면 곧 바로 클라이언트 PC에 값을 반환하고, 캐싱되어있지 않다면 먼저 root DNS에게 'www.naver.com'에 대한 IP 주소를 아는지 요청
  3. root DNS는 'www.naver.com'에 대한 IP 주소를 모르기 때문에 TLD DNS인 COM DNS에게 물어보라고 응답
  4. com DNS는 '.com과 관련된 도메인'을 관리하는 서버다. 이제 Local DNS는 com DNS에게가서 IP주소를 요청
  5. com DNS 역시 IP주소를 모르기 때문에 name server DNS를 알려주며 여기에 가서 물어보라고 응답
  6. Local DNS는 'www.naver.com'을 직접 관리하는 name server DNS에 가서 'www.naver.com'에 관한 IP 주소 여부를 요청
  7. name server DNS는 'www.naver.com'도메인을 직접 관리하기 때문에 IP 주소를 보유하고 있고, 도메인 네임에 대한 IP 주소를 응답
  8. 응답받은 Local DNS는 'www.naver.com'에 대한 IP 주소를 캐싱하고 IP 주소를 클라이언트 PC에게 응답(반환)

    💡 이와 같이 Local DNS가 root DNS부터 차례대로 탐색 후 값을 도출하는 과정을 Recursive Query(재귀 쿼리)라고 함.

📚Reference

profile
BE to spring Developer

0개의 댓글