본문 바로가기
IT/네트워크

DNS의 모든것

by Ko2 2021. 9. 17.

1. DNS (Domain Name System)

네트워크에 연결되어있는 모든 호스트(서버, 컴퓨터)는 IP (ex. 127.0.0.1) 라는 주소를 가지고 있고,
사람은 IP 주소를 외우기 편한 문자열로 이루어진 도메인 (ex. example.com) 으로 바꿔서 쓴다.
DNS 는 도메인 이름과 IP 숫자간의 매핑을 관리하여 마치 전화번호부와 같은 기능을 한다.
DNS 서버는 사용자가 웹 브라우저에 도메인 이름을 입력했을 때, 이름에 대한 요청을 IP 주소로 변환하여 사용자를 어떤 서버에 연결할 것인지를 제어한다. 이러한 요청을 쿼리라고 부른다.


2. Domain Name Space (도메인 네임 스페이스)

DNS가 저장, 관리하는 계층적 구조를 의미한다.

통상적으로 도메인의 가장 끝에 있는 점(.) 은 생략된다.
이 점(.) 을 Root 도메인이라고 하며 가장 최상위 도메인이다.
최상위 도메인의 직속 하위 도메인을 Top-level 도메인이라고 부른다. (ex. com, net, co.kr)
Top-level 도메인의 직속 하위 도메인을 Second-level 도메인이라고 부른다.
Second-level 도메인의 직속 하위 도메인을 Sub 도메인이라고 부른다.
이럭한 각각의 도메인을 전담하는 독자적인 서버 컴퓨터가 존재한다.

2-1. URL과 도메인의 차이

URL (Uniform Resource Locator) 은 도메인을 포함한 경로이다.
사용자가 도메인 서버로 접속할 때, 프로토콜과 서비스 타입을 통합적으로 적어준 것이다.


3. Name Server (네임 서버)

문자열로 표현된 도메인 이름을 실제 컴퓨터가 통신할 떄 사용하는 숫자로 표현된 IP 주소로 변환시켜 주기 위해서는 도메인 네임 스페이스의 트리 구조에 대한 정보가 필요하다.
이러한 정보를 가지고 있는 서버를 네임 서버라 하며, 이러한 도메인 이름을 IP주소로 변환하는 것을 네임 서비스라고 한다.

Primary Name Server : 해당 도메인을 관리하는 주 네임 서버
Secondary Name Server : Primary Name Server가 고장 등의 이유로 동작하지 못하는 경우 이를 대신하여 네임 서버 역할을 수행하는 서버, 주기적으로 Primary Name Server로부터 정보를 받아온다.


4. Resolver (리졸버)

웹 브라우저와 같은 클라이언트의 요청을 네임 서버로 전달하고 네임 서버로부터 정보(도메인 이름과 IP 주소)를 받아 클라이언트에게 제공하는 기능을 수행한다.
하나의 네임 서버에 DNS 요청을 전달하고 해당 서버에 정보가 없으면 다른 네임 서버에 요청을 보내 정보를 받아온다.
수 많은 네임 서버에 접근하여 사용자로부터 요청 받은 도메인의 IP 정보를 조회하는 기능을 수행할 수 있어야 한다.


5. DNS 쿼리 과정

1. 웹 브라우저 (ex. chrome) 에 naver.com 을 입력

2. 컴퓨터의 hosts 파일에 naver.com 의 ip 주소 정보가 있는지 확인
hosts 파일 : ip 주소와 hostname 을 매칭시켜놓은 텍스트 파일이며, 해당 컴퓨터 안에서는 이 파일이 우선권을 갖음

  • hosts 파일 위치 : 
    • Windows : C:\Windows\System32\drivers\etc\hosts
    • Linux : /etc/hosts


3. hosts 파일에 없을 경우, 컴퓨터의 local DNS cache에 ip 주소가 있는지 확인
Local DNS Server는 ip를 찾기 위해 가장 먼저 찾는 곳

  • Local DNS 서버에 내가 찾는 도메인의 ip 주소가 캐싱되어 있다면 여기서 끝
  • Local DNS 서버에 ip 주소가 없다면, Root DNS 서버에 물어봄


4. DNS cache에 없을 경우, DNS 서버에 확인

도메인 네임에 대한 쿼리를 날렸을때 한 번에 ip 주소를 돌려줄 수 있는 네임서버는 없다.
각각의 레벨을 담당하는 네임서버가 있으며, 각 서버는 바로 하위 레벨 도메인에 대한 네임서버 주소 밖에 알지 못한다.
(Root Server는 Top-Level 의 정보, Top-Level 서버는 Second-Level 서버의 정보만 안다.)
따라서, DNS 요청이 들어오는 경우 Root 부터 시작해 단계적으로 ip 주소를 찾아간다.
(이렇게 여러 네임 서버를 거쳐 ip 주소를 찾는 과정을 Recursive Query 라고 한다.)


6. Nameserver 확인 방법

nslookup [호스트]

