본문 바로가기

CS/Computer Network

[네트워크] Ch2.4 DNS(Domain Name System)

 

본 글은 학교 네트워크 수업을 들으며, "Computer Networking: A Top-Down Approach 8ed(컴퓨터 네트워킹: 하향식 접근 제8판)"을 기반으로 공부한 내용을 정리한 글입니다.

 

Ch2.4 DNS(Domain Name System)

- 우리가 평소에 보는 URL의 host name은 `www.facebook.com`처럼 가변 길이의 문자열 형태인데, 이는 라우터가 처리하는데 어려움이 있음.

- 따라서 host는 `121.7.106.8` 처럼 IP address로도 식별되는데, 이는 아무래도 사람이 보고 외우거나 이해하기는 쉽지 않음.

 

- 즉, 사람은 host name 형태를, 라우터는 고정 길이의 IP 주소를 선호함

=> 절충안 필요

=> DNS 서비스 등장!!

 

DNS

- 일종의 분산 데이터베이스임.

- client-server 모델임 (DNS 서버가 따로 있음)

- host name <-> IP address 번역함. 즉, 호스트 이름을 IP address로 변환해줌.

- UDP port 53에서 돌아감

이유 : TCP connection을 유지하는 resource가 큰데, DNS는 전세계 모든 pc에 사용되어야 하니까 서버 부담이 크게 되니까. 또한, 전송하는 패킷 사이즈가 매우 작으므로 신뢰성이 굳이 필요x. (못 받으면 다시 전송하면 됨)

nslookup 명령어를 사용해, 특정 host의 local DNS server와 그 서버의 address를 알 수 있음. 

 

DNS Servers

DNS Server에는 3개의 class가 있음 : 분산된, 계층 데이터베이스 구조. 

1. `Root DNS server`

2. `Top-level Domain(TLD) server`

3. `Authoritative(권위있는) DNS server`

 

DNS 서버 하나가지고 다 하면, 서버 고장날 수도 있고, 트래픽 양도 많아질거고, DNS 서버랑 클라이언트가 멀 수도 있고 하는 등의 문제가 있으니까.

대략 저런 계층 구조를 가짐.

저 아래는 `local DNS server`들이 있어서, 얘네들은 DNS 계층 구조에 포함되어 있진 않음.

 

1. Root DNS server

 

2. Top-level Domain(TLD) server

 

3. Authoritative(권위있는) DNS server