DNS
DNS는 도메인 이름을 IP 주소로 변환하는 시스템이다.
즉, 사용자가 www.example.com과 같은 도메인 주소를 입력하면, DNS가 해당 도메인의 IP 주소를 찾아 웹 서버에 접속할 수 있도록 도와준다.

DNS 특징
1️⃣ 역방향 DNS 지원
일반적으로 DNS는 도메인 → IP 변환을 수행하지만, 역방향 DNS는 IP→ 도메인 변환을 수행한다.
보통 이메일 스팸 필터링, 보안 로그 분석 등에 사용된다.
2️⃣ 캐싱 기능
DNS는 같은 요청이 반복적으로 발행할 경우, 응답속도를 높이기 위해 캐싱 기능을 제공한다.
로컬 캐시: 사용자의 기기(PC, 브라우저)가 최근 조회한 DNS 정보를 저장
ISP(인터넷 서비스 제공자) 캐시: 인터넷 서비스 제공업체(ISP)가 자주 조회되는 DNS 정보를 캐싱
재귀 DNS 서버 캐시 : DNS 조회 과정에서 얻은 결과를 일정 시간 동안 저장
3️⃣ 분산된 시스템
DNS는 모든 요청을 하나의 중앙 서버에서 처리하면 부하가 너무 커지고 장애 위험이 높아지기 때문에 전세계적으로 분산된 네임 서버들이 협력하여 작동한다. 이렇게 함으로써 트래픽 부하를 분산하고 만약 하나의 DNS 서버가 다운되더라도, 다른 서버가 요청을 처리하여 장애를 최소화할 수 있다.
3️⃣ TTL(Time to Live) 설정 기능
DNS 레코드는 TTL(수명) 값을 설정할 수 있으며, TTL이 지나면 캐시가 만료되어 새로운 정보를 다시 조회한다.
TTL이 짧으면 DNS 캐시가 자주 만료되므로 최신 IP 정보를 빠르게 반영할 수 있다. 그러나 캐시가 금방 사라져 DNS 서버에 더 많은 요청이 발생하여 부하가 증가할 수 있다.
TTL이 길면 같은 정보를 오랫동안 캐싱하므로 DNS 서버 부하가 줄어든다. 그러나 IP주소가 변경되어도 오래된 정보가 남아있어 서비스 장애 가능성이 있다.
DNS 계층별 역할
DNS 시스템은 계층적인 구조를 가지며, 각 단계에서 역할이 다르다. 주요 DNS 서버에는 로컬 DNS, 루트 DNS, TLD DNS, 권한 DNS(Authoritative DNS)가 있다.
1️⃣ 로컬 DNS (Local DNS)
로컬 DNS는 사용자의 기기(PC, 스마트폰 등)에서 DNS 요청을 받으면, 먼저 캐시에서 IP 주소를 찾고, 만약 없다면 루트 DNS 서버부터 차례로 요청을 보내며 최종적으로 도메인의 IP 주소를 찾는다.
🔷 예시
1. 사용자가 example.com을 입력하면, 먼저 로컬 DNS가 캐시에 저장된 IP 주소가 있는지 확인한다.
2. 캐시에 없으면 루트 DNS부터 순차적으로 요청을 보내면서 최종 IP 주소를 찾아온다.
🔷 특징
1. DNS 캐싱 기능이 있어, 자주 방문하는 사이트의 응답 속도를 향상시킨다.
2. 로컬 DNS는 보통 인터넷 서비스 제공업체(ISP)나 기업 내부 네트워크에서 운영한다.
3. 만약 로컬 DNS가 잘못된 데이터를 캐싱하면, 사용자가 잘못된 IP로 연결될 수도 있다.
2️⃣ 루트 DNS (Root DNS Server)
루트 DNS 서버는 DNS 계층의 최상위 레벨에 있는 서버로, 도메인 네임 시스템의 시작점이다.
🔷 예시
1. 로컬 DNS가 캐시에 IP가 없을 경우, 루트 DNS에 먼저 질의한다.
2. 루트 DNS는 IP를 처리할 수 있는 TLD(최상위 도메인) 네임 서버의 주소를 반환해 준다.
→ 예를 들어, example.com을은 .com도메인이므로 루트 DNS는 .com을 관리하는 TLD DNS 서버의 주소를 반환한다.
→ 이때 반환되는 네임서버의 주소는 TLD DNS서버가 어디에 위치하는지 알려주는 IP주소이다.
🔷 주요 특징
1. 루트 DNS 서버 자체는 웹사이트의 IP 주소를 모른다. 대신, .com, .org, .net 같은 TLD 네임 서버의 주소를 알려준다.
2. 인터넷의 핵심 인프라로, 만약 루트 DNS가 마비되면 인터넷 서비스에 심각한 장애가 발생할 수 있다.
3. 주로 ICANN(인터넷 주소 관리 기구)과 관련 기관에서 운영한다.
3️⃣ TLD DNS (Top-Level Domain DNS Server)
TLD DNS 서버는 .com, .org, .kr, .net 같은 최상위 도메인(TLD)을 관리하는 DNS 서버이다.
🔷 예시
1. 루트 DNS에서 TLD DNS 서버의 주소를 받아오면, 로컬 DNS는 해당 TLD DNS에 질의한다.
-> 예를 들어, example.com을 찾고 있다면, .com을 관리하는 TLD DNS가 example.com을 담당하는 권한 DNS의 주소를 반환한다.
🔷 주요 특징
1. TLD 서버는 국제 도메인(.com, .net 등)과 국가 도메인(.kr, .jp, .us 등)으로 구분한다.
2. .com은 Verisign, .kr은 KISA(한국인터넷진흥원)에서 운영한다.
3. TLD 네임 서버는 실제 웹사이트의 IP 정보를 저장하지 않으며, Authoritative DNS의 위치를 반환하는 역할을 한다.
4️⃣ 권한 DNS (Authoritative DNS Server)
권한 DNS(Authoritative DNS)는 특정 도메인의 실제 IP 주소 정보를 가지고 있는 서버이다.
🔷 예시
1. TLD DNS에서 권한 DNS의 주소를 받으면, 로컬 DNS는 권한 DNS에 최종적으로 질의한다.
2. 권한 DNS는 example.com에 대한 진짜 IP 주소(예: 192.168.1.100)를 응답해 준다.
3. 이후 로컬 DNS는 해당 IP를 캐싱하고, 사용자의 브라우저가 해당 IP로 웹사이트에 접속하게 된다.
🔷 주요 특징
1. 특정 도메인(예: example.com)의 IP 정보를 최종적으로 보관하는 DNS 서버이다.
2, 기업, 클라우드 제공업체(AWS Route 53, Cloudflare, Google DNS 등)가 운영한다.
DNS의 동작방식
1. 사용자가 브라우저에 도메인 입력 (www.example.com)
2. 브라우저가 로컬 DNS 캐시를 확인 (기록이 없으면 DNS 서버에 요청)
3. DNS 서버가 계층적으로 IP 주소를 조회
=> Root DNS 서버 → TLD(Top-Level Domain) 서버 → Authoritative DNS 서버
4. 최종적으로 해당 도메인의 IP 주소를 반환하고, 브라우저가 해당 IP로 접속

