DNS가 어떤 역할을 하는지는 잘 알고있지만 그의 내부 구조와 자세한 동작방식에 대해서는 암기가 어렵고 습득이 느려서 정리해보고자함
DNS의 기본 개념을 바탕으로, DNS의 내부 구조와 동작 방식을 더욱 깊이 탐구할 예정으로 기초 개념이 익숙하지 않다면 먼저 이해하고 넘어가는 것이 좋음
이 글에서는 기초개념은 간단하게 설명하고 지나가고자 함
DNS(Domain Name System)는 인터넷에서 사람이 이해하기 쉬운 도메인 이름(예:
example.com
)을 컴퓨터가 이해할 수 있는 IP 주소(예:192.0.2.1
또는2001:db8::1
)로 변환하는 시스템임.
example.com
입력.
) → 최상위 도메인(TLD) 네임서버(.com
) → 도메인 네임서버(example.com
)Recursive 서버는 일반적으로 반복적으로(Recursively) DNS 쿼리를 수행한 후 응답을 캐싱하여 빠르게 제공하기 때문에 캐시 서버(Cache Server)로도 불림
자신의 캐시 데이터를 조회한 후 데이터가 있으면 사용자 호스트로 결과를 반환함
만약 데이터가 없으면, 사용자 호스트를 대신해 최상위 Root 네임서버부터 시작해 도메인의 권한 있는 네임서버까지 재귀적 질의(Recursive Query) 를 수행한 후 그 결과를 반환함
Authoritative 서버는 관리하는/위임 받은 도메인을 가지고 있는 네임서버로 특정 도메인에 대한 정보를 관리하면서 해당 도메인에 대한 질의에만 응답해주는 네임서버
계층 구조에 따라, 권한 있는 네임서버는 자신이 관리하는 도메인의 정보를 직접 제공하거나, 하위 네임서버로 질의를 위임하여 사용자가 최종적으로 원하는 DNS 정보를 얻을 수 있도록 안내함
네임서버가 관리하는 도메인 영역을 존(Zone)
이라 하고 관리 도메인에 대한 정보를 담고 있는 파일을 존 파일(Zone File)
이라 함
네임서버는 존 파일을 읽어, 존 데이터를 구정하고 이를 이용하여 질의에 응답함
DNS의 Zone
DNS는 사용자가 입력한 도메인명을 IP 주소로 변환하기 위해 여러 단계의 질의(Query) 과정을 거침
DNS 질의는 운영체제의 내부 캐시부터 시작하여, 최종적으로 네임서버까지 조회하는 방식으로 진행됨
로컬 DNS 캐시 확인
hosts 파일 조회 (/etc/hosts
or C:\Windows\System32\drivers\etc\hosts
)
기본 네임서버(Default Name Server, Recursive DNS) 질의
DNS 질의 방식에는 재귀적 질의(Recursive Query) 와 반복적 질의(Iterative Query) 가 있음.
🚀 결론
일반적인 사용자의 DNS 요청은 Recursive Query로 시작하여, 내부적으로 Iterative Query를 수행하는 방식임.
example.com
에 접속 .
)가 TLD 네임서버로 안내 example.com
의 .com
을 관리하는 TLD(Top-Level Domain) 네임서버 정보 반환 example.com
을 관리하는 최종 네임서버 정보 반환