DNS
우리는 인터넷 브라우저를 사용하여 웹페이지에 접근 할 때 문자열을 가진 도메인으로 접근을 하는데, 이러한 도메인은 각각의 고유 주소인 IP를 가지고 있습니다.
이때 도메인을 통해 해당 고유주소인 IP로 접근 할 수 있게 끔 도와주는 기능이 DNS 입니다.
DNS는 Domain Name System 약자로 간단하게 풀어나가면
치킨(웹페이지)을(를) 시키고(접속하고)싶은데 가게이름(도메인)은 알고 있지만, 전화번호(IP)를 알 수 없어서 114(DNS Server)에 물어봐서 전화번호(IP)를 알아낸다고 보면 됩니다.
DNS Server에 질의하여 IP를 알아내는 전체적인 과정은 아래와 같습니다.
www.asdfzxcv.site 이라는 A레코드 타입의 도메인에 접근을 예로 들겠습니다.
1. 사용자가 웹 브라우저에서 www.asdfzxcv.site 라는 도메인으로 접근
2. 웹 브라우저는 받은 도메인을 DNS 클라이언트에게 전달
3. DNS 클라이언트가 로컬(공용) DNS 서버로 요청을 보냄
4. 로컬(공용) DNS 서버가 캐시 확인
5. 캐시에 없으면 루트 네임서버로 요청을 보냄
6. 루트 네임서버가 TLD 네임서버의 주소를 반환
7. TLD 네임서버가 SLD 네임서버의 주소를 반환
8. SLD 네임서버가 요청된 도메인의 IP 주소를 반환
9. IP 주소가 로컬(공용) DNS 서버로 리턴
10. 로컬(공용) DNS 서버가 IP 주소를 캐시에 저장한 후 DNS 클라이언트로 반환
11. DNS 클라이언트가 IP 주소를 사용자의 브라우저로 제공
12. 사용자의 브라우저가 IP 주소를 사용해 원하는 웹사이트로 접근
* 로컬 DNS : KT,SK,LG 같은 ISP 혹은 사내망 등에서 운영하는 DNS 서버로서, 전체가 아닌 특정 사용자들만 사용 가능
* 공용 DNS : 모든 사용자들이 사용이 가능한 도메인 서버로, 대표적으로 구글 (8.8.8.8), Cloudflare (1.1.1.1) 등
* SLD 네임서버 : DNS 레코드 관리 및 DNS 응답
* TLD 네임서버 : SLD 네임 서버의 정보 제공
* 루트 네임서버 : TLD 네임 서버의 정보 제공
직접적으로 확인을 해보고 싶다면, 아래처럼 진행해봅시다.
#Windows에서는 별도 설치가 필요
$ dig www.asdfzxcv.site +trace
1. 구글 DNS가 루트 네임 서버에게(*.root-servers.net.) 질의합니다.
2. l.root-servers.net. 라는 루트 네임 서버에서 .site 라는 도메인을 관리하는 TLD 네임 서버(*.nic.site.)로 다시 질의를 합니다.
3. b.nic.site 라는 TLD 네임 서버에서 asdfzxcv.site를 관리하는 SLD 네임 서버(*.gabia.*.)로 다시 질의를 합니다.
4. ns.gabia.net 라는 네임 서버에서 해당 URL에 대한 IP를 반환합니다.
위 같은 과정을 거친 이후 해당 도메인으로 접근을 하게 됩니다.
DNS 레코드
전화번호에는 일반 유선도 있고, 팩스용 번호도 있고, 인터넷 전화도 있고 종류가 다양합니다.
DNS 레코드 또한 이러한 목적성을 가진 도메인을 저장하는 데이터베이스들의 종류입니다.
대표적으로 사용되는 레코드 타입이 A, CNAME, MX 정도 입니다.
1. A 레코드 (Address Record):
도메인 이름을 IPv4 주소로 매핑합니다.
2. AAAA 레코드 (IPv6 Address Record):
도메인 이름을 IPv6 주소로 매핑합니다.
3. CNAME 레코드 (Canonical Name Record):
도메인 이름을 별칭으로 다른 도메인 이름에 매핑합니다.
4. MX 레코드 (Mail Exchange Record):
도메인 이름에 대한 이메일 서버를 지정합니다.
5. TXT 레코드 (Text Record):
도메인 이름에 대한 텍스트 정보를 저장합니다. SPF(Sender Policy Framework)와 같은 인증 메커니즘에 사용됩니다.
NS 레코드 (Name Server Record):
도메인 이름의 네임 서버를 지정합니다.
PTR 레코드 (Pointer Record):
IP 주소를 도메인 이름으로 매핑합니다. 주로 역방향 DNS 조회에 사용됩니다.
SRV 레코드 (Service Record):
특정 서비스를 제공하는 서버의 위치를 지정합니다.
예: _sip._tcp.example.com → sipserver.example.com:5060
SOA 레코드 (Start of Authority Record):
도메인 존 파일의 시작을 나타내며, 관리자 이메일 주소, 도메인 기본 네임 서버, 존 파일의 시리얼 번호 등을 포함합니다.