CDN
CDN(Content Delivery Network)은 전 세계에 분산된 서버를 활용하여 콘텐츠를 빠르게 제공하는 기술이다.
예를 들어, 한국에 있는 사용자가 미국의 서버에서 이미지를 다운로드하려 하면 물리적 거리로 인해 지연이 발생할 수 있다. 이를 해결하기 위해 CDN은 전 세계 여러 지역에 콘텐츠를 캐싱한 서버(엣지 서버)를 배치하고, 사용자의 요청이 들어오면 가장 가까운 서버에서 캐싱된 콘텐츠를 제공하여 데이터 전송 속도를 향상시킨다.
CDN은 주로 이미지, 동영상, CSS, JavaScript 파일과 같은 정적 콘텐츠를 캐싱하여, 응답 속도를 개선하고 트래픽 부하를 줄이는 역할을 한다.
🔷 CDN 주요 구성요소
엣지 서버 : 사용자와 가장 가까운 서버로, 컨텐츠 제공의 주 역할을 한다. 캐시된 데이터를 빠르게 전달하고, 원본 서버에 접근할 필요가 있을 때만 데이터 요청을 한다.
오리진 서버 : 콘텐츠의 원본을 저장하는 서버로, 엣지 서버들이 데이터를 요청하는 서버이다. 엣지 서버가 캐시를 갱신할 때 사용된다.