nslookup 명령어 : 특정 호스트에 대한 정보를 알아낼 수 있는 명령어

  • Non-authoritative answer (권한 없는 응답)
    • DNS 쿼리의 응답으로 ip주소를 무사히 받으면, Local DNS 서버는 해당 주소를 캐시에 저장한다.
    • Recursive Query를 거쳐 얻은 ip 주소는 Authoritative DNS Server에서 받는 정보
    • Local DNS Sever 에 캐시된 정보는 Non-Authoritative 정보

nslookup -type=ns [호스트]

Authoritative naverserver 가 어디인지 알고 싶을때 사용

nslookup [호스트] [nameserver]

위에서 알아낸 네임 서버를 뒤에 붙여주면 특정 네임 서버를 사용하여 조회 할 수 있다.


7. DNS 레코드

  • A (Address Mapping record)
    • 도메인의 IP 주소(IPv4)를 갖고 있는 레코드
  • AAAA (IP Version 6 Address record)
    • 도메인의 IP 주소(IPv6)를 갖고 있는 레코드
  • CNAME (Canonical Name)
    • 도메인 이름의 별칭을 저장하는 레코드
    • 하나의 도메인이나 하위 도메인을 다른 도메인으로 전달하며, IP 주소를 제공하지는 않는다.
    • 도메인을 외부 도메인으로 별칭을 지정하려는 경우 유용
  • NS (Name Server)
    • 도메인에 대한 공식적인 네임 서버를 갖고 있는 레코드
  • SOA (Start of Autority)
    • 기본 네임 서버, 도메인 관리자의 전자 메일, 도메인 일련 번호 및 영역 새로 고침과 관련된 여러 타이머를 포함하여 DNS 영역에 대한 핵심 정보를 저장하는 레코드
  • MX (Mail exchanger)
    • 도메인 이름에 대한 메일 교환 서버 정보를 갖고 있는 레코드
    • SMTP (Simple Mail Tranfer Protocol) 가 전자 메일을 적절한 호스트로 라우팅하는 데 사용한다.
  • PTR (Reverse-lookup Pointer record)
    • 정방향 DNS 확인 (A및 AAAA 레코드) 과 달리 IP 주소를 기반으로 도메인 이름을 찾는 데 사용되는 레코드


8. 도메인 위임

도메인의 규모가 커져 관리를 분산시키기 위해 하위도메인 (서브도메인)을 타 네임 서버로 위임하는것.
NS 레코드를 사용해 해당 도메인을 레퍼런싱 해주어야 한다.

예시) example.com 의 하위도메인인 test.example.com 도메인을 타 네임 서버로 위임하고 싶을때 아래와 같이 해당 도메인의 네임서버와 해당 네임서버의 IP 주소를 레코드로 등록해준다.
test.example.com NS ns1.test.example.com
ns1.test.example.com A 192.xxx.xxx.xxx



[ 참고링크 ]

https://lecor.tistory.com/78

DNS 쿼리 처리 과정

지금까지 DNS 에 대해 알고 있던 것 브라우저에 naver.com 쓰고 엔터치면 DNS 에서 naver.com의 ip 주소를 알려줄꺼고 거기로 가면 되지. (끝) 리액트 프로젝트를 하다가 그 유명한 CORS 문제를 겪었다. 임

lecor.tistory.com

https://opentutorials.org/course/3276/20303

도메인 이름의 구조 - 생활코딩

수업소개 이 수업에서는 도메인 이름의 구조에 대해서 알아봅니다.  강의 수업내용 스크린 샷

opentutorials.org

https://boojafactory.tistory.com/171

#07 도메인 이름의 구조

도메인 이름의 구조 DNS 서버의 역할 1. 서버로 사용되는 컴퓨터로부터 IP 주소와 도메인 이름을 제출받고 저장 (IP 등록 기능) 2. 클라이언트 컴퓨터로부터 요청받은 IP주소와 이름을 알려주는 것 (

boojafactory.tistory.com

https://www.beusable.net/blog/?p=4507

데이터 분석을 위한 기초, URL 이해하기 | 뷰저블

데이터 분석을 위한 URL

www.beusable.net

https://peemangit.tistory.com/52

DNS (Domain Name System)란?

1. DNS (Domain Name System) 1) DNS 등장 배경 인터넷 표준 프로토콜은 TCP/IP이다. TCP/IP 프로토콜을 사용하는 네트워크 안에서 Host들을 식별하기 위한 목적으로 IP 주소를 사용한다. 사람의 경우 숫자보다

peemangit.tistory.com

https://sybd.tistory.com/69

OS 별 hosts 파일 경로

1. Unix(유닉스), 리눅스(Linux) 계열 - /etc/hosts 2. Microsoft Windows - 95, 98/98SE, Me: %WinDir%\hosts - NT, 2000, and XP(32비트 버전), 2003, Vista, 7: %SystemRoot%\system32\drivers\etc\hosts - 64..

sybd.tistory.com

https://www.cloudflare.com/ko-kr/learning/dns/dns-records/
https://win100.tistory.com/360

DNS 레코드 타입 설명

DNS (Domain name Server)의 레코드 타입에는 몇가지 종류가 있다. A (Address Mapping records)  레코드 A는 주어진 호스트에 대한 IP 주소 (IPv4)를 알려줍니다. A 레코드는 도메인 이름을 해당하는 IP 주소로..

win100.tistory.com

반응형

댓글