✅ DNS(Domain Name System Servers)란?
: 도메인 이름을 IP 주소로 변환하거나 그 반대의 역할을 해주는 시스템
사용자가 웹사이트에 접근할 때, 기억하기 쉬운 도메인 이름(예: http://www.google.com)을 입력하면 DNS가 이 이름을 해당하는 IP 주소로 변환하여 웹사이트에 연결할 수 있도록 도와준다. DNS는 인터넷의 전화번호부와 같은 역할을 한다.
도메인 이름(Domain Name): 네트워크 상에서 컴퓨터를 식별하는 이름으로, IP 주소에 대응된다.
DNS 질의는 주로 UDP(User Datagram Protocol)를 사용한다.
- 속도: UDP는 연결을 설정하지 않고 데이터를 전송하기 때문에 더 빠르다.
- 간단한 요청: DNS 질의는 일반적으로 짧고 간단한 요청이므로, TCP보다 UDP가 더 효율적이다.
- 재전송 용이: DNS는 자체적으로 캐싱을 활용하여 재전송이 필요할 경우 UDP를 통해 빠르게 처리할 수 있다.
✅ DNS 계층 구조
DNS는 분산 계층 데이터베이스이다.
중앙 집중 데이터베이스는 서버의 고장, 트래픽 양, 먼 거리 등의 문제가 발생할 수 있으므로 DNS는 많은 서버를 이용해 계층 형태로 분산시킨다.
다음과 같이 총 3가지 계층의 DNS 서버로 나눌 수 있다.
🏷 루트 DNS 서버
: TLD(Top Level Domain) 서버의 IP 주소 제공
1000개 이상의 루트 서버 인스턴스가 전 세계에 흩어져 있다.
🏷 Top-Level Domain(TLD, 최상위 DNS 서버)
: 책임 DNS 서버에 대한 IP 주소 제공
com. org, net와 같은 상위 레벨 도메인과 kr, uk와 같은 모든 국가의 상위 레벨 도메인에 대한 TLD 서버가 있다.
🏷 책임 DNS 서버(Second-Level Domain)
: 조직의 자체 DNS 서버
규모가 큰 기관은 대부분 자신의 호스트들에 대한 책임 DNS 서버를 유지한다.
✅ DNS 작동 방식
- 사용자가 웹 브라우저에 도메인 이름을 입력한다.
- 컴퓨터는 로컬 DNS 서버(주로 ISP에서 제공)를 참조하여 해당 도메인의 IP 주소를 검색한다.
- 로컬 DNS에 IP 주소가 없으면, 루트 DNS 서버에 질의한다.
- 루트 서버는 요청된 도메인의 TLD(ex .com) 서버의 IP 주소를 반환한다.
- TLD 서버는 해당 도메인을 관리하는 책임 DNS 서버의 IP 주소를 반환한다.
- 책임 DNS 서버는 요청된 도메인의 IP 주소를 반환하고, 로컬 DNS는 이 정보를 캐싱하여 이후 요청 시 빠르게 응답할 수 있도록 한다.
✅ DNS 질의 종류
ISP(Internet Service Provider)의 DNS 서버가 호스팅 하고 있는 서버의 IP주소를 찾기 위해 DNS query를 날린다.
🏷 재귀 질의 (Recursive Query)
: 클라이언트가 DNS 서버에 질의할 때, DNS 서버가 최종 IP 주소를 찾을 때까지 다른 DNS 서버에 추가적으로 질의하는 방식
- 클라이언트가 로컬 DNS 서버에 도메인 이름을 요청한다.
- 로컬 DNS 서버는 해당 도메인의 IP 주소를 찾기 위해 루트 DNS 서버, TLD 서버, 책임 DNS 서버에 차례로 질의한다.
- 최종적으로 IP 주소를 찾으면, 로컬 DNS 서버는 이를 클라이언트에게 반환한다.
🏷 반복 질의 (Iterative Query)
: 클라이언트가 DNS 서버에 질의할 때, DNS 서버가 자신이 알고 있는 정보만 제공하고, 알지 못하는 정보에 대해서는 다른 DNS 서버의 주소를 반환하는 방식
- 클라이언트가 로컬 DNS 서버에 도메인 이름을 요청한다.
- 로컬 DNS 서버가 해당 도메인의 IP 주소를 알고 있지 않으면, 클라이언트에게 알고 있는 DNS 서버의 주소를 반환한다.
- 클라이언트는 반환된 DNS 서버에 직접 질의하여 필요한 정보를 찾아간다.
✅ DNS 레코드
: DNS 서버가 해당 패킷을 받았을 때 어떤식으로 처리할지를 나타내는 지침
각 레코드는 도메인 이름과 함께 특정 유형의 정보를 제공한다.
- A 레코드: 도메인 이름을 IPv4 주소로 변환한다.
- AAAA 레코드: 도메인 이름을 IPv6 주소로 변환한다.
- CNAME 레코드: 도메인 이름을 다른 도메인 이름으로 매핑한다.
- MX 레코드: 메일 서버의 주소를 지정한다.
- NS 레코드: 도메인의 네임 서버를 지정한다.
'⚙️ CS' 카테고리의 다른 글
[네트워크] XSS, CSRF, SQL Injection & 웹 캐시와 프록시 서버 (1) | 2025.03.28 |
---|---|
[네트워크] HTTP 상태유지 기술 & SOP와 CORS & REST (2) | 2025.03.28 |
[네트워크] HTTP/HTTPS 프로토콜 (0) | 2025.03.20 |
[네트워크] OSI 7계층 vs TCP/IP 모델 (1) | 2025.03.19 |