DNS: 두 판 사이의 차이

기술노트
(Gemini 벌크 업로더로 자동 업로드)
 
(Gemini 벌크 업로더로 자동 업로드)
 
1번째 줄: 1번째 줄:
== 🌐 DNS (Domain Name System) ==
== DNS (Domain Name System) ==


'''DNS'''는 `google.com`과 같이 사람이 기억하기 쉬운 '''도메인 이름(Domain Name)을, 컴퓨터가 이해할 수 있는 IP 주소(예: `172.217.175.68`)로 변환'''해주는 시스템입니다. 인터넷의 전화번호부와 같은 역할을 합니다.
'''DNS(Domain Name System)'''는 인터넷에서 사람이 읽을 수 있는 도메인 이름(e.g., `www.google.com`)을 컴퓨터가 이해할 수 있는 IP 주소(e.g., `172.217.160.142`)로 변환해주는 분산형 명명 시스템입니다. 인터넷의 '전화번호부'와 같은 역할을 하며, 서비스 접근의 핵심 인프라입니다.
 
우리가 브라우저에 `google.com`을 입력하면, 브라우저는 먼저 DNS 서버에 `google.com`의 IP 주소가 무엇인지 물어보고, 응답으로 받은 IP 주소를 이용해 실제 서버에 접속합니다.


----
----


=== ⚙️ DNS의 동작 과정 ===
=== 🌐 DNS의 필요성 ===


1.  사용자가 브라우저에 `www.example.com`을 입력합니다.
*  '''IP 주소의 복잡성 해소''' : 컴퓨터는 IP 주소(숫자)로 통신하지만, 사람은 숫자로 된 IP 주소를 기억하기 어렵고 오류 발생 가능성이 높습니다. DNS는 사람이 기억하기 쉬운 도메인 이름을 사용하여 웹사이트나 서비스에 접근할 수 있도록 합니다.
2.  브라우저는 먼저 로컬 캐시(자신의 컴퓨터, 공유기 등)에 해당 도메인의 IP 주소가 있는지 확인합니다.
'''IP 주소 변경에 대한 유연성''' : 웹 서버의 IP 주소가 변경되더라도, 도메인 이름은 그대로 유지하고 DNS 레코드만 업데이트하면 되므로 서비스 중단 없이 유연하게 대응 가능합니다.
3.  캐시에 정보가 없으면, 통신사에 설정된 '''리졸버(Resolver) DNS 서버'''에게 질의합니다.
'''분산 시스템''' : 전 세계에 분산된 DNS 서버들이 계층적으로 협력하여 도메인 이름-IP 주소 매핑 정보를 관리하므로, 단일 장애 지점(Single Point of Failure) 없이 안정적인 서비스 제공이 가능합니다.
4.  리졸버는 전 세계에 흩어져 있는 DNS 서버들을 순차적으로 조회하여 IP 주소를 찾아냅니다.
    `루트(Root) DNS 서버` → `.com`을 관리하는 `TLD(Top-Level Domain) DNS 서버` → `example.com`을 관리하는 `Authoritative DNS 서버` 순으로 질의합니다.
5.  리졸버는 최종적으로 찾은 IP 주소를 브라우저에게 전달해주고, 자신도 일정 시간 동안 캐시에 저장해둡니다.
6.  브라우저는 이 IP 주소를 사용하여 `www.example.com` 서버에 접속합니다.


----
----


=== 📜 주요 DNS 레코드 ===
=== ⚙️ DNS의 동작 원리 ===
 
DNS는 계층적인 구조를 가지며, 여러 종류의 DNS 서버들이 협력하여 도메인 이름을 IP 주소로 변환합니다.


DNS 서버에는 도메인에 대한 여러 종류의 정보가 기록되어 있습니다.
*  '''DNS 계층 구조'''
> * '''루트 DNS 서버 (Root DNS Server)''' : 최상위 서버. TLD(Top-Level Domain) 서버의 IP 주소를 알고 있습니다.
> * '''TLD DNS 서버 (Top-Level Domain DNS Server)''' : `.com`, `.org`, `.net`, `.kr` 등 최상위 도메인 서버. 하위 도메인 서버의 IP 주소를 알고 있습니다.
> * '''권한 있는 DNS 서버 (Authoritative DNS Server)''' : 특정 도메인(e.g., `example.com`)에 대한 최종 IP 주소 정보를 가지고 있는 서버입니다.
> * '''재귀적 쿼리 (Recursive Query)를 수행하는 DNS 서버 (Resolver)''' : 클라이언트(사용자 PC)의 요청을 받아 위 계층 구조를 따라 IP 주소를 찾아주는 서버입니다. (ISP가 제공하는 DNS 서버)


