DNS (Domain Name System)
DNS의 동작원리를 탐구해보자
Domain Name이란
‘Domain Name’은 전 세계적으로 네트워크로 연결된 모든 컴퓨터를 식별하기 위해 사용되는 이름이다. 예를 들어, ‘startupcode.kr’이 도메인 이름에 해당한다. 인터넷은 전 세계의 컴퓨터 네트워크가 상호 연결된 거대한 네트워크이며, 각 컴퓨터는 고유한 IP 주소를 가지고 있다. 하지만 IP 주소는 숫자로 이루어져 있어 사람들에게 기억하기 어렵기 때문에, 사람들은 기억하기 쉬운 도메인 이름을 사용한다.
www는 도메인인가? ‘www’는 도메인이 아니라 호스트네임이다. 호스트네임은 인터넷 상의 서버를 구별하는 이름을 의미하며, 예를 들어 ‘www.startupcode.kr’에서 ‘www’는 호스트를 나타낸다.
DNS(Domain Name System)란
DNS는 도메인 이름과 IP 주소 사이의 변환을 관리하는 시스템이다. 이를 통해 DNS는 사용자가 입력한 도메인 이름을 컴퓨터가 이해할 수 있는 숫자 형태의 IP 주소로 변환한다. 이 시스템은 사람들이 쉽게 기억할 수 있는 도메인 이름을 컴퓨터가 이해할 수 있는 숫자 형태의 IP 주소로 변환하는 핵심적인 역할을 한다.
인터넷 상의 웹사이트는 각자 고유한 IP 주소를 가지고 있으며, 이 IP 주소는 숫자로 이루어져 있어 기억하기 어렵다. 마치 좌표보다는 도로명 주소가 더 기억하기 쉬운 것처럼, 사람들은 도메인 이름을 사용하여 웹사이트에 접근한다. DNS는 이러한 도메인 이름과 IP 주소를 연결하고 관리하는 역할을 한다. 이를 통해 사용자들은 복잡한 IP 주소를 대신해, 쉽게 기억할 수 있는 도메인 이름을 입력하여 웹사이트에 접속할 수 있다.
DNS 구조
DNS의 동작 과정
-
도메인 이름 입력
사용자가 웹 브라우저에 도메인 이름을 입력한다. -
브라우저 DNS 캐시 확인
브라우저는 내부 DNS 캐시에서 해당 도메인 이름의 IP 주소를 찾는다. 캐시에 있으면 즉시 접속한다. -
DNS 리졸버 요청 처리
캐시에 IP 주소가 없으면, DNS 리졸버는 로컬 DNS 서버에 요청을 보낸다. -
로컬 DNS 서버 요청
로컬 DNS 서버(주로 ISP에서 제공)는 도메인의 IP 주소를 요청받는다. -
로컬 DNS 캐시 확인
로컬 DNS 서버는 자신이 가지고 있는 캐시를 확인하여 요청된 도메인의 IP 주소를 찾아본다. -
루트 DNS 서버 요청
만약 로컬 DNS 서버에 정보가 없으면, 루트 DNS 서버에 요청을 보낸다. -
TLD DNS 서버 요청
루트 DNS 서버는 도메인의 TLD(Top-Level Domain) 관련 정보를 제공하고, 해당 TLD DNS 서버로 요청을 보낸다. -
권한 있는 DNS 서버 요청
로컬 DNS 서버는 TLD DNS 서버에서 권한 있는 DNS 서버의 주소를 얻는다. -
도메인 IP 주소 조회
권한 있는 DNS 서버에서 실제 도메인의 IP 주소를 조회한다. -
IP 주소 로컬 DNS 서버로 반환
조회된 IP 주소가 로컬 DNS 서버로 반환된다. -
IP 주소 캐싱
로컬 DNS 서버는 받은 IP 주소를 자신의 캐시에 저장한다. -
IP 주소 브라우저로 반환
최종적으로 로컬 DNS 서버는 브라우저에 IP 주소를 반환한다. -
웹 서버 연결
브라우저는 받은 IP 주소를 통해 웹 서버에 연결한다. -
웹 페이지 로드
웹 서버는 요청된 웹 페이지를 브라우저로 전송하여 사용자가 페이지를 볼 수 있게 한다.
리졸버(Resolver)란 도메인 이름(예: www.example.com)을 해당하는 IP 주소(예: 192.0.2.1)로 변환하는 컴퓨터 프로그램 또는 서버이다. 리졸버(Resolver)는 DNS(Domain Name System)에서 중요한 역할을 하는 컴포넌트로, 사용자가 입력한 도메인 이름을 해당하는 IP 주소로 변환하는 작업을 담당하는 시스템이다. 간단히 말해서, 리졸버는 도메인 이름을 IP 주소로 “해결(resolve)”하는 역할을 한다. DNS의 일부로서, 사용자가 도메인 이름을 입력했을 때 가장 먼저 요청을 처리하는 주체라고 보면된다. 브라우저는 DNS 요청을 리졸버에게 전달하고, 리졸버는 요청에 대한 처리 결과를 브라우저로 반환합니다. 이때, 리졸버는 로컬 캐시(컴퓨터에 저장된 DNS 정보)나, 로컬 DNS 서버(인터넷 서비스 제공업체의 DNS 서버 등)를 통해 최종적으로 IP 주소를 찾아서 브라우저에 전달한다.
Authoritative Name Server vs Non-Authoritative Name Server
구분 | Authoritative Name Server | Non-Authoritative Name Server |
---|---|---|
정의 | 특정 도메인에 대한 최종 권한을 가진 서버로, 도메인의 DNS 레코드 정보를 직접 관리하고 해당 도메인에 대한 질의에 대해 최종적이고 권위 있는 답변을 제공한다. | 특정 도메인에 대한 정보를 직접 관리하지 않고, 다른 서버로부터 정보를 가져와서 저장하는 캐시 역할을 한다. |
기능 | 도메인에 대한 모든 레코드 정보(예: A 레코드, MX 레코드, CNAME 레코드 등)를 보유하고 있으며, 외부의 질의에 대해 직접적으로 응답한다. | Authoritative Name Server로부터 정보를 받아서 일정 시간 동안 저장하고(캐싱), DNS 질의가 있을 때 이 정보를 제공한다. 이 정보는 일정 시간이 지나면 만료된다. |
예시 | 예를 들어, startupcode.kr 도메인의 Authoritative Name Server는 해당 도메인의 IP 주소, 메일 서버 설정 등을 관리하고 이에 대한 질의에 직접 응답한다. |
사용자가 웹 브라우저를 통해 startupcode.kr 에 접근하려고 할 때, 사용자의 ISP의 DNS 서버는 캐시된 정보를 바탕으로 IP 주소를 제공할 수 있다. 이 정보는 Authoritative 서버로부터 얻은 것이지만, 직접 관리하지는 않는다. |
차이점 | 정보의 신뢰성: 정보를 직접 관리하므로 제공하는 정보는 가장 정확하고 신뢰할 수 있다. 응답 시간: 직접 관리하므로 캐시된 데이터에 의존하지 않고 응답한다. 데이터 관리: 도메인의 소유자나 관리자가 직접 데이터를 관리하고 업데이트한다. |
정보의 신뢰성: 캐시로만 관리하므로, 정보가 최신 상태가 아닐 수 있다. 응답 시간: 일반적으로 응답 시간이 빠르지만, 캐시된 정보가 만료되었거나 없을 경우, 새로운 정보를 가져와야 하므로 응답이 지연될 수 있다. 데이터 관리: 캐시된 데이터에 의존한다. |
결론
- Authoritative Name Server는 도메인에 대한 권위 있는 정보를 직접 관리하며, 항상 최신의 정확한 정보를 제공한다.
- Non-Authoritative Name Server는 다른 서버에서 정보를 가져와 캐시하고, 일정 기간 동안 이 정보를 제공하며, 정보의 정확성이 떨어질 수 있다.
Top-Level Domain (TLD)
TLD는 인터넷 도메인 네임 시스템에서 최상위 계층에 위치하는 도메인을 말한다. 이는 크게 두 가지 종류로 나눌 수 있다.
- Generic Top-Level Domain (gTLD): 특정 조직의 성격이나 목적을 나타내는 도메인
- Country Code Top-Level Domain (ccTLD): 국가나 지역을 나타내는 도메인
TLD의 주요 목적
- 도메인 네임을 관리하고 구분하기 위한 목적
- TLD는 도메인 네임의 범주나 국가별 구분을 위해 사용된다.
1. Generic Top-Level Domain (gTLD)
gTLD는 특정 조직의 종류나 목적에 맞는 도메인을 관리하기 위한 범용적인 도메인이다. gTLD는 전 세계적으로 사용되며, 다양한 종류의 조직을 대표하는 도메인으로 분류된다.
gTLD의 주요 특징
- 다양한 분야에서 사용되며, 범용적으로 통용되는 도메인
- 예시: 상업 기관, 비영리 기관, 정부 기관 등
gTLD의 종류
- .com: 상업 기관
- .org: 비영리 기관
- .net: 네트워크 서비스
- .edu: 교육 기관
- .gov: 미국 정부 기관
- .mil: 미국 군사 기관
- .info: 정보 서비스
- .biz: 비즈니스 또는 상업적 사용
- .name: 개인의 이름
- .pro: 자격을 가진 전문가
- .health: 건강 및 의료 산업
- .tech: 기술 분야
gTLD의 용도
gTLD는 특정 목적이나 분야를 나타내는 도메인으로, 기업이나 기관의 성격을 직관적으로 전달하는 역할을 한다. 이러한 도메인은 특정 지역을 고려하지 않고 전 세계에서 통용된다.
3. Country Code Top-Level Domain (ccTLD)
ccTLD는 두 글자의 국가 코드에 기반한 도메인으로, 각 나라를 대표하는 최상위 도메인이다. 이는 ISO 3166-1 국가 코드를 기반으로 하며, 특정 국가나 지역과 관련된 기업, 개인, 콘텐츠를 식별하는 데 사용된다.
ccTLD의 주요 특징
- 국가나 지역을 대표하는 도메인
- 예시: .kr (한국), .us (미국), .jp (일본) 등
ccTLD의 용도
ccTLD는 해당 국가나 지역에서 활동하는 기업, 조직, 개인에게 주로 사용되며, 그 지역과 관련된 콘텐츠를 제공하는 웹사이트에 적합하다. 또한, 검색 엔진 최적화(SEO) 측면에서도 중요하게 사용된다.
ccTLD의 예시
| ccTLD | 국가 | 설명 | | — | — | — | | .kr | 대한민국 | 한국 관련 도메인 | | .us | 미국 | 미국 관련 도메인 | | .uk | 영국 | 영국 관련 도메인 | | .jp | 일본 | 일본 관련 도메인 | | .de | 독일 | 독일 관련 도메인 | | .fr | 프랑스 | 프랑스 관련 도메인 | | .cn | 중국 | 중국 관련 도메인 | | .br | 브라질 | 브라질 관련 도메인 | | .in | 인도 | 인도 관련 도메인 | | .ru | 러시아 | 러시아 관련 도메인 |
gTLD와 ccTLD의 비교
구분 | gTLD | ccTLD |
---|---|---|
목적 | 특정 조직이나 목적을 나타내는 도메인 | 국가나 지역을 나타내는 도메인 |
용도 | 전 세계적으로 범용적인 도메인 사용 | 특정 국가나 지역과 관련된 도메인 사용 |
예시 | .com, .org, .edu | .kr, .us, .jp |
SEO 영향 | 글로벌 SEO에 유리 | 지역 SEO에 유리 |
왜 두 가지를 구분하는가?
- 목적과 사용성: gTLD는 전 세계적으로 통용되는 도메인으로 다양한 분야의 조직을 나타내며, ccTLD는 특정 국가나 지역에 중점을 둔다.
- 지리적 식별: ccTLD는 웹사이트가 특정 국가나 지역을 대상으로 할 때 유리하며, 이는 SEO에서도 중요한 역할을 한다.
- 조직적 구분: 국제적인 활동을 하는 경우 gTLD가 적합하며, 특정 국가나 지역과 관련된 활동은 ccTLD가 유리하다.
이렇게 DNS 도메인 시스템은 gTLD와 ccTLD를 구분하여 각각의 용도에 맞는 도메인 이름을 관리하고 제공한다.
Internet Service Provider (ISP)
ISP는 인터넷 서비스를 제공하는 기관이나 기업이다. 사용자가 인터넷에 접속할 수 있도록 지원하는 역할을 한다.
- 인터넷 접속 서비스 제공: 사용자가 인터넷에 연결할 수 있게끔 서비스를 제공한다.
- 도메인 이름 및 IP 주소 관리: 도메인 이름 시스템(DNS)을 통해 인터넷에서의 주소를 관리한다.
- 국제적인 도메인 관리: ICANN과 협력하여 전 세계 인터넷 자원의 관리 및 분배를 담당한다.
예시
- KT (한국통신): 대한민국의 주요 통신 및 인터넷 서비스 제공업체.
- SK브로드밴드: SK그룹 소속의 광대역 인터넷 서비스 제공업체.
- LG U+ (LG유플러스): LG그룹 소속의 통신 및 인터넷 서비스 제공업체.
Domain Name Server (DNS)
DNS는 도메인 이름을 IP 주소로 변환하는 서버 시스템이다. 사용자가 도메인 이름을 통해 웹사이트에 접속할 수 있도록 돕는다.
- 도메인 이름을 IP 주소로 변환: 사용자가 웹사이트 주소를 입력하면, DNS는 해당 도메인의 IP 주소를 찾아서 연결을 돕는다.
- 인터넷 접속 경로 안내: 웹사이트를 찾기 위해 필요한 IP 주소 정보를 제공한다.
예시
- Google Public DNS, Cloudflare DNS 등: 여러 기업이 DNS 서비스를 제공하고 있으며, 이들은 빠르고 안전한 인터넷 연결을 지원한다.
동작 방식
- 도메인 등록 시 네임 서버 지정: 도메인을 등록할 때, 해당 도메인의 이름을 관리할 네임 서버를 지정해야 한다.
Local DNS Server
로컬 DNS 서버는 사용자와 가까운 위치에 있는 DNS 서버로, 사용자의 인터넷 서비스 제공업체(ISP)에서 제공한다. 이 서버는 사용자가 요청하는 도메인에 대한 DNS 쿼리를 처리한다.
- 사용자 DNS 쿼리 처리: 사용자가 요청한 도메인에 대한 IP 주소를 찾기 위해 첫 번째로 쿼리를 처리한다.
- 빠르고 효율적인 응답: 로컬 DNS 서버는 지역적으로 가까운 위치에 있어 빠르게 응답할 수 있다.
동작 방식
- 사용자는 인터넷을 사용할 때, 로컬 DNS 서버에 접속하여 웹사이트에 필요한 IP 주소를 요청하고, 로컬 DNS 서버가 해당 정보를 반환한다. 이를 통해 빠르고 효율적인 인터넷 사용이 가능하다.
Root DNS Server
루트 DNS 서버는 전 세계 도메인 이름 시스템(DNS)의 최상위에 위치한 서버로, 도메인 이름 조회가 시작되는 지점이다. 이 서버는 도메인 이름을 찾는 요청을 최상위 도메인(TLD) 서버로 안내하는 역할을 한다.
- 도메인 이름 조회 시작 지점: 도메인 이름 조회 요청이 들어오면, 루트 DNS 서버는 이를 최상위 도메인(TLD) 서버로 안내한다.
- 인터넷의 도메인 이름 구조 관리: 루트 서버는 DNS의 구조와 운영을 지원하며, 도메인 이름 시스템의 기초를 관리한다.
예시
- 루트 DNS 서버는 전 세계적으로 13개의 서버로 구성되어 있으며, 이들은 모두 도메인 이름 시스템의 최상위에 위치하여 도메인 이름 조회를 담당한다.
ICANN (Internet Corporation for Assigned Names and Numbers)
ICANN은 전 세계 도메인 이름 시스템(DNS)의 관리와 조정을 담당하는 국제 기구로, 인터넷 주소 할당과 도메인 이름 관리를 주관한다.
- 도메인 이름과 주소 할당: ICANN은 인터넷 도메인 이름과 IP 주소를 할당하는 역할을 한다.
- gTLD와 ccTLD 운영 정책 설정: ICANN은 일반 최상위 도메인(gTLD)과 국가 코드 최상위 도메인(ccTLD)의 운영 정책을 설정하고 이를 관리한다.
- DNS의 안정적인 운영 보장: 전 세계 DNS의 안정적인 운영을 지원한다.
예시
- ICANN은 도메인 이름 시스템의 운영과 관리를 담당하며, DNS의 안정적인 기능을 보장하기 위해 국제적으로 협력한다.
WHOIS / Domain Registrar
WHOIS는 도메인 이름의 등록 정보를 조회할 수 있는 시스템이며, Domain Registrar는 도메인 이름을 등록하고 관리하는 서비스 제공업체이다.
- 도메인 등록 및 관리: Domain Registrar는 도메인 이름을 등록하고 관리하는 서비스를 제공한다.
- 도메인 정보 조회: WHOIS를 통해 도메인의 소유자 및 관련 정보를 조회할 수 있다.
예시
- gabbia와 같은 Domain Registrar는 도메인 이름을 등록하고, 네임 서버를 관리하는 서비스를 제공한다.
레코드 종류
- A Record: 도메인 이름을 IP 주소로 변환한다. 예시:
a.startupcode.kr → 123.123.123.221
- CNAME: 하나의 도메인 이름을 다른 도메인 이름으로 매핑한다. 예시:
b.startupcode.kr → a.startupcode.kr
- MX: 도메인의 메일 서버를 지정한다. 예시:
@c.startupcode.kr → 메일 서버 (네이버, 구글 등)
Domain Name Registry (DNR)
DNR은 도메인 이름을 중앙에서 관리하는 데이터베이스 시스템으로, 도메인 이름의 고유성을 유지하고 관리한다.
- 도메인 이름 관리: DNR은 인터넷상의 도메인 이름을 고유하게 유지하고 관리하는 시스템이다.
- TLD 서버 관리: 도메인 이름의 최상위 도메인(TLD) 서버를 관리한다.
예시
- DNR은 도메인 이름의 등록 정보를 관리하며, 도메인 이름의 유효성 및 고유성을 보장한다.
5. DNS Spoofing
DNS Spoofing은 해커가 사용자와 DNS 서버 사이의 통신을 가로채서 조작된 DNS 응답을 보내는 공격 방식이다.
공격 단계
- NS 쿼리 가로채기: 공격자는 사용자의 DNS 쿼리를 가로채고, 정상적인 웹사이트의 IP 주소 대신 악성 서버의 IP 주소를 포함한 조작된 DNS 응답을 생성한다.
- 조작된 DNS 응답 생성: 해커는 정상적인 웹사이트의 IP 주소를 가로채고, 악성 서버의 IP 주소를 포함한 응답을 보낸다.
- 사용자 유도: 사용자의 컴퓨터는 조작된 DNS 응답을 받아 해당 악성 서버로 접속하게 된다.
- 악의적인 활동 수행: 사용자는 공격자가 제어하는 악성 웹사이트에 접속하게 되어 개인 정보 등을 탈취당할 수 있다.