도메인 네임과 네임 서버
도메인 네임(Domain Name)과 네임 서버(Name Server)는 인터넷 통신에서 핵심적인 역할을 맡고 있습니다. IP 주소만으로 통신하는 것이 원칙이지만, 사람이 직접 IP 주소를 기억하기엔 어려움이 많고, IP 주소는 언제든 변경될 수 있기 때문입니다. 이러한 문제를 해결하기 위해 도메인 네임을 사용하고, 이를 체계적으로 관리하는 시스템이 바로 도메인 네임 시스템(DNS)입니다.
도메인 네임 (domain name)
- 문자열 형태로 표현되는 호스트 특정 정보
예:www.example.com
,developers.naver.com
,git.kernel.org
- IP 주소가 전화번호라면, 도메인 네임은 전화번호에 대응하는 이름이라고 볼 수 있음
- IP 주소 대비 기억하기 쉽고, IP 주소가 변경되더라도 도메인 네임만 다시 매핑하면 되므로 유연성과 편의성이 높음
네임 서버 (name server)
- 전화번호부가 “이름 ↔ 전화번호” 쌍을 관리하듯이, 네임 서버는 도메인 네임 ↔ IP 주소 쌍을 관리
- 도메인 네임을 관리하는 네임 서버를 DNS 서버라고 부름
- 아래 그림처럼, 특정 도메인 네임을 네임 서버에 질의하면, 해당 도메인 네임에 매핑된 IP 주소를 되돌려 받는 방식으로 동작
(그림 출처: 혼자 공부하는 네트워크)
DNS 서버는 전 세계에 여러 대가 분산되어 있으며, 계층적 구조를 통해 도메인 정보를 효율적으로 관리합니다. 이를 통해 방대한 수의 도메인을 안정적으로 처리할 수 있습니다.
도메인 네임 구조
도메인 네임은 점(.)을 기준으로 계층적으로 구분됩니다. 맨 오른쪽의 루트 도메인부터 시작해, 최상위 도메인(TLD) → 2단계 도메인 → 3단계 도메인 순으로 구성됩니다.
(그림 출처: 혼자 공부하는 네트워크)
- 루트 도메인 (root domain)
- 점(
.
)으로 표시되며, 도메인 네임 맨 끝에 위치 - 일반적으로 표기에서 생략하지만,
www.google.com.
처럼 맨 끝에 점(.
)이 붙어도 유효함
- 점(
- 최상위 도메인 (TLD, Top-Level Domain)
- 도메인 네임의 끝 부분 (예:
com
,net
,org
,kr
,jp
등) - 예:
www.example.com
에서com
이 TLD
- 도메인 네임의 끝 부분 (예:
- 2단계 도메인 (second-level domain)
- TLD 바로 왼쪽에 있는 부분
- 예:
www.example.com
에서example
이 2단계 도메인
- 3단계 도메인 (third-level domain)
- 예:
www.example.com
에서www
가 3단계 도메인 - 상황에 따라 4단계, 5단계 등 더 많은 단계가 존재할 수도 있음
- 예:
- FQDN (Fully Qualified Domain Name)
- 루트 도메인까지 모두 포함하여 표기한 도메인 네임
- 예:
www.example.com.
(맨 끝에 점이 포함된 형태)
(그림 출처: 혼자 공부하는 네트워크)
도메인 네임 시스템 (DNS)
1. 개념 및 역할
- DNS(Domain Name System)
- 도메인 네임을 전 세계적으로 분산하고 계층적으로 관리하기 위한 체계
- 호스트가 DNS를 통해 도메인 네임 → IP 주소 변환(또는 그 반대) 과정을 수행
- DNS 프로토콜
- 애플리케이션 계층 프로토콜로, 보통 UDP/53 포트를 주로 사용 (TCP/53 사용 사례도 존재)
- DNS 쿼리를 전송하고, 응답을 받아오는 통신 절차를 정의
2. DNS 서버의 분류
- 루트 네임 서버(Root Name Server)
- DNS 계층 구조의 최상단에 위치하는 서버
- 현재 13개의 루트 서버 집합(문자로 표기: A~M)이 전 세계에 분산 배치
- TLD 서버에 대한 정보를 반환
- TLD 네임 서버(Top-Level Domain Name Server)
com
,net
,org
,kr
,jp
등 각 최상위 도메인을 관리- 해당 TLD 하위 도메인을 관리하는 권한(authoritative)이 있음
- 권한(Name Server) 또는 권위(Name Server)
- 특정 도메인에 대한 최종 정보를 가지고 있음
- 예:
example.com
도메인의 네임 서버라면example.com
하위 호스트/IP 매핑 정보를 직접 저장하고 응답
- 재귀(Recursive) DNS 서버
- 일반적으로 ISP나 회사, 학교 등에서 제공하는 DNS 서버
- 사용자의 DNS 질의를 받아서, 필요한 정보를 다른 DNS 서버에 차례로 질의(재귀적 질의)하여 최종 IP 주소를 가져옴
- 가져온 정보를 캐시(cache)에 저장하여 이후 동일한 요청에 대해 더 빠르게 응답 가능
3. DNS 이름 해석 과정
DNS를 통해 도메인 네임 → IP 주소 변환이 이루어지는 순서는 일반적으로 아래와 같습니다(재귀 질의 기준).
- 클라이언트가 로컬 DNS 서버(재귀 DNS 서버)에 질의
- 로컬 DNS 서버가 캐시에 정보가 없다면, 루트 네임 서버에 “어느 TLD 서버를 참조해야 하는가?” 물음
- 루트 서버가 해당 도메인의 TLD 서버 주소를 반환
- 로컬 DNS 서버가 TLD 서버에 질의
- TLD 서버가 해당 도메인에 대한 권한 DNS 서버 주소를 반환
- 로컬 DNS 서버가 권한 DNS 서버에 질의
- 권한 DNS 서버가 최종적으로 IP 주소 반환
- 로컬 DNS 서버가 그 IP 주소를 캐시에 저장하고, 클라이언트에게 결과 전달
이 과정을 통해 여러 계층에 걸쳐 분산 저장된 도메인 정보를 조회하는 방식이 DNS 분산∙계층적 구조의 핵심입니다.
4. DNS 리소스 레코드 (Resource Records)
DNS 서버에는 여러 종류의 리소스 레코드가 저장되어 있습니다.
- A 레코드 (Address Record): 도메인 네임 → IPv4 주소 매핑
- AAAA 레코드: 도메인 네임 → IPv6 주소 매핑
- CNAME 레코드 (Canonical Name): 별칭(Alias) 도메인을 공식 도메인으로 매핑
- MX 레코드 (Mail Exchange): 메일 서버 정보
- NS 레코드 (Name Server): 해당 도메인을 관리하는 네임 서버 정보
- 그 외에도 PTR 레코드(Reverse Lookup), SOA 레코드(Start of Authority) 등이 존재
5. DNS의 중요성
- 확장성: 여러 계층으로 분산 관리하므로, 전 세계 규모의 호스트 정보를 처리 가능
- 탄력성: 분산 구조이기 때문에, 특정 서버에 장애가 발생해도 전체 DNS 시스템에 치명적 영향을 주지 않음
- 캐싱을 통한 성능 최적화: 재귀 DNS 서버나 OS 레벨에서 캐시를 활용해, 도메인 해석 시간을 단축
6. 표준화와 참고 자료
- RFC 1034: “Domain Names - Concepts and Facilities”
- RFC 1035: “Domain Names - Implementation and Specification”
- IANA TLD List: 전 세계 TLD 목록 및 관리 기관 정보
- ICANN: 도메인 및 IP 주소 할당 등 인터넷 리소스 관리 기관
'컴퓨터 네트워크 > 응용계층' 카테고리의 다른 글
HTTP 메서드 (0) | 2025.01.04 |
---|---|
HTTP 메시지 구조 (0) | 2025.01.04 |
HTTP의 특성 (1) | 2025.01.04 |
자원을 식별하는 URI (0) | 2025.01.04 |
계층적 네임 서버 (0) | 2025.01.04 |