* '''A''' : 도메인을 IPv4 주소에 매핑합니다.
*   '''DNS 쿼리 과정 (예: `www.example.com` 접속 시)'''
* '''AAAA''' : 도메인을 IPv6 주소에 매핑합니다.
1. 클라이언트가 로컬 DNS 서버(Resolver)에 `www.example.com`의 IP 주소를 요청합니다.
* '''CNAME''' : 도메인을 다른 도메인 이름(별칭)에 매핑합니다.
2.  로컬 DNS 서버는 자신의 캐시를 확인 후, 없으면 루트 DNS 서버에 질의합니다.
* '''MX''' : 도메인의 메일 서버를 지정합니다.
3.  루트 DNS 서버는 `.com` TLD DNS 서버의 주소를 알려줍니다.
* '''NS''' : 도메인을 관리하는 네임서버를 지정합니다.
4.  로컬 DNS 서버는 `.com` TLD DNS 서버에 질의합니다.
5.  `.com` TLD DNS 서버는 `example.com`의 권한 있는 DNS 서버 주소를 알려줍니다.
6.  로컬 DNS 서버는 `example.com`의 권한 있는 DNS 서버에 질의합니다.
7.  권한 있는 DNS 서버는 `www.example.com`의 최종 IP 주소를 알려줍니다.
8.  로컬 DNS 서버는 이 IP 주소를 캐싱하고 클라이언트에게 전달합니다.
9.  클라이언트는 받은 IP 주소로 웹 서버에 접속합니다.


----
----
33번째 줄: 38번째 줄:
=== 💡 개발자 핵심 Point ===
=== 💡 개발자 핵심 Point ===


* 웹 서비스를 새로 배포하고 도메인을 연결할 때, DNS 레코드를 직접 설정하는 작업을 하게 됩니다.
* DNS는 서비스의 핵심 인프라입니다. DNS 설정 오류는 웹사이트 접속 불가로 이어질 수 있습니다.
* DNS 설정이 전 세계로 전파(Propagation)되는 데에는 짧게는 몇 분에서 길게는 48시간까지 걸릴 수 있습니다.
* '''DNS 레코드 유형'''
* 서비스의 트래픽을 여러 서버로 분산시키는 '''로드 밸런싱'''DNS 수준에서 구현할 수도 있습니다. (: 라운드 로빈 DNS)
> * '''A 레코드''' : 도메인 이름을 IPv4 주소에 매핑.
* DNS는 인터넷 인프라의 핵심적인 부분이므로, 동작 원리를 이해하면 네트워크 문제를 진단하고 해결하는 데 큰 도움이 됩니다.
> * '''AAAA 레코드''' : 도메인 이름을 IPv6 주소에 매핑.
> * '''CNAME 레코드''' : 도메인 이름을 다른 도메인 이름에 매핑 (별칭).
> * '''MX 레코드''' : 메일 서버의 도메인 이름을 지정.
> * '''NS 레코드''' : 도메인의 권한 있는 네임 서버를 지정.
* '''DNS 캐싱''' : DNS 쿼리 과정은 시간이 소요되므로, 로컬 DNS 서버나 클라이언트(브라우저, OS)는 DNS 응답을 일정 시간(TTL, Time To Live) 동안 캐싱하여 불필요한 쿼리를 줄이고 응답 속도를 높입니다.
* '''DNSSEC (DNS Security Extensions)''' : DNS 응답의 위변조를 방지하기 위한 보안 확장 기능. DNS 스푸핑(Spoofing) 공격으로부터 보호합니다.
* '''CDN (Content Delivery Network)''' : DNS를 활용하여 사용자에게 가장 가까운 서버로 연결하여 콘텐츠 전송 속도를 최적화합니다.

2025년 9월 11일 (목) 16:50 기준 최신판

DNS (Domain Name System)

DNS(Domain Name System)는 인터넷에서 사람이 읽을 수 있는 도메인 이름(e.g., `www.google.com`)을 컴퓨터가 이해할 수 있는 IP 주소(e.g., `172.217.160.142`)로 변환해주는 분산형 명명 시스템입니다. 인터넷의 '전화번호부'와 같은 역할을 하며, 웹 서비스 접근의 핵심 인프라입니다.


