티스토리 뷰
DNS는 인터넷에서 필수적인 역할을 하지만, 그 동작 원리를 정확히 아는 사람은 많지 않습니다.
DNS는 기본적으로 도메인 이름을 IP 주소로 변환하는 시스템이며,
IETF(Internet Engineering Task Force)에서 RFC(Request for Comments) 문서를 통해 표준화하고 있습니다.
(가끔 Domain Name System 대신 Domain Name Service 또는 Domain Name Server라고도 표현되지만,
IETF의 정의에 따르면 Domain Name System이 정확한 명칭입니다.)
DNS는 1987년 RFC 1034와 RFC 1035를 통해 기본 개념과 사양이 정의된 이후, 지속적으로 발전해 왔습니다.
인터넷의 발달과 함께 보안, 성능, 관리 기능이 지속적으로 개선되었으며, 여러 RFC 문서를 통해 확장되었습니다.
- RFC 1034: 도메인 이름 - 개념 및 기능
- RFC 1035: 도메인 이름 - 구현 및 사양
- RFC 1122: 인터넷 호스트에 대한 요구 사항 - 통신 계층
- RFC 1123: 인터넷 호스트에 대한 요구 사항 - 애플리케이션 및 지원
- RFC 1876: 도메인 이름 시스템에서 위치 정보를 표현하는 수단
- RFC 1995: DNS에서 증분 영역 전송
- RFC 1996: 영역 변경에 대한 프롬프트 알림 메커니즘(DNS 알림)
- RFC 2136: DNS 업데이트(Domain Name System)의 동적 업데이트
- RFC 2181: DNS 사양에 대한 설명
- RFC 2308: DNS 쿼리의 부정 캐싱(DNS NCACHE)
- RFC 2535: 도메인 이름 시스템 보안 확장
- RFC 2782: 서비스 위치를 지정하기 위한 DNS RR(DNS SRV)
- RFC 2845: DNS에 대한 비밀 키 트랜잭션 인증(TSIG)
- RFC 2915: NAPTR(명명 기관 포인터) DNS 리소스 레코드
- RFC 2930: DNS에 대한 비밀 키 설정(TKEY RR)
- RFC 2931: DNS 요청 및 트랜잭션 서명( SIG(0)s )
- RFC 3110: DNS(도메인 이름 시스템)의 RSA/SHA-1 SIG 및 RSA KEY
- RFC 3445: RR(KEY Resource Record) 범위 제한
- RFC 3596: IP 버전 6을 지원하는 DNS 확장
- RFC 3645: DNS에 대한 비밀 키 트랜잭션 인증을 위한 일반 보안 서비스 알고리즘(GSS-TSIG)
이러한 문서를 기반으로 DNS는 지속적으로 발전하고 있으며,
보안 강화를 위한 DNSSEC, 프라이버시 보호를 위한 DNS over HTTPS 및 DNS over TLS 등의
새로운 기술도 등장하였습니다.
DNS는 계층적인 네임서버 구조를 통해 도메인 이름을 IP 주소로 변환하는 방식으로 동작합니다.
이 과정을 통해 사용자는 사람이 읽을 수 있는 도메인(www.eddie.ee)을 통해 쉽게 웹사이트에 접속할 수 있습니다.
1. 사용자가 브라우저에 www.eddie.ee을 입력
2. OS에서 Hosts 파일과 DNS 캐시를 확인하여 처리
3. OS에 정보가 없다면 DNS Resolver에 요청
4. DNS Resolver가 캐시 확인 후, 없다면 Root 네임서버로 요청
5. TLD 네임서버에서 권한 있는 네임서버 정보 제공
6. Authoritative 네임서버에서 최종적으로 IP 주소를 DNS Resolver에게 반환
7. DNS Resolver가 사용자에게 IP 정보를 전달하며, 응답을 캐싱하여 향후 요청 속도를 높임
DNS는 기본적으로 UDP 53번 포트를 사용하며, 응답 크기가 512바이트 이상이면 TCP 53번 포트로 전환됩니다.
DNS 응답 데이터는 Resource Record(RR) 형태로 전달되며, 다음과 같은 필드로 구성됩니다.
구분 | 설명 | 예시 | 크기 |
NAME | 도메인 이름 | eddie.ee | 가변 |
TYPE | 레코드 유형(A, MX, NS 등) | A | 2 Bytes |
CLASS | 네트워크 클래스(IN-인터넷) | IN | 2 Bytes |
TTL | 캐싱을 위한 Time-to-Live(초) | 3600 | 4 Bytes |
RDLENGTH | RDATA의 크기(Byte) | 4 | 2 Bytes |
RDATA | 해당 레코드의 데이터값 | 192.0.0.1 | 가변 |
DNS에서 사용되는 레코드 타입(TYPE)은 2바이트(16비트)로 표현되며,
십진수로 변환하면 0~65535까지 사용될 수 있습니다.
초기에는 16개가 정의되었으나, 필요에 따라 다양한 TYPE이 추가되어 현재에는 수십개가 사용되고 있으며,
주로 사용되는 TYPE은 A, AAAA. NS, CNAME, SOA, PTR, MX 등이 있습니다.
타입 | 값 | 의미 | 예시 | RFC |
A | 1 | IPv4 주소 매핑 | eddie.ee → 192.0.2.1 | RFC1035 |
AAAA | 28 | IPv6 주소 매핑 | eddie.ee → 2001:db8::1 | RFC3596 |
NS | 2 | 네임 서버 지정 | eddie.ee → mail.eddie.ee | RFC1035 |
CNAME | 5 | 별칭 설정 | www.eddie.ee → eddie.ee | RFC1035 |
SOA | 6 | DNS 존 파일 정보 | 도메인 기본네임서버, 관리자 정보 등 | RFC1035 |
PTR | 12 | IP 주소를 도메인으로 변환 | 1.2.0.192.in-addr.arpa. → eddie.ee | RFC1035 |
MX | 15 | 메일 서버 주소 | eddie.ee → ns1.eddie.ee | RFC1035 |
TXT | 16 | 임의의 텍스트 데이터 | 보안, 인증, 서비스 설정 정보 등 메모 | RFC1035 |
DNS는 인터넷 인프라의 핵심 요소이며, 지속적인 표준화와 확장을 통해 발전하고 있습니다.
1. DNS는 계층적 네임서버 구조를 통해 도메인 이름을 IP 주소로 변환
2. RFC 1035를 기반으로 다양한 기능이 확장되었으며, 보안 및 성능 개선이 이루어짐
3. UDP 53 포트를 기본으로 사용하지만, 데이터 크기에 따라 TCP 53을 활용
4. A, AAAA, CNAME, MX, PTR 등 다양한 Resource Record(RR) 타입이 존재
5. 보안 강화를 위한 DNSSEC, 개인 정보 보호를 위한 DoH/DoT 등 최신 기술도 등장
DNS는 단순한 도메인 매핑을 넘어 로드 밸런싱, 보안 강화, 서비스 디스커버리 등의 다양한 기능을 수행하며,
앞으로도 지속적으로 발전할 것입니다.
'에디.Infrastructure' 카테고리의 다른 글
RAID10, RAID01 그리고 다양한 RAID들 (0) | 2021.07.14 |
---|---|
가상화란 무엇인가요? (0) | 2021.04.24 |
SSD의 수명은? TBW와 DWPD (0) | 2021.04.20 |