728x90
🤔 DNS (Domain Name System)
- IP 주소와 도메인 주소를 이어주는 환경/시스템이다
- 도메인 주소란 IP 주소를 대신하여 사용하는 주소로, DNS를 이용하여 IP 와 도메인을 이어준다
- DNS 시스템 안에서 IP와 도메인 매칭 역할을 하는 서버를 DNS 서버 또는 네임서버 라고 한다
- 상위 기관에서 인증된 기관에게 도메인을 생성하거나 IP 주소로 변경할 수 있는 권한을 부여한다
- DNS는 계층 구조를 갖는 분산 데이터베이스 구조를 갖는다
- DNS 서버 통신은 기본적으로 UDP 방식인 DNS 프로토콜을 사용하며, 기본 포트로 53번을 사용한다
- 모든 IP의 루트 네임 서버는 비영리 단체인 ICANN이 관리하며, 루트 서버는 전 세계 모든 도메인을 기억한다
🤔 DNS 구성 요소
- 도메인 네임 스페이스(Domain Name Space)
- 네임 서버(Name Server) = 권한 있는 DNS 서버
- 리졸버(Resolver) = 권한 없는 DNS 서버
1. 도메인 네임 스페이스(Domain Name Space)
- 최상위에 루트 DNS 서버가 존재하고, 그 하위로 인터넷에 연결된 모든 노드가 연속해서 이어진 계층 구조로 구성되어 있다
- 도메인 이름 저장을 분산한 계층 구조이다
2. 네임 서버(Name Server) = DNS 서버
- 주소를 변환시키기 위해 도메인 네임 스페이스의 트리구조에 대한 정보가 필요한데, 해당 정보를 가지고 있는 서버이다
- 해당 도메인 이름의 IP 주소를 찾는다
- 데이터베이스(저장, 관리) 역할, 찾아주는 역할, 요청 처리 응답을 구현한다
- 마스터-슬레이브 구조를 갖는다 → 마스터 네임서버 - 보조 네임서버
💡 네임서버 구성
Root DNS 서버
- ICANN이 직접 관리하는 최고 레벨 서버
- 서버 IP 주소를 저장하고 안내하는 역할
Top-Level Domain(TLD) DNS 서버
- 도메인 등록 기관이 관리하는 서버
- Authoritative DNS 서버의 주소를 저장하고 안내하는 역할
Second-Level/Sub Domain(SLD) DNS 서버 (=Authoritative DNS 서버)
- TLD 하위에서 관리되는 서브 도메인
- 실제 개인 도메인과 IP 주소의 관계가 기록(저장, 변경)되는 서버
- 권한의 의미인 Authoritativce가 붙었고 일반적으로 도메인/호스팅 업체의 네임서버로, 개인 DNS 구축도 이에 해당된다
권한 없는 DNS 서버 (리졸버 서버, 리컬시브 서버, 리커서)
- DNS 서버는 도메인 네임 스페이스를 위한 권한 있는 DNS 서버와 권한이 없는 DNS 서버로 구분되는데, 위의 서버들은 권한이 있는 서버이다
- 권한이 있는 DNS 서버는 IP 주소와 도메인 이름을 매핑하고, 권한이 없는 DNS 서버는 질의를 통해 IP 주소를 알아내거나 캐시한다
3. 리졸버 (Resolver)
- DNS 클라이언트의 요청을 네임 서버로 전달하고 찾은 정보를 클라이언트에게 제공하는 기능을 수행한다
- 어떤 네임서버에서 찾아야 하는지, 이미 캐시되어 있는지 등 클라이언트에게 찾았을 경우 찾은 것을 전달하고, 못찾았을 경우 못찾았다고 전달한다
🤔 DNS 동작 순서
💡 DNS Query 란?
- DNS 클라이언트와 DNS 서버는 DNS 쿼리를 교환한다
- DNS 쿼리는 Recurisve(재귀적) 또는 Iterative(반복적)으로 구분된다
- 다음과 같은 방식으로 요청과 응답을 한다
Recursive Query (재귀적 질의)
- 응답 결과물(IP 주소)를 돌려주는 쿼리(작업)이다
- 결과적으로 Recursive 서버가 Recursive 쿼리를 웹 브라우저 등에게 돌려주는 역할을 한다
- Recursive 쿼리를 받은 Recursive 서버는 Iterative하게 권한 있는 네임 서버로 Iterative 쿼리를 보내서 결과적으로 IP 주소를 찾게 되고 해당 결과물을 응답한다
Iterative Query (반복적 질의)
- Recursive DNS 서버가 다른 DNS 서버에게 쿼리를 보내어 응답을 요청하는 작업이다
- Recursive 서버가 권한 있는 네임 서버들에게 반복적으로 쿼리를 보내서 결과물(IP 주소)을 알아낸다
- Recursive 서버에 이미 IP 주소가 캐시되어 있다면 이 과정은 생략한다
DNS 동작 순서 예시
예시 도메인 이름 : www.naver.com
- 웹 브라우저에 www.naver.com 을 입력하면, 먼저 Local DNS에게 www.naver.com 이라는 homename에 대한 IP 주소를 질의하고, Local DNS에 없으면 Root DNS 네임서버 정보를 받는다
- Root DNS 서버에 www.naver.com 을 질의하고, Root DNS 서버로부터 com 도메인을 관리하는 TLD(Top-Level Domain) 이름 서버 정보를 전달받는다
- TLD에 www.naver.com 을 질의하고, naver.com 을 관리하는 DNS(SLD) 정보를 전달한다
- www.naver.com 도메인을 관리하는 DNS 서버에 www.naver.com 호스트 네임에 대한 IP 주소를 질의한다
- Local DNS 서버에게 www.naver.com 에 대한 IP 주소인 222.122.195.6 을 응답한다
- Local DNS는 www.naver.com에 대한 IP 주소를 캐싱하고 IP 주소를 전달한다
참고)
https://github.com/InJun2/TIL/blob/main/CS-topic/network/DNS.md
GitHub - InJun2/TIL: todo-list
todo-list. Contribute to InJun2/TIL development by creating an account on GitHub.
github.com
DNS란? (도메인 네임 시스템 개념부터 작동 방식까지) - 하나몬
이 게시물의 중요 포인트 DNS(도메인 네임 시스템)이 사람이 읽을 수 있는 도메인 이름(www.hanamon.kr)을 IP 주소로 변환하는 시스템이라는 것은 쉽게 알 수 있습니다. 이번 글에서는 이렇게 도메인
hanamon.kr
+ 추가)
학습 페이지
www.inflearn.com
널널한 개발자님의 무료 강의를 통해서 어려운 DNS구조도 간단하게 이해하였습니다!
좋은 강의인거 같아 여기도 남기니까 이해가 어려우신 분들은 이를 보고 이해하시길 바라겠습니다! 야미 :)
728x90
'야미스터디 > Network' 카테고리의 다른 글
[Network] 로드밸런스 (0) | 2023.03.30 |
---|---|
[Network] IP, TCP/UDP, HTTP (0) | 2023.03.24 |
[Network] OSI L4 (0) | 2023.03.16 |
[Network] OSI 7계층 (0) | 2023.03.15 |
[Network] HTTP Status code 📌 (0) | 2022.11.19 |
댓글