cdn특징
1️⃣ 분산된 서버 네트워크
CDN은 전 세계 여러 지역에 위치한 엣지 서버(Edge Server)를 사용하여 콘텐츠를 제공한다. 사용자가 요청을 보내면, 가장 가까운 서버에서 콘텐츠를 제공하여 대기 시간을 최소화한다.
사용자가 서버와 가까운 위치에서 콘텐츠를 받기 때문에, 페이지 로딩 시간이 단축되고, 응답 속도가 빨라진다.
2️⃣ 고가용성 및 확장성
CDN은 트래픽의 폭증에도 효율적으로 대응할 수 있도록 설계되어 있다. 여러 서버가 분산되어 있기 때문에 트래픽이 몰리더라도 부하를 분산시켜 안정적인 서비스 제공이 가능하다.
3️⃣ 캐싱
CDN 서버는 콘텐츠를 캐시하여 자주 요청되는 콘텐츠를 서버에 저장한다. 이후 같은 콘텐츠가 요청될 때, 원본 서버가 아닌 캐시된 콘텐츠를 제공함으로써 빠른 응답을 제공한다.
4️⃣ 보안
DDoS 공격 방어: CDN은 분산된 서버를 통해 DDoS(분산 서비스 거부) 공격을 방어하는 데 도움을 준다. 공격이 특정 서버에 집중되지 않도록 분산 처리하여, 시스템의 안정성을 유지한다.
SSL/TLS 암호화: CDN은 콘텐츠 전송 시 SSL/TLS 암호화를 지원하여, 사용자와 서버 간의 통신을 안전하게 보호한다.
웹 애플리케이션 방화벽(WAF): CDN은 종종 웹 애플리케이션 방화벽(WAF) 기능을 포함하여, 웹 애플리케이션에 대한 공격을 예방한다.
CDN의 동작 방식
1. 사용자가 웹사이트 접속 시, 가장 가까운 CDN 서버에 요청
-> 사용자가 웹브라우저에서 www.example.com/image.jpg를 요청한다.
-> 이 요청은 먼저 CDN 네트워크의 DNS 서버를 거친다. ( 가장 가까운 CDN 엣지 서버의 IP 찾기 )
2. CDN 네트워크에서 가장 가까운 엣지 서버 검색
-> 1번에서 가장 가까운 엣지 서버 IP를 찾았으니, 이를 이용하여 가까운 엣지 서버를 찾는다.
-> CDN 네트워크는 사용자의 위치를 기반으로 가장 가까운 엣지 서버(Edge Server)를 찾는다.
예를 들어, 한국에서 요청하면 서울에 있는 CDN 서버가 응답하고, 미국에서 요청하면 뉴욕에 있는 CDN 서버가 응답한다. 이렇게 하면 데이터가 물리적으로 가까운 서버에서 제공되므로 로딩 속도가 빨라진다.
3. CDN 캐시 확인 (Cache Hit or Cache Miss)
엣지 서버에 캐시가 있는지 확인을 해야한다.
엣지 서버에는 자주 요청되는 데이터가 캐시(Cache) 되어 있다.
4. 이후 동일한 요청이 오면 CDN 서버에서 바로 응답하여 속도 개선

CDN 캐싱 방식
1️⃣ Static Caching
Origin Server에 있는 Content를 운영자가 미리 Cache Server에 복사 해두어 사용자가 Cache Server에 Content 요청 시 무조건 Cache Server에 있다
-> 대부분의 국내 CDN에서 이 방식을 사용한다. (게임 클라이언트 다운로드 등)
2️⃣ Dynamic Caching
Origin Server에 있는 Content를 운영자가 미리 Cache Server에 복사하지 않아, 사용자가 Content를 요청 시 해당 Content가 없는 경우 Origin Server로부터 다운로드 받아 전달한다. 있는 경우에는 캐싱된 Content전달한다.
DNS와 CNS
CDN을 최적화하기 위해 DNS를 사용한다.
DNS는 사용자가 웹사이트를 요청할 때 IP 주소를 반환하는 역할을 담당하고, CDN은 반환된 IP 주소에 해당하는 엣지 서버에서 콘텐츠를 제공하는 역할을 한다. 이 둘은 협력하여 웹사이트의 성능을 향상시키는 데 중요한 역할을 한다.
사용자가 웹사이트에 접속하려고 할 때, DNS는 요청한 도메인의 IP 주소를 반환하고, CDN은 그 IP 주소가 속한 엣지 서버로 사용자를 유도한다.
마무리
DNS와 CDN의 작동 원리를 이해하면, 웹사이트 성능을 개선할 수 있다는 점을 알 수 있다. DNS는 도메인 네임을 IP 주소로 변환해주는 역할을 하며, 캐싱을 통해 속도를 최적화하고, 여러 DNS 서버를 거쳐 IP 정보를 찾는 과정을 거친다. CDN은 물리적으로 분산된 서버들을 통해 사용자에게 가장 가까운 서버에서 콘텐츠를 제공함으로써 빠르고 안정적인 웹 경험을 제공한다.