Quick Flow
text
application
-> local hosts / cache
-> recursive resolver
-> root referral
-> TLD referral
-> authoritative answer
-> cached result with TTL실제 요청마다 모든 단계를 다시 순회하지는 않습니다. OS, runtime, browser, recursive resolver의 cache가 유효한 응답을 재사용할 수 있습니다.
Record와 별칭
A와 AAAA는 IPv4·IPv6 주소를, CNAME은 다른 canonical name을 가리킵니다. MX, TXT, SRV처럼 목적이 다른 record도 있으므로 DNS를 도메인에서 IP 하나를 얻는 시스템으로만 보지 않습니다.
TTL은 cache가 record를 재사용할 수 있는 기간의 기준입니다. TTL을 낮춰도 이미 cache된 값이 즉시 사라지지는 않으며 client와 resolver 정책이 추가로 작용할 수 있습니다.
실패 구분
이름이 존재하지 않는 NXDOMAIN, 이름은 있지만 요청 record가 없는 응답, resolver timeout, DNSSEC validation 실패를 구분합니다. DNS 성공 뒤에도 해당 IP의 port와 application이 정상이라는 보장은 없습니다.
자주 틀리는 점
- DNS propagation을 중앙 서버의 즉시 복제 하나로 설명하지 않습니다. Cache 만료가 핵심입니다.
- 한 hostname이 주소 하나만 반환한다고 가정하지 않습니다.
- 응답 순서를 고정 server 우선순위로 사용하지 않습니다.
- DNS는 기본적으로 application 인증이나 payload 암호화를 대신하지 않습니다.
참고 링크
3 sources