DNS: 인터넷을 번역하는 응용 계층
Source: Dev.to
Introduction
Domain Name System (DNS)은 인간이 읽을 수 있는 형태의 통신을 인터넷 전반에 걸쳐 가능하게 하는 기본 인프라입니다. 브라우저에 웹사이트 주소를 입력할 때마다 DNS는 백그라운드에서 조용히 작동하여 해당 도메인 이름을 컴퓨터가 이해할 수 있는 IP 주소로 변환합니다. 흔히 “인터넷의 전화번호부”라고 불리는 DNS는 OSI 모델의 응용 계층 (Layer 7) 에서 동작하며, 매초 수백만 건의 변환 요청을 처리해 디지털 세계가 원활히 작동하도록 합니다.
DNS in the OSI Model – Application Layer Protocol Architecture
DNS는 인간이 친숙하게 사용하는 도메인 이름(예: www.example.com)을 기계가 읽을 수 있는 IP 주소(예: 192.0.2.44)로 변환하는 계층적이고 분산된 네이밍 시스템입니다. 이를 통해 사용자는 숫자 문자열을 외울 필요가 없습니다.
- Application layer: DNS는 사용자 애플리케이션과 서비스에 직접 지원을 제공하며, 애플리케이션이 자체적으로 변환 작업을 수행할 필요가 없습니다.
- Transport layer: DNS는 표준 쿼리에는 UDP를 사용합니다(소형 패킷(보통 ≤ 512 바이트)의 연결less 효율성 때문에 선호). 큰 전송이나 DNS 서버 간 영역 전송(zone transfer)에는 TCP를 사용합니다. 두 프로토콜 모두 포트 53을 사용합니다.
Hierarchical Structure (Five Levels)
- Root Level – 권한 있는 루트 네임 서버가 요청을 적절한 최상위 도메인(TLD) 네임 서버로 리다이렉트합니다.
- Top‑Level Domains (TLDs) –
.com,.org,.net,.edu와 같은 확장자는 해당 도메인 아래에 등록된 도메인에 대한 정보를 담고 있으며, 쿼리를 관련된 2차 도메인 네임 서버로 전달합니다. - Second‑Level Domains (SLDs) – 사용자가 등록하는 기본 도메인 이름(예:
example.com,google.com). 각 SLD는 하위 도메인 및 호스트에 대한 세부 정보를 저장하는 자체 권한 네임 서버를 가집니다. - Subdomains – 도메인 내 추가 레벨(예:
mail.example.com,blog.example.com)로, 서비스와 리소스를 조직하는 데 사용됩니다. - Hosts – 전체 호스트 이름으로 식별되는 개별 머신 또는 리소스(예:
www.example.com).
DNS Resolution Process – Complete Query Flow
URL을 입력하면 시스템은 DNS 리졸버에 재귀 쿼리를 시작하고, 리졸버는 DNS 계층을 통해 반복적인 쿼리를 수행해 필요한 IP 주소를 찾아냅니다.
Step‑by‑Step Breakdown
-
Client Initiates Query
- 로컬 DNS 클라이언트(스텁 리졸버)는 자체 캐시를 확인합니다.
- 캐시가 없으면 ISP나 Cloudflare, Google DNS와 같은 제3자 서비스가 제공하는 DNS 리졸버에 재귀 쿼리를 보냅니다.
-
Resolver Queries Root Name Server
- 리졸버는 루트 네임 서버에 먼저 질의하고, 해당 서버는 적절한 TLD 네임 서버에 대한 레퍼럴을 반환합니다.
-
TLD Name Server Response
- 리졸버는 TLD 네임 서버에 질의하고, 서버는 특정 도메인에 대한 권한 네임 서버를 알려줍니다.
-
Authoritative Name Server Resolution
- 권한 네임 서버가 최종 DNS 레코드(예: IP 주소)를 제공합니다.
-
Response Caching and Return
- 리졸버는 결과를 캐시하고 원래 클라이언트에 IP 주소를 반환합니다. 클라이언트 역시 향후 쿼리를 위해 정보를 캐시합니다.
Caching Layers
- Browser cache
- Operating system DNS cache
- ISP’s recursive resolver cache
이 중 어느 레벨에서든 레코드가 캐시되어 있으면 전체 계층을 탐색할 필요가 없어져 지연 시간과 네트워크 부하가 감소합니다. 각 캐시 레코드에는 Time‑To‑Live (TTL) 값이 포함되어 있어 정보가 유효한 기간을 정의합니다.
DNS Record Types – Common Resource Records Explained
| Record Type | Purpose |
|---|---|
| A | 도메인 이름을 IPv4 주소에 매핑합니다(예: www.example.com → 192.0.2.44). |
| AAAA | 도메인 이름을 IPv6 주소에 매핑합니다. |
| CNAME | 한 도메인 이름을 다른 도메인 이름에 연결하여 별칭을 만듭니다(예: example.com → www.example.com). |
| MX | 도메인에 대한 이메일을 처리할 메일 서버를 지정합니다. |
| TXT | 임의의 텍스트 데이터를 저장합니다. 주로 도메인 검증 및 이메일 인증(SPF, DKIM, DMARC)에 사용됩니다. |
| NS | 해당 도메인에 대해 권한이 있는 네임 서버를 지정합니다. |
| SOA | 영역에 대한 관리 정보를 담은 Start of Authority 레코드입니다. |
DNS’s Position in Network Architecture
DNS는 응용 계층 (Layer 7) 에서 HTTP, SMTP, POP3와 같은 프로토콜과 함께 동작합니다. 이 위치 덕분에 DNS는 하위 계층 프로토콜이 도메인 이름 변환을 이해할 필요 없이 사용자 애플리케이션에 직접 지원을 제공할 수 있습니다.
응용 계층 아래에서 DNS는 전송 계층에 의존합니다:
- UDP – 대부분의 쿼리에 사용되며 속도와 낮은 오버헤드가 장점입니다.
- TCP – 큰 응답, 영역 전송, 신뢰성이 요구되는 경우에 사용됩니다.
Security Considerations
DNS는 인터넷 인프라의 핵심 요소이며 스푸핑, 캐시 중독, 중간자 공격 등 다양한 위협에 노출됩니다. Domain Name System Security Extensions (DNSSEC) 은 DNS 응답에 암호화 서명을 추가하여 DNS 데이터의 진위와 무결성을 보장합니다.