DNS 원리
우선 DNS란,
도메인 네임(hostname)을 IP 주소로 바꿔주는 시스템이다.
도메인 네임은 단순히 사람이 기억하기 쉽게 되어있기 때문에 그것만으로는 정확한 서버를 찾아갈 수 없다.
그래서 컴퓨터가 인식할 수 있는 주소인 IP 주소가 필요하다.
크게 1) Resolver 2) Root Nameserver 3) TLD Namesercer 4) authoritative Nameserver
로 나눌 수 있다.
1. DNS Resolver(Recursor)
클라이언트로부터 요청을 받는 서버이다.
이때 이미 처리한 적있어 캐시에 남아있는 주소에 대해서는 빠르게 처리한다.
2. Root Nameserver
도메인네임(hostname) 중에서 .com 등 뒤에 부분을 보고
해당 주소에 대해 알 것 같은 TLD nameserver의 주소를 알려준다.
3. TLD nameserver
TLD는
Top Level Domain, 최상위 도메인을 의미한다.
hostname의 마지막 부분(.com 등)을 호스팅한다.
최종적으로 해당 도메인네임의 ip를 알고있을 것 같은 authoritative nameserver의 주소를 알려준다.
4. Authoritative nameserver
해당 도메인네임의 IP주소를 가지고있는 서버이다.
만약 서브도메인이 있으면 authoritative nameserver가 한 단계 더 추가된다.
Lookup Process
- 유저가 example.com hostname을 요청한다.
- DNS resolver가 요청을 받고 Root server에서 요청한다.
- Root server는 Resolver에게 해당 도메인에 대한 정보를 가지고 있을 것 같은 TLD 서버를 알려준다.
- Resolver는 Root server가 알려준 TLD 서버에게 요청한다.
- TLD 서버는 hostname의 IP 주소를 알고있을 것 같은 Authoriative nameserver를 Resolver에 알려준다.
- Resolver는 알려준 Authoritative server에게 hostname의 IP주소를 요청한다.
- 해당 도메인의 nameserver는 resolver에게 IP주소를 알려준다.
- DNS resolver는 이 IP주소를 브라우저에게 응답한다.
- 브라우저는 도메인의 IP주소로 HTTP requenst를 만든다.
- 해당 IP 서버가 HTTP 요청에 대한 응답을 브라우저에게 전달한다.
왜 .com 과 같은 뒤에 부분이 Top Level일까요?
dot(.)을 기준으로 도메인네임의 문법은 트리구조를 갖고있다.
주로 가장 뒷부분의 유니크한 값의 개수가 작으며 트리 구조상 높은 레벨의 수가 적은 것이 좋다.
=> hostname : subdomain.domain.topleveldomain 형식이다.
Linux에서의 DNS Setting
리눅스에서 DNS resolver에 대한 설정은 /etc/resolv.conf 에서 할 수 있다.
우분투의 경우 DNS 설정은 systemd-resolved.service 를 사용해서 수정해야한다.
'Data Engineering > Server' 카테고리의 다른 글
GSLB - Route53으로 여러 라우팅정책 구현해보기 (0) | 2023.12.28 |
---|---|
AWS Route 53으로 DNS 사용해보기 (0) | 2023.12.28 |
Redis 여러 응용 방법 - Sliding window rate limiter, HyperLogLog (1) | 2023.12.28 |
CacheDB - Redis로 빠르게 데이터 불러오기 (1) | 2023.12.28 |