DNS: 인터넷의 디렉터리 서비스
호스트 이름(host name)
- 호스트의 식별자 중 하나
- 호스트는 IP 주소(IP address)로도 식별됨
- 예시 : www.facebook.com, www.google.com …
- 사용 이유(장점)
- 호스트 이름은 기억하기 쉬워 사용자가 편리함
- 호스트 이름은 기억하기 쉬워 사용자가 편리함
- 단점
- 호스트 이름은 인터넷에서의 호스트 위치에 대한 정보를 거의 제공하지 않는다.
- 호스트 이름은 라우터가 처리하는데 어려움이 있다.
← 가변 길이의 알파뉴메릭 문자로 구성되어 있기 때문
DNS가 제공하는 서비스
인터넷 디렉터리 서비스(DNS)가 필요한 이유
- 라우터와 사람의 차이로 인해 호스트 이름을 IP 주소로 변환해 주는 서비스 필요
→ 인터넷 DNS(domain name system)의 주요 임무- 사람은 기억하기 쉬운 호스트 이름 식별자를 좋아함
- 라우터는 고정 길이의 계층구조를 가진 IP 주소를 좋아함
DNS란?
- DNS 서버들의 계층 구조로 구현된 분산 데이터베이스
- 호스트가 분산 데이터베이스를 질의하도록 허락하는 애플리케이션 계층 프로토콜
- DNS 서버는 주로 BIND 소프트웨어를 수행하는 유닉스 컴퓨터이다.
- BIND → Berkeley Internet Name Domain
- BIND → Berkeley Internet Name Domain
- DNS 프로토콜은 UDP상에서 수행되고 포트 번호 53번을 사용
- 다른 애플리케이션 프로토콜들이 사용자가 제공한 호스트 이름을 IP 주소로 변환하기 위해 사용
- 사용자가 제공한 호스트 이름 → HTTP, SMTP, FTP 등
HTTP에서의 DNS 수행 과정
- 사용자 호스트에서 수행되는 브라우저(HTTP 클라이언트)가 URL을 요청할 때
→ 사용자의 호스트가 HTTP 요청 메시지를 웹 서버로 보내기 위해 IP주소를 얻어야 함 - 수행 과정
- 같은 사용자 컴퓨터 DNS 애플리케이션 클라이언트 측을 수행
- 브라우저 URL로부터 호스트 이름을 추출
- 추출한 호스트 이름을 DNS 애플리케이션의 클라이언트 측에 넘김
- DNS 클라이언트는 호스트 이름에 대한 IP 주소를 가진 응답을 받음
- 브라우저가 DNS로부터 IP 주소를 전달받음
- 브라우저는 해당 IP 주소와 그 주소의 80번 포트에 위치하는
HTTP 서버 프로세스로 TCP 연결을 초기화
DNS 사용으로 인해 발생하는 추가 지연
- DNS는 DNS를 사용하는 인터넷 애플리케이션에게 추가 지연을 준다.
- But, 원하는 IP 주소는 가까운 DNS 서버에 캐싱되어 있음
→ 평균 DNS 지연뿐만 아니라 DNS 네트워크 트래픽 감소에 도움을 줌
DNS: 클라이언트-서버 패러다임을 통한 주요 네트워크 기능
- DNS 프로토콜은 클라이언트-서버 구조로 통신하는 종단 사이에서 수행
- 통신하는 종단 시스템 사이에서 DNS 메시지를 전달해야 함
→ 하위 종단 트랜스포트 프로토콜에 의존 → DNS는 애플리케이션 계층 프로토콜 - DNS의 역할은 웹 파일 전송, 전자메일 애플리케이션과는 다름
- DNS는 사용자가 직접 상호작용하는 애플리케이션이 아님
- DNS는 핵심적인 인터넷 기능을 제공한다.
- 사용자와 다른 애플리케이션을 위해 호스트 이름을 하위 IP 주소로 변환
- 네트워크 가장자리에서 클라이언트-서버를 이용하여
이름-주소 사이의 변환 프로세스를 구현
DNS가 제공하는 중요한 추가 서비스
호스트 에일리어싱(host aliasing)
- 복잡한 호스트 이름을 가진 호스트는 하나 이상의 별명을 가질 수 있다.
- 예시 - relay1.west-coast.enterprise.com 같은 호스트의 경우
- enterprise.com이나 www.enterprise.com 같은 2개의 별칭을 가질 수 있음
- relay1.west-coast.enterprise.com를 정식 호스트 이름이라고 함
- 정식 호스트 이름(canonical hostname)
- 정식 호스트 이름(canonical hostname)
- DNS는 제시한 별칭 호스트 이름에 대한 정식 호스트 이름을 얻기 위해 이용 가능
메일 서버 에일리어싱(mail server aliasing)
- 전자 메일 주소는 기억하기 쉬운 것이 좋음
→ But, 메일 서버의 호스트 이름은 더 복잡함 - DNS는 별칭으로부터 정식 호스트 이름을 얻기 위해 메일 애플리케이션에 의해 수행
- MX 레코드는 기업의 메일 서버와 웹서버가 같은 호스트 이름(별칭)을 갖는 것을 허용
- 예 : 기업 웹 서버와 메일 서버 둘 다 enterprise.com이라고 부를 수 있음
부하 분산(load distribution)
- DNS는 중복 웹 서버 같은 여러 중복 서버 사이에 부하를 분산하기 위해서 사용 가능
- 인기 사이트는 여러 서버에 중복되어 있음
→ 각 서버가 다른 종단 시스템에서 수행되고 다른 IP 주소를 갖는다.
- 인기 사이트는 여러 서버에 중복되어 있음
- 중복 웹 서버의 경우, 여러 IP 주소가 하나의 정식 호스트 이름과 연관됨
- DNS 데이터베이스는 이런 IP 주소 집합을 갖고 있음
- DNS 데이터베이스는 이런 IP 주소 집합을 갖고 있음
- 클라이언트가 주소 집합으로 매핑하는 호스트 이름에 대한 DNS 질의
→ 서버가 IP 주소 집합 전체를 가지고 응답 - DNS 순환 방식
- 각 응답에서의 주소는 순환식으로 전송
- DNS의 순환 방식은 중복 서버들 사이에서 트래픽을 분산하는 효과를 낸다.
← 클라이언트는 주소 집합 내부의 첫 번째 IP 주소로 HTTP 요청 메시지를 보내기 때문 - 해당 방식은 전자메일에서도 사용되어 여러 메일 서버에 동일한 별칭을 가질 수 있음
DNS 동작 원리 개요
- 호스트 이름을 IP 주소로 변환하는 서비스에 초점을 맞춰 설명
호스트 이름을 IP 주소로 변환하는 과정
가정
- 사용자 호스트에서 실행되는 어떤 애플리케이션이 호스트 이름을 IP 주소로 변환
- 어떤 애플리케이션 → 웹 브라우저나 메일 클라이언트
변환 과정
- 그 애플리케이션은 변환될 호스트 이름을 명시하여 DNS 측의 클라이언트 호출
- 사용자 호스트의 DNS는 네트워크에 질의 메시지를 보낸다.
- 모든 DNS 질의와 응답 메시지는 포트 53 UDP 데이터그램으로 보내짐
- 모든 DNS 질의와 응답 메시지는 포트 53 UDP 데이터그램으로 보내짐
- 사용자 호스트의 DNS는 요청한 매핑에 해당하는 DNS 응답 메시지를 받는다.
- DNS 응답 메시지를 받기 전에 수 밀리 초 ~ 몇 초의 지연이 걸린다.
- DNS 응답 메시지를 받기 전에 수 밀리 초 ~ 몇 초의 지연이 걸린다.
- 이제 매핑은 호출한 애플리케이션으로 전달된다.
변환 과정 해석
- 사용자 호스트의 호출한 애플리케이션 관점에서
DNS는 간단하고 직접적인 변환 서비스를 제공하는 블랙박스와 같음- 블랙박스 구성
- DNS 서버뿐만 아니라, DNS 서버와 질의를 하는 호스트 사이에서
어떻게 통신하는지를 명시하는 애플리케이션 계층 프로토콜로 구성되어 있다.
- DNS 서버뿐만 아니라, DNS 서버와 질의를 하는 호스트 사이에서
- 블랙박스 구성
- DNS의 간단한 설계로 모든 매핑을 포함하는 하나의 인터넷 네임 서버를 생각할 수 있음
- 이러한 중앙 집중 방식에서의 클라이언트와 DNS 서버의 동작
- 클라이언트는 모든 질의를 단일 네임 서버로 보냄
- DNS 서버는 질의 클라이언트에게 직접 응답
- 이 방식은 간단하지만 수많은 호스트를 가진 현대 인터넷에는 적합하지 않음
- 이러한 중앙 집중 방식에서의 클라이언트와 DNS 서버의 동작
DNS 중앙 집중 방식에서의 단점
서버의 고장
: 네임 서버가 고장 나면, 전체 인터넷이 작동하지 않는다.트래픽양
: 단일 DNS 서버가 모든 DNS 질의를 처리해야 한다.- 수많은 호스트에서 발생한 모든 HTTP 요청과 전자메일 메시지의 처리
- 수많은 호스트에서 발생한 모든 HTTP 요청과 전자메일 메시지의 처리
먼 거리의 중앙 집중 데이터베이스
- 단일 DNS 서버가 모든 질의 클라이언트로부터 가까울 순 없다.
→ 매우 심각한 지연을 일으킬 수도 있다.
- 단일 DNS 서버가 모든 질의 클라이언트로부터 가까울 순 없다.
유지관리
: 단일 네임 서버는 모든 인터넷 호스트에 대한 레코드를 유지해야 한다.- 중앙 집중 데이터베이스
→ 거대해지고 모든 새로운 호스트를 반영하기 위해 자주 갱신이 필요함 - 중앙 집중 데이터베이스에 호스트를 등록 허용하는 것은 인증 문제가 생김
- 중앙 집중 데이터베이스
요약
- 단일 DNS 서버에 있는 중앙 집중 데이터베이스는 확장성이 없다.
→ 결과적으로 DNS는 분산되도록 설계됨 - DNS는 분산 데이터베이스가 인터넷에 잘 구현된 사례
분산 계층 데이터베이스
- DNS는 많은 서버를 이용하고, 이를 계층 형태로 구성하며 전 세계로 분산 시킴
→ 확장성 문제를 해결하기 위해 - 어떠한 단일 DNS 서버도 인터넷에 있는 모든 호스트에 대한 매핑을 갖지 않는다.
→ 대신, 모든 호스트에 대한 매핑은 DNS 서버 사이에 분산된다.
계층으로 구성된 세 유형의 DNS 서버
루트 DNS 서버
: 루트 네임 서버는 TLD 서버의 IP 주소들을 제공- 1000개 이상의 루트 서버 인스턴스가 전 세계에 흩어져있음
- 루트 서버들은 13개의 다른 루트 서버 복사체
- 12개의 다른 기관에서 관리됨
- 인터넷 할당 번호 관리기관에 의해 조정됨
최상위 레벨 도메인(TLD) 서버
: 책임 DNS 서버에 대한 IP 주소를 제공- TLD를 지원하는 네트워크 인프라는 크고 복잡함
- 종류
- com, org, net, edu, gov 같은 상위 레벨 도메인
- 베리사인 글로벌 레지스트리 서비스사는 com TLD에 대한 서버 담당
- 에듀코즈사(Educause)는 edu TLD에 대한 TLD 서버를 담당
- kr, uk, fr, ca, jp 같은 모든 국가의 상위 레벨 도메인에 대한 TLD 서버
- 서버 클러스터라고도 함
- 서버 클러스터라고도 함
- com, org, net, edu, gov 같은 상위 레벨 도메인
- TLD를 지원하는 네트워크 인프라는 크고 복잡함
책임 DNS 서버
- 인터넷에 접근하기 쉬운 호스트를 가진 모든 기관은
- 호스트 이름을 IP 주소로 매핑하는 공개적인 DNS 레코드를 제공해야 함
- 인터넷에 접근하기 쉬운 호스트 → 웹 서버와 메일 서버
- 인터넷에 접근하기 쉬운 호스트 → 웹 서버와 메일 서버
- 기관의 책임 DNS 서버는 이 DNS 레코드를 가지고 있다.
- 기관은 이 레코드를 갖도록 자신의 책임 DNS 서버의 구현을 선택 가능
- 또한 일부 서비스 제공자의 책임 DNS 서버에 이 레코드를 저장하도록 비용 지불
- 대학과 큰 기업들은 자신의 기본 책임 DNS 서버와 보조 책임 DNS 서버를 유지 및 구현
로컬 DNS 서버
- 루트, TLD, 책임 DNS 서버들은 모두 DNS 서버들의 계층 구조를 가진다.
- DNS의 또 다른 중요한 형태는 로컬 DNS 서버이다.
- 로컬 DNS 서버는 서버들의 계층 구조에 엄격하게 속하지 않는다.
→ But, DNS 구조의 중심에 있음. - ISP들은 로컬 DNS 서버(또는 디폴트 네임 서버)를 갖는다.
- 여기서의 ISP는 대학이나 주거지역 ISP와 같은 ISP이다.
- 이 ISP는 로컬 DNS 서버로부터 IP 주소를 호스트에게 제공
- 네트워크 상태 창에 접근하여 로컬 DNS 서버의 IP 주소를 결정할 수 있음
- 호스트의 로컬 DNS 서버는 대체로 호스트에 가까이 있다.
- 로컬 DNS 서버는 서버들의 계층 구조에 엄격하게 속하지 않는다.
- 기관 ISP에서 로컬 DNS 서버는 호스트와 같은 LAN상에 있을 수 있다.
- 주거지역 ISP는 전형적으로 몇 개의 라우터 범위 안에서 호스트로부터 떨어져 있음
- 호스트가 DNS 질의를 보냄
→ 이 질의는 먼저 프락시로 동작하는 로컬 DNS 서버에 전달
→ 그 로컬 DNS 서버는 이 질의를 DNS 서버 계층으로 전달
- 호스트가 DNS 질의를 보냄
DNS 서버 상호 작용 예시
- TLD 서버가 호스트 이름에 대한 책임 서버를 알 때
- 가정
- 호스트 cse.nyu.edu가 gaia.cs.umass.edu의 IP주소를 원한다.
- cse.nyu.edu에 대한 NYU의 로컬 DNS 서버 → dns.nyu.edu
- gaia.cs.umass.edu에 대한 책임 DNS 서버 → dns.umass.edu
- 과정
- 호스트 cse.nyu.edu가 먼저 자신의 로컬 DNS 서버 dns.nyu.edu에게
DNS 질의 메시지를 보냄- 질의 메시지에는 변환되어야 하는 호스트 이름이 포함된다.
- 변환되어야 하는 호스트 이름 = gaia.cs.umass.edu
- 로컬 DNS 서버는 그 질의 메시지를 루트 DNS 서버에게 전달
- 루트 DNS 서버는 edu를 인식하고,
edu에 대한 책임을 가진 TLD 서버의 IP 주소 목록을 로컬 DNS 서버에게 보낸다. - 로컬 DNS 서버는 질의 메시지를 TLD 서버로 보낸다.
- 이후 TLD 서버는 umass.edu를 인식
→ dns.umass.edu로 이름 지어진 책임 DNS 서버의 IP 주소로 응답 - 로컬 DNS 서버는 직접 dns.umass.edu로 질의 메시지를 보내고,
gaia.cs.umass.edu의 IP 주소로 응답
- 호스트 cse.nyu.edu가 먼저 자신의 로컬 DNS 서버 dns.nyu.edu에게
- 해당 과정에서 하나의 호스트 이름 매핑을 얻기 위해 발생한 DNS 메시지
→ 질의 메시지 4번과 응답 메시지 4번, 총 8번 보내짐- 질의 전송을 줄이기 위해 DNS 캐싱 방법을 사용
DNS 서버 상호 작용 예시
- TLD 서버가 호스트 이름에 대한 책임 서버를 모를 때
- 일반적으로는 TLD 서버가 호스트 이름에 대한 책임 서버를 알지 못함
- 대신, TLD 서버는 호스트 이름에 대한 책임 DNS를 아는 중간 DNS 서버만 알고 있음
- 가정
- A 대학교가 대학에 대한 DNS 서버, 즉 dns.umass.edu를 갖고 있다.
- A 대학교의 각 학과도 자신의 DNS 서버를 가지고 있다.
- 각 학과 DNS 서버가 학과 안의 모든 호스트를 책임진다고 가정
- 각 학과 DNS 서버가 학과 안의 모든 호스트를 책임진다고 가정
- 과정
- 중간 DNS 서버 dns.umass.edu가 cs.umass.edu로 끝나는 호스트에 대한 질의를 받음
- dns.cs.umass.edu의 IP 주소를 dns.nyu.edu로 전달
- dns.cs.umass.edu는 cs.mass.edu로 끝나는 모든 호스트에 대한 책임을 가짐
- dns.cs.umass.edu는 cs.mass.edu로 끝나는 모든 호스트에 대한 책임을 가짐
- 로컬 DNS 서버 dns.nyu.edu는 책임 DNS 서버에게 질의를 보냄
- 책임 DNS 서버는 로컬 DNS 서버에게 원하는 매핑 결과를 돌려주는 역할
- 책임 DNS 서버는 로컬 DNS 서버에게 원하는 매핑 결과를 돌려주는 역할
- 다음, 로컬 DNS 서버는 요청한 호스트에게 그 매핑 결과를 전달
- 이 경우에는 전체 10번의 메시지를 보내게 된다.
재귀적 질의와 반복적 질의
- TLD 서버가 호스트 이름에 대한 책임 서버를 알 때의 과정
→ 재귀적 질의와 반복적 질의를 사용한다.
- 일반 질의의 전형적인 형식
- 요청하는 호스트로부터 로컬 DNS 서버까지의 질의 → 재귀적 질의
- 나머지 → 반복적 질의
- 일반 질의의 전형적인 형식
재귀적 질의(recursive query)
- css.nyu.edu로부터 dns.nyu.edu로 보내는 질의는
자신을 대신하여 필요한 매핑을 얻도록 dns.nyu.edu에게 요구
- css.nyu.edu로부터 dns.nyu.edu로 보내는 질의는
반복적 질의(iterative query)
- 모든 응답이 dns.nyu.edu에게 직접 보내진다.
- 모든 응답이 dns.nyu.edu에게 직접 보내진다.
- 이론상, DNS 질의는 반복적이고 재귀적일 수 있다.
- 모든 질의가 재귀적인 DNS 질의를 보여주는 예시
DNS 캐싱(caching)
- DNS는 지연 성능 향상과 네트워크의 DNS 메시지 수를 줄이기 위해 캐싱 사용
DNS 캐싱의 아이디어
- 질의 사슬에서 DNS 서버가 DNS 응답을 받았을 때,
- DNS 서버는 로컬 메모리에 응답에 대한 정보를 저장할 수 있다.
- 예시
- 로컬 DNS 서버 dns.nyu.edu가 임의의 DNS 서버로부터 응답을 받을 때
→ 응답에 포함된 정보를 저장할 수 있다.
- 호스트 이름과 IP 주소 쌍 등이 정보로 저장됨
- 이후, 다른 호스트 이름으로부터 같을 질의가 DNS 서버로 도착
→ DNS 서버는 호스트 이름에 대한 책임이 없어도, 원하는 IP 주소 제공 가능
- 로컬 DNS 서버 dns.nyu.edu가 임의의 DNS 서버로부터 응답을 받을 때
- 호스트 DNS와 IP 주소 사이의 매핑과 호스트는 영구적인 것이 아님
→ DNS 서버는 일정 기간 이후에 저장된 정보를 제거- 일반적으로 2일로 설정
- 일반적으로 2일로 설정
- 예시
- 로컬 DNS 서버는 또한 TLD 서버의 IP 주소를 저장할 수 있다.
→ 로컬 DNS 서버가 질의 사슬에서 루트 DNS 서버를 우회하게 한다.- 이 동작은 자주 일어남