[네트워크] DNS, DNS 쿼리, DNS recode 종류
개요
프로세스가 서로 통신할 때 알아야 하는 두 가지 정보 → IP, Port
- IP: 프로세스가 돌고 있는 머신의 Network Interface Card에 부여된 Identity → IPv4, host name(domain name)
- Port: 실행 중인 프로세스에 접근할 수 있는
DNS
IP 주소를 hostname으로 매핑(라우팅)해주는 역할
→ Network Layer에서 해야하는 일을 App-Layer에서 함
⇒ Network Layer는 빠르게 전송만 하면 돼서, 복잡한 연산을 App-Layer에서 처리하는 것
- distributed database → not centralize
- 가용성, 중요한 서비스는 분산시킨다.
- application layer protocol
DNS가 하는 일
- host name-IP address
- host aliasing - canonical & alias names
- main server aliasing
- load distribution
DNS 쿼리 과정(www.google.com)
어떤 host에 대한 IP 주소를 요청을 할 때,
INTERATED QUERY
- Local DNS Server에 요청
- root DNS Server에 요청 → (모르는 경우) TLD에 물어보라고 TLD 주소 알려줌
- TLD DNS Server에 요청 → authorititative Server에 물어보라고 A Server 주소 알려줌
- authorititative Server는 최종 권한을 가지고 있기에, 알려줌!
RECURSIVE QUERY
- Local DNS Server에 요청하고, 답이 올 때까지 기다린다. Server 들이 직접 나서서 응답-요청 과정 겪음
실제로는 root DNS Server는 recursive 방식을 거부한다.
DNS Type 4가지
순서대로 권한 범위가 적다.
1) Local DNS Server(Default DNS Server)
- Local DNS 서버는 hierarchy 구조에 포함되지 않으며, 클라이언트 가까이에 있는 캐시 서버다.
- DNS 쿼리를 날릴 때 가장 먼저 요청되는 default name server
2) root DNS
- 전 세계 13개 기관에서 루트 서버 관리. IP 주소 찾기 위해서 항상 이 root에게 먼저 요청.
- root server가 local name server에게 return하는 방식으로 매핑
- root부터 트리구조로 되어있으며 바로 아래 단계를 1단계 도메인이라고 한다. **최상위 도메인 TLD(Top Level Domain)**이다.
- 최상위 도메인은 국가최상위도메인과 일반최상위도메인으로 구분된다.
3) TLD(Top Level Domain)
- com, org, net, edu..와 같은 탑레벨 도메인
4) Authoritative servers
- 기관에서 관장하는 서버
DNS record 종류
DNS Record는 DNS에 온 요청에 대해 어떻게 처리할 것인가를 나타낸 지침이다.
DNS 관리 서비스를 제공하는 cloudflare에 다양한 DNS 레코드 정보가 나와있다.
대표적인 4가지를 상세히 알아보도록 하자.
A record
도메인 주소와 서버의 IP 주소를 직접 매핑하는 방법이다.
예를 들어, cobinding.com이라는 도메인이 있고 EC2 등에서 설정한 서버의 IP 주소가 1.2.3이라고 가정하자.
가비아, cloudflare같은 서비스를 통해 cobinding.com-1.2.3을 직접 연동해주면, 사용자는 이 도메인 주소를 통해 서비스에 접근할 수 있다.
도메인 이름 | IP 주소 |
cobinding.com | 1.2.3 |
이 A record는 반드시 도메인과 IP가 1:1 매칭이 되는 것은 아니다.
관리자의 설정에 따라, 일대다 / 다대일도 될 수 있다.
도메인 이름 | IP 주소 |
cobinding.com | 1.2.3 1.2.4 1.2.6 |
CNAME record
Canonical Name의 약자로, 도메인 주소를 또 다른 도메인 주소로 매핑시키는 형태의 DNS record 타입이다.
아래 host aliasing을 통해 이 개념을 이해해보자.
host aliasing
DNS는 IP- hostname 매핑을 위해서 서버에 도메인 주소와 IP 주소를 쌍으로 저장해둔다.
naver.com 192.168.0.1
dev.naver.com | naver.com |
google.com | 172.17.0.1 |
사용자가 요청하면 이 테이블에서 정보 꺼내옴
하나의 행을 레코드(record)라고 하며, 저장되는 타입에 따라 A Record와 CNAME으로 구분한다.
- A Record: 직결 매핑. 도메인 - IP 주소가 그대로 매핑됨
- CNAME: 사용자가 dev.naver.com을 요청하면 서버는 naver.com을 리턴하고, 사용자는 다시 naver.com을 통해서 192.168.0.1을 응답한다.
A RECORD는 서버의 IP 주소를 한 번에 알 수 있지만, IP 주소가 자주 바뀌면 번거로울 수 있다.
CNAME은 IP 주소가 자주 변경되는 환경에서 유연하게 대응할 수 있지만, 실제 IP 주소를 얻기 위해 여러 번 요청해야 한다.
- IP: 프로세스가 돌고 있는 머신의 Network Interface Card에 부여된 Identity → IPv4, host name(domain name)
- Port: 실행 중인 프로세스에 접근할 수 있는 문