🌐 DNS의 필요성

  • IP 주소의 복잡성 해소 : 컴퓨터는 IP 주소(숫자)로 통신하지만, 사람은 숫자로 된 IP 주소를 기억하기 어렵고 오류 발생 가능성이 높습니다. DNS는 사람이 기억하기 쉬운 도메인 이름을 사용하여 웹사이트나 서비스에 접근할 수 있도록 합니다.
  • IP 주소 변경에 대한 유연성 : 웹 서버의 IP 주소가 변경되더라도, 도메인 이름은 그대로 유지하고 DNS 레코드만 업데이트하면 되므로 서비스 중단 없이 유연하게 대응 가능합니다.
  • 분산 시스템 : 전 세계에 분산된 DNS 서버들이 계층적으로 협력하여 도메인 이름-IP 주소 매핑 정보를 관리하므로, 단일 장애 지점(Single Point of Failure) 없이 안정적인 서비스 제공이 가능합니다.

⚙️ DNS의 동작 원리

DNS는 계층적인 구조를 가지며, 여러 종류의 DNS 서버들이 협력하여 도메인 이름을 IP 주소로 변환합니다.

  • DNS 계층 구조

> * 루트 DNS 서버 (Root DNS Server) : 최상위 서버. TLD(Top-Level Domain) 서버의 IP 주소를 알고 있습니다. > * TLD DNS 서버 (Top-Level Domain DNS Server) : `.com`, `.org`, `.net`, `.kr` 등 최상위 도메인 서버. 하위 도메인 서버의 IP 주소를 알고 있습니다. > * 권한 있는 DNS 서버 (Authoritative DNS Server) : 특정 도메인(e.g., `example.com`)에 대한 최종 IP 주소 정보를 가지고 있는 서버입니다. > * 재귀적 쿼리 (Recursive Query)를 수행하는 DNS 서버 (Resolver) : 클라이언트(사용자 PC)의 요청을 받아 위 계층 구조를 따라 IP 주소를 찾아주는 서버입니다. (ISP가 제공하는 DNS 서버)

  • DNS 쿼리 과정 (예: `www.example.com` 접속 시)

1. 클라이언트가 로컬 DNS 서버(Resolver)에 `www.example.com`의 IP 주소를 요청합니다. 2. 로컬 DNS 서버는 자신의 캐시를 확인 후, 없으면 루트 DNS 서버에 질의합니다. 3. 루트 DNS 서버는 `.com` TLD DNS 서버의 주소를 알려줍니다. 4. 로컬 DNS 서버는 `.com` TLD DNS 서버에 질의합니다. 5. `.com` TLD DNS 서버는 `example.com`의 권한 있는 DNS 서버 주소를 알려줍니다. 6. 로컬 DNS 서버는 `example.com`의 권한 있는 DNS 서버에 질의합니다. 7. 권한 있는 DNS 서버는 `www.example.com`의 최종 IP 주소를 알려줍니다. 8. 로컬 DNS 서버는 이 IP 주소를 캐싱하고 클라이언트에게 전달합니다. 9. 클라이언트는 받은 IP 주소로 웹 서버에 접속합니다.


💡 개발자 핵심 Point

  • DNS는 웹 서비스의 핵심 인프라입니다. DNS 설정 오류는 웹사이트 접속 불가로 이어질 수 있습니다.
  • DNS 레코드 유형

> * A 레코드 : 도메인 이름을 IPv4 주소에 매핑. > * AAAA 레코드 : 도메인 이름을 IPv6 주소에 매핑. > * CNAME 레코드 : 도메인 이름을 다른 도메인 이름에 매핑 (별칭). > * MX 레코드 : 메일 서버의 도메인 이름을 지정. > * NS 레코드 : 도메인의 권한 있는 네임 서버를 지정.

  • DNS 캐싱 : DNS 쿼리 과정은 시간이 소요되므로, 로컬 DNS 서버나 클라이언트(브라우저, OS)는 DNS 응답을 일정 시간(TTL, Time To Live) 동안 캐싱하여 불필요한 쿼리를 줄이고 응답 속도를 높입니다.
  • DNSSEC (DNS Security Extensions) : DNS 응답의 위변조를 방지하기 위한 보안 확장 기능. DNS 스푸핑(Spoofing) 공격으로부터 보호합니다.
  • CDN (Content Delivery Network) : DNS를 활용하여 사용자에게 가장 가까운 서버로 연결하여 콘텐츠 전송 속도를 최적화합니다.