DNS(Domain Name System)
Domain name -> IP 주소
로 변환
웹사이트에 접속 할 때 사용자는 외우기 어려운 IP 주소 대신 도메인 이름 사용
-> 사람이 읽을 수 있는 도메인 이름(www.~
)을 IP주소로 변환해 해당 IP 주소로 접속하는 시스템(과정)
- 상위 기관에서 인증된 기관에게 도메인을 생성하거나 IP 주소로 변경할 수 있는 권한 부여
DNS 구성요소
1. Domain Name Space
Domain Name Space는 DNS가 저장 관리하는 계층적 구조
를 의미
- 최상위에 루트 DNS 서버가 존재하고 그 하위로 인터넷에 연결된 모든 노드가 연속해서 이어진 계층 구조(폴더 구조와 비슷)
= 규칙(방법)으로 도메인 이름 저장을 분산
- 계층적 도메인 레벨
- Domain Name Space의 트리 구조는 최상위 레벨부터 순차적으로 계층적 소속 관계를 나타냄
-
하위 조직의 네임 스페이스를 할당하고 관리하는 방식은 각 하위 기관의 관리 책임자에게 위임
-
ex)
ttaehee.kr 도메인은 kr 도메인을 관리하는 Name Server에 등록되어있음
www.ttaehee.kr
을 만들기 위해서 가비아(kr 도메인을 관리하는 네임 서버의 하위기관)에 가서 도메인 레코드에 하위 도메인을 추가하면 됨
www.ttaehee.kr
은 ttaehee.kr을 관리하는 Name Server에 등록
blog.ttaehee.kr
을 생성하기 위해서는 ttaehee.kr 도메인을 관리하는 Name Server의 레코드만을 수정함으로써 가능
=> 이러한 위임 구조는 호스트의 증가에 대한 관리가 효율적으로 이루어짐 - AWS 같은 호스팅에서 가비아에서 구매한 도메인을 사용하려면?
AWS route53에 생성된 네임서버를 가비아 도메인에 추가해야함
(= 해당 도메인에 대한 IP 주소를 route53 네임서버에서 찾으라는 말)
route53에서는 해당 인스턴스나 버킷 등으로 연결되어있음
=> 가비아에서 해당 도메인에 대한 IP 주소찾기 요청이 왔을때, route53으로 돌려보내 route53과 연결된 인스턴스나 버킷을 통해 ip주소를 찾을 수 있음
Amazon Route 53이 도메인의 트래픽을 라우팅하는 방법
2. Name Server(= DNS Server)
(DNS 서버와 같은 말, 그런데 리졸버 서버 등 시스템 안에서 다른 역할을 하는 서버도 있어서 의미전달 위해 네임 서버)
도메인 이름(문자열) <-> IP(일련의 숫자)
의 상호변환 기능이 있는 서버
- 문자열로 표현된 도메인 이름을 실제 컴퓨터가 통신할 때 사용하는 IP 주소로 변환시키기 위해서는 Domain Name Space의 트리 구조에 대한 정보 필요, 이러한 정보를 가지고 있는 서버
- 데이터베이스 역할(저장, 관리), 찾아주는 역할, 요청 처리 응답 구현
- 해당 도메인 이름의 IP 주소를 찾음
권한 있는 DNS 서버
는 IP 주소와 도메인 이름을 매핑권한 없는 DNS 서버
는 질의를 통해 IP 주소를 알아내거나 캐시함
- DNS서버 종류
- Root DNS 서버 : ICANN이 직접 관리하는 절대 존엄 서버
- TLD DNS 서버 IP 주소를 저장하고 안내하는 역할
- 전 세계에 13개의 Root DNS 서버가 구축(패킷의 실질적인 크기 제한으로 인해 루트 DNS 서버 수를 13개 서버 주소로 제한하도록 결정)
- TLD(Top-Level Domain) DNS 서버 : 도메인 등록 기관이 관리하는 서버
- Authoritative DNS 서버의 주소를 저장하고 안내하는 역할
- 도메인 판매 업체(가비아 등)의 DNS 설정이 변경되면 도메인 등록기관으로 전달 -> 어떤 도메인이 어떤 판매업체에서 구매했는지 알수 있음
- SLD(Second-Level Domain) DNS 서버 (= Authoritative DNS 서버) : 실제 개인 도메인과 IP 주소의 관계가 기록(저장, 변경)되는 서버
- 일반적으로 도메인/호스팅 업체의 네임서버
- 개인 DNS 구축해도 이 경우
- 권한 없는 DNS 서버 (Resolver 서버, Recursive 서버, Recursor)
- Root DNS 서버 : ICANN이 직접 관리하는 절대 존엄 서버
=> 브라우저는 캐시가 저장된 Recursive 서버 사용
실제 Name Server를 설정하는 곳은 Authoritative 서버
3. Resolver
= Recursive DNS Server = Local Server(of ISP) = Recursor
권한없는 DNS 서버, 수많은 Name Server에 접근
하여 사용자로부터 요청 받은 도메인의 IP 정보를 조회
ex)
ISP(통신사) DNS : KT/LG/SK (대표적)
Public DNS 서버(구글 DNS, 클라우드플레어) : 브라우저 우회 용도로 많이 쓰임)
- 웹브라우저(DNS Client) 요청을 하나의 Name Server로 전달
- NS로부터 정보(도메인 이름과 IP 주소)를 받아
(NS에 정보가 없으면 Resolver가 다른 NS에게 요청을 보내 정보를 받아옴) - 클라이언트에게 제공
- 단말에 구현하는 것은 무리라 보통은 Resolver가 구현된 NS의 IP 주소만을 파악
- 스터브 리졸버(Stub Resolver)
- 수 많은 네임 서버의 구조를 파악할 필요없이 리졸버가 구현된 DNS 서버의 IP 주소만 파악
- 도메인에 대한 질의를 받은 스터브 리졸버는 설정된 DNS 서버로 DNS Query(질의)를 전달하고 DNS 서버로부터 최종 결과를 응답 받아 웹 브라우저로 전달하는 인터페이스 기능만을 수행
DNS 동작방식
-
Web browser : 이전에 방문한 적 있는지 확인(브라우저 캐시, OS캐시, 라우터 캐시 등)
없으면Web browser -> DNS Server(Local DNS)
: 도메인의 IP주소 요청
DNS Query, “www.ttaehee.kr
의 IP 주소 알려주세요!” -
Local DNS : 캐시 데이터가 있는지 확인
없으면Local DNS -> 최상위 기관에서 관리하는 DNS Server(Name Server(Root DNS))
: 요청
DNS Query, “.kr 이라는 도메인 있나요?” -
Root DNS -> Local DNS
: 응답
DNS Response, “한국 국가 도메인 입니다 kr 도메인을 관리하는 네임서버의 이름과 IP 주소를 알려드릴 테니 거기에 물어보세요” -
Local DNS -> .kr Namer Server
: 요청
DNS Query, “ttaehee.kr의 IP 주소를 알고 계신가요?” -
.kr NS -> Local DNS
: 응답
DNS Response, “네 가비아로 가세요” -
Local DNS -> 가비아 NS
: 요청
DNS Query, “ttaehee.kr의 IP 주소를 알고 계신가요?” -
가비아 NS -> Local DNS
: 응답
DNS Response, “12.345.678.900 으로 가세요!”
이 때, Local DNS는 해당 정보를 캐시로 기록 -
Local DNS -> Web browser
: 응답
DNS Response, “12.345.678.900 으로 가세요!”
DNS Query
DNS 클라이언트와 DNS 서버는 DNS 쿼리를 교환
Recursive Query(재귀적 질의)
결과물(IP주소)를 돌려주는 작업- Local DNS 서버가 여러 DNS 서버에 차례대로 (Root DNS 서버 -> com DNS 서버 -> naver.com DNS 서버) 요청하여 그 답을 찾는 과정
Iterative Query(반복적 질의)
다른 DNS 서버에게 쿼리를 보내어 응답을 요청하는 작업- Recursive 서버가 권한 있는 NS들에게 반복적으로 쿼리를 보내서 결과물(IP 주소)를 알아냄
- Recursive 서버에 이미 IP 주소가 캐시 되어있다면 이 과정은 건너뜀
=> Recursive 쿼리를 받은 Recursive 서버는
Iterative 하게 권한 있는 네임 서버로 Iterative 쿼리를 보내서
결과적으로 IP 주소를 찾게 되고 해당 결과물을 응답
Domain name
- kr : 각 국가별 사용을 위해 정의한 도메인으로 ISO 3166 [4]에서 정의하는 국가 코드에 기반함
- com : 기업과 같은 상용 조직을 위한 도메인
- edu : 교육 기관들을 위한 도메인
- net : 네트워크 서비스 제공자와 관련된 시스템을 위한 도메인
- org : 다른 TLD에 속하지 않는 비정부 단체를 위한 도메인
- int : 국제 협약에 의해 만들어짂 조직을 위한 도메인
- gov : 본래 정부 기관이나 단체를 위한 도메인이었으나, 현재 미국의 주 정부를 비롯한 연방 정부만 등록하도록 결정
- mil : 미국 국방성 관련 기관에서 사용하도록 정의한 도메인
- arpa : IP 주소를 도메인 이름으로 매핑하기 위해 사용되는 특수 도메인
Reference
https://hanamon.kr/dns%EB%9E%80-%EB%8F%84%EB%A9%94%EC%9D%B8-%EB%84%A4%EC%9E%84-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B0%9C%EB%85%90%EB%B6%80%ED%84%B0-%EC%9E%91%EB%8F%99-%EB%B0%A9%EC%8B%9D%EA%B9%8C%EC%A7%80/
https://ja-gamma.tistory.com/entry/DNS%EA%B0%9C%EB%85%90%EB%8F%99%EC%9E%91%EC%9B%90%EB%A6%AC
https://gentlysallim.com/dns%EB%9E%80-%EB%AD%90%EA%B3%A0-%EB%84%A4%EC%9E%84%EC%84%9C%EB%B2%84%EB%9E%80-%EB%AD%94%EC%A7%80-%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC/
https://velog.io/@wook2pp/%EA%B0%80%EB%B9%84%EC%95%84%EC%97%90%EC%84%9C-%EA%B5%AC%EB%A7%A4%ED%95%9C-%EB%8F%84%EB%A9%94%EC%9D%B8-Amazon-Route-53%EC%97%90%EC%84%9C-%ED%98%B8%EC%8A%A4%ED%8C%85%ED%95%98%EA%B8%B0