DNS
도메인 이름을 IP 주소로 바꾼다.
- 도메인 이름은 사람이 웹사이트에 접속하기 위해 사용하는 것이다.
- 컴퓨터는 이를 이해하지 못하기 때문에 IP 주소로 바꿔야 한다.
- 이를 바꿔주는 것이 DNS이다.
- 분산된 데이터베이스(네임 서버)가 계층 구조를 이룬 형태이다

제공 서비스
DNS가 제공하는 서비스에는 다음과 같은 것들이 있다.
- 도메인 명을 IP 주소로 바꿔주기
- 호스트에 별칭 부여
- 도메인명이 너무 복잡하거나 한 경우 또 별칭을 부여할 수 있다.
- 이때 도메인명에 부여한 별칭을 alias name
- 별칭이 붙은 나에게 실제로 서비스를 제공하는 호스트의 도메인 명을 canonical name이라고 한다.
- 메일 서버에 별칭 부여
- 메일 서버의 실제 도메인명은 복잡할 것인데 메일 서버의 도메인 명이 기억하기 쉬워야 메일 보내기 편할 것이다. 그래서 원래 도메인명에 별칭을 부여할 수 있다.
- 작업 분산
- 인기가 많은 서비스의 경우 여러 서버를 둘 것이다. 이들은 실제로 다른 호스트 위에 돌아가는 서버라 ip가 다르다.
- DNS는 이 IP들에게 모두 하나의 도메인명을 대응신키다.
- 따라서 도메인의 응답으로 IP 주소 여러개가 주어진다.
- 도메인 시스템 서버는 이 주소 묶음의 값의 순서를 바꿔가며 작업을 분산시킨다. 클라이언트는 보토 그냥 첫번째 주소를 사용하여 순서를 바꾸는 것 만으로 작업으 분산시킬 수 있다.
분산 시스템
DNS는 중앙에 하나의 서버를 두지 않는다. 이는 다음과 같은 이유가 있다.
- 중앙의 하나의 서버가 있으니 고장이 나면 전체 인터넷이 고장난다.
- 한 서버가 전 세계에서 오는 트래픽을 감당하면 부하가 올 수도 있다.
- 서버로부터 거리가 먼 지역은 지연 시간이 길어질 수도 있다.
구성 요소
루트 레벨 서버
탑 레벨 서버
- .com, .org 등 유명한 이름을 처리할 수 있는 서버
- authoritative 서버에 대한 아이피 주소를 준다
authoritative 서버
- 한 조직의 dns 서버이다.
- 예를 들어 네이버와 관련된 도메인명의 ip주소는 네이버의 authoritative 서버인 naver.com 서버가 줄 수 있다.
로컬 dns 서버
- 계층 구조에 딱 들어가는 서버는 아니다.
- ISP가 갖고 있고 여기에 여러 도메인명과 ip 주소가 캐싱되어있다.
- 그래서 클라이언트가 통신하려고 요청했을 때 isp에 들어오고 로컬 dns 서버로 가 빠르게 ip주소를 찾을 수도 있다.
작동 과정
반복적 쿼리 접근

예시의 경우
- 먼저 로컬 서버에게 물어본다.
- 캐싱이 된 것이 없다면 로컬 서버가 도메인명에 대한 ip를 모르니 루트 서버에게 edu 서버에 대한 ip 주소를 묻느다.
- 루트 서버가 로컬 서버에게 edu 서버의 ip 주소를 알려준다.
- 로컬 서버가 edu 서버에게 umass.edu 서버의 ip 주소를 묻는다.
- edu 서버가 umass.edu 서버의 ip 주소를 알려준다.
- 로컬 서버가 umass.edu 서버에게 gaia.cs.umass.edu에 대응하는 ip주소를 묻는다.
- umass.edu 서버가 로컬 서버에게 ip 주소를 알려준다.
- 로컬 서버가 알아낸 ip 주소를 캐싱한 후 호스트에게 준다.
재귀적 쿼리 접근

- 먼저 로컬 서버에게 물어본다.
- 캐싱이 된 것이 없다면 로컬 서버가 루트 서버에게 물어본다.
- 루트 서버가 edu 서버에게 물어본다.
- edu 서버가 umass.edu 서버에게 물어본다.
- umass.edu 서버가 edu 서버에게 ip 주소를 알려준다.
- edu 서버가 루트 서버에게 알려준다.
- 루트 서버가 로컬 서버에게 알려준다.
- 로컬 서버가 알아낸 ip 주소를 캐싱한 후 호스트에게 준다.
- 재귀적 쿼리 접근은 루트를 지나가는 횟수가 더 많아 부하가 걸릴 수도 있다. 따라서 반복적 접근 방식이 더 선호된다.
캐싱
- 로컬 dns 서버는 한번 알아낸 ip 주소를 캐싱한다.
- 이때 캐시에 타임아웃이 걸려있다.
- tld의 ip도 캐시해서 실제로는 루트를 잘 안 간다고 느낀다.
- 호스트의 도메인 명이 바뀌면 상대방은 타임아웃이 발생하기 전까지 이를 모르기 때문에 캐싱된 정보를 업데이트 해줘야 한다.
- 전세계에 있는 자신에 대한 매핑 정보를 업데이트 하는 것은 오래 걸린다.
등록
- dns에 새로운 자신의 도메인명과 ip 주소를 넣고 싶다면 이를 대신 해주는 회사인 dns registrar에게 돈을 내면 된다.