DNS (Domain Name System)
우리가 특정 웹사이트에 접근하기 위해서는 해당 서버의 IP address를 알아야 하는데, 우리는"xxxx.com"과 같은 domain name (host name)밖에 모른다. 이 때 DNS를 이용하여 IP 주소를 찾을 수 있다.
DNS는 client-server 구조로 짜여진 L5의 application protocol로, L4로는 UDP를 사용한다.
IP address와 host name(URL or FQDN: Fully Qualified Domain Name)을 매핑시키는 역할을 한다.
IP address (32bit) : 머신이 읽을 수 있는 주소로, datagram 주소 지정에 사용
// 32bit는 IPv4이다 (0~255)
host name (URL or FQDN) : 사람이 사용하는 주소
(ex. www.yahoo.com) ← 이 전체를 FQDN (Fully Qualified Domain Name) 이라고 한다.
host이름 / 동네 이름
DNS의 가장 기본적인 기능은 IP주소를 알아내는 것이지만, hostname ↔ IP address 다 가능
- Forwarding DNS (정방향 DNS) : hostname → IP address
- Reverse DNS (역방향 DNS) : IP address → hostname (receiving mail server가 sending mail server를 인증하기 위해 사용됨)
DNS service, structure
DNS가 제공하는 service들
-
- Forwarding DNS (정방향 DNS) : hostname → IP address
- Reverse DNS (역방향 DNS) : IP address → hostname (receiving mail server가 sending mail server를 인증하기 위해 사용됨)hostname → IP address 변환
DNS의 가장 기본적인 기능은 IP주소를 알아내는 것이지만, hostname ↔ IP address 다 가능
- host aliasing
- mail server aliasing
- load distribution
: 동일한 도메인에 접근하는 클라이언트들에게 IP address를 distributed하게 매핑시켜줌
centralize DNS로 쓰지 않는 이유
- single point of failure : 걔가 없어지면 망함
- traffic volume : 그 server로 밀려 들어오는 traffic들을 감당하기 어려움
- distant centralized database : 멀다 → 느리다
- maintenance : 유지보수가 어려움.
DNS : Distributed, hierarchical database
Root DNS Servers
- 최상위 서버
- TLD server의 (hostname & IP address) pair를 가지고 있음
TLD (Top-Level Domain) Servers
- authoritative server의 (hostname & IP address) pair를 가지고 있음
Authoritative domain servers
- 해당 기관 or ISP가 소유하고 있는 DNS 서버
- 최종 host들의 (hostname & IP address) pair를 가지고 있음
- organization or service provider에 의해 유지보수
LDNS (Local DNS name servers)
client와 같은 ISP에 속한 local한 DNS server이다.
각 지역의 ISP, company, university 등이 하나씩 소유 → default name server 라고도 함.
client가 DNS query를 보낼때, 직접 root server한테 보내지 않고 LDNS에 보낸다.
일종의 proxy 역할을 한다. (특별히 어느 계층에 있는건 아님)
DNS name resolution - iterated & recursive
iterated query
1. client가 자신이 속한 ISP의 LDNS server에 DNS query를 보냄.
2. LDNS가 root server에게 .edu의 TLD server의 IP 주소를 묻는다 (root hints file)
//만약 LDNS (proxy)가 최종 목적지의 IP address를 알고 있다면 바로 감
3. root server가 LDNS에게 .edu의 TDL server IP address를 알려줌
4,5. LDNS가 TDL server에게 authoritative DNS server의 IP address를 요청 후 받음
6,7. LDNS가 authoritative server에게 최종 host의 IP 주소를 요청, 받음.
8. 실려온 최종 IP address로 TCP connection을 맺는다.
iterated query 방식의 단점
: LDNS가 busy하다.
recursive query
requesting host가 LDNS 서버에 query를 보내면
root DNS server는 TLD server한테
TLD server는 authoritative server한테 요청한다.
5, 6, 7에서 다 최종 web server의 IP address가 실려간다.
recursive query 방식의 단점
: root DNS server의 overhead가 커진다.
: 윗계층의 traffic이 증가해 오버헤드가 커짐
=> 이런 이유 떄문에 server가 OK 해야지만 함. 항상 들어주지 않음.
DNS records
type = A
hostname으로 IP address를 알고 싶을때 사용한다
type = CNAME
별칭 host 이름 (host alias name)으로 실제 host 이름 (canonical name)을 알고싶을 때 사용한다
type = NS
도메인 이름으로 실제 host 이름을 알 수 있는 authoritative DNS 서버의 host name을 알고싶을 때 사용한다
type = MX
도메인 이름으로 메일 서버의 실제 host name을 알고 싶을 때 사용한다
DNS protocol, messages
맨 위부터 3줄까지가 header, 그 뒤가 payload이다.
identification
:16bit
:queyr를 보낼 때 지정한 id를 reply id에 복사
=> reply 를 받으면, 이 id 값을 보고 어떤 질문에 대한 reply인지 식별 가능
flag
:16bit로, 16개의 flag가 가능하다.아래 정보들이 담긴다.
- 현재 주고받는 데이터가 query인지 reply인지 구분
- recursion을 요구하는지 결정 (recursion desired)
'네트워크' 카테고리의 다른 글
[네트워크] Chap 2.7 - Video streaming (DASH & CDN) (2) | 2024.11.17 |
---|---|
[네트워크] Chap 2.6 - P2P vs Client-Server (1) | 2024.11.16 |
[네트워크] Chap 2.4 - E-mail, SMTP, IMAP (0) | 2024.11.14 |
[네트워크] Chap 2.3 -Cookies, Web caches(proxy server), HOL blocking (7) | 2024.11.13 |
[네트워크] Chap 2.2 - HTTP (0) | 2024.11.12 |