본문 바로가기

컴퓨터 사이언스/네트워크

[모바일 컴퓨팅] DNS (Domain Name System)

Host Name과 IP address

- host name

사람이 읽기 편한 형태로 되어있다.

길이가 가변적이며, 전부 알파벳으로 되어있다. (근래에는 한글 도메인 등 다른 character값도 지원한다.)

location에 대한 작은 정보만을 제공한다.

- IP address

라우터가 다루기 쉬운 형태로 되어있다.

길이가 고정되어 있으며, 32bits의 binary number로 이루어진다. (보기 편하게 8bits의 decimal number로 표현)

계층적이며, 각 숫자가 location과 연관된다.

 

Host name이 사용되는 이유

- 가장 큰 이유는 사람들이 외우기 편하다는 편리함일 것이다.

- 이용하고자 하는 서비스의 IP address가 변하더라도 host name이 변하지 않는다면, 사용자는 더욱 편리할 것이다.

- host name에 여러 개의 IP address를 할당해 load balancing이 가능하다.

서버의 부하를 줄여주어 서버가 비교적 안정적이다.

또한, 클라이언트와 가까운 서버를 선택하게 해주어 지연율을 낮출 수 있으며

사용자에 따라 다른 컨텐츠를 제공해줄 수 있다.

- 한 IP address에 여러 hostname을 연결해 편리함을 증대시킬 수도 있다.

(ex. youtube.com, youtu.be)

 

DNS가 나오기 전에는?

- FTP를 통해 중앙 서버에서 hosts.txt를 받아 hostname과 IP address를 연결지었다.

 

DNS (Domain Name Server)

- 여러 개의 Zone으로 나뉘어 저장되어있다.

- Root - TLD(Top-Level Domain) - Authoritative DNS server 의 계층적 구조

- Local DNS server와 클라이언트의 Resolver Software의 통신으로 변환된다.

 

Distributed Hierarchichal Database

- 도메인 정보가 한 서버에 다 저장되어 있다면 트래픽을 감당할 수 없을 것이다.

- 또한, 서버가 공격받으면 모든 네트워크에 지장이 생기기 때문에 보안에 취약하다.

 

TLD (Top-Level Domains)

- TLD는 세 개의 타입이 있다.

Generic Top Level Domains (gTLD): 3-character가 기관을 나타낸다.

ex) gov, mil, edu, org, com, net

Country Code Top Level Domains (ccTLD): 2-character가 국가나 지역을 나타낸다.

ex) cn, kr, us, jp

Reverse Domains : IP address로 Host name를 찾기 위한 특수한 도메인이다.

-gTLD는 공신력있는 ICANN(include IANA)에서 관리된다.

- FQDN(fully qualified domain name) : host name + domain name

ex) sports.naver.com

- 200개 이상의 TLD가 존재

- 투바라는 섬을 가리키는 .tv 도메인은 다른 용도로 사용된다.

이를 이용한 domain hack은 사용자를 헷갈리게 해, 사용자가 원하는 사이트가 아닌 다른 사이트에 접속하게 만든다.

ex) cnn.tv

 

DNS Root

- A부터 M까지 라벨링된 13개의 root server가 존재한다.

 

DNS example

 

Reverse Mapping (IP address to Host name)

- IP address를 통해 Host name을 알아낸다.

- IP address는 상위 숫자가 더 넓은 범위의 정보를 담는 반면에

host name은 하위 캐릭터가 더 넓은 범위의 정보를 담는다.

ex) 12.123.123.11, www.abc.com

- in-addr.arpa 서버의 계층적 구조가 위와 같기 때문에 IP address를 뒤집어 요청해야한다.

ex) 12.123.123.11 -> 11.123.123.12.in-addr.arpa

 

DNS Caching

- host name을 이용할 때 마다, DNS query를 하는 것은 지연율을 높여주고 비효율적일 것이다.

- Caching은 이러한 오버헤드를 줄여준다.

- TLD server의 정보가 변경되는 일은 정말 흔치 않고, 같은 사이트를 방문하는 일은 비일비재하다.

- Local DNS server가 이러한 정보를 캐싱한다.

- 캐시된 정보가 클라이언트에게 주어진다면, 서버는 'unauthoritative'한 정보라고 명시해주며, TTL값을 함께 제공해준다.

 

DNS message format

QR Indicates if the message is a query (0) or a reply (1) 1
OPCODE The type can be QUERY (standard query, 0), IQUERY (inverse query, 1), or STATUS (server status request, 2) 4
AA Authoritative Answer, in a response, indicates if the DNS server is authoritative for the queried hostname 1
TC TrunCation, indicates that this message was truncated due to excessive length 1
RD Recursion Desired, indicates if the client means a recursive query 1
RA Recursion Available, in a response, indicates if the replying DNS server supports recursion 1
Z Zero, reserved for future use 3
RCODE Response code, can be NOERROR (0), FORMERR (1, Format error), SERVFAIL (2), NXDOMAIN (3, Nonexistent domain), etc.[33] 4

DNS compression format

DNS resource records

- RR format : name, value, type, ttl

- type 별 값의 의미

A : name is hostname, value is IP address

PTR : name is reversed IP quads, value is hostname

NS : name is domain, value is hostname of authoritative name server for this domain

CNAME : name is alias name, value is canonical name

MX : name, value is name of mail server

 

DNS 취약점

- DNS는 기본적으로 authentication가 없다.

DNS reply가 올바른 곳에서 전송된지 모르고, 올바른 곳에서 전송됐을지어도 그 정보가 확실하다고 할 수 없다.