티스토리 뷰
IP
네트워크에서 통신을 위해 서로를 식별하는데 IP 주소를 이용한다. 그러나 우리는 대부분 IP주소를 이용해 웹사이트에 접근하지 않는다. 사용자가 사이트마다 IP주소를 기억하기 힘들고, 서버 IP가 변경된다면 새로운 IP주소를 받아와야하기 때문에 대부분 도메인 네임(www.naver.com 등)을 이용해 접근한다.
하지만 가변길이의 문자로 구성된 도메인네임을 라우터가 처리하기에는 어려움이 있는데, 이 때 사용자가 요청한 도메인네임을 라우터가 처리할 수 있는 IP 주소로 변환시켜주는 시스템이 DNS(Domain Name System)다.
DNS
호스트네임을 IP 주소로 변환해주는 서비스를 제공하는 분산형 데이터베이스 디렉터리 서비스이다. 애플리케이션 계층에서 동작하며 프로토콜은 UDP, 포트는 53을 이용한다.
분산 계층 데이터베이스 구조
DNS는 확장성을 위해 중앙집중형이 아닌, 분산 계층 데이터베이스 구조로 이루어져있다. 중앙집중형으로 이루어진 경우, 하나의 서버가 모든 트래픽을 처리/서버 고장시 인터넷 이용불가/유지보수의 어려움/거리에 의한 지연 등의 문제가 발생할 수 있다.
• 루트 DNS 서버
• TLD DNS 서버 : com, org, edu 같은 상위레벨 도메인 또는 kr, uk, fr 같은 모든 국가 코드 상위 도메인이 포함된다.
• 책임 DNS 서버 : facebook.com, amazon.com, pbs.org, nyu.edu, umass.edu 와 같이 호스트를 가진 기관은 기관의 책임 DNS 서버를 통해 DNS 레코드를 제공한다. 큰 기업이나 기관들은 기본책임 DNS 서버와 보조 책임 DNS 서버를 유지하고 구현한다.
DNS 동작원리
호스트가 특정 사이트에 접근하기 위해 도메인 주소를 브라우저에 입력하면 다음과 같은 일이 일어난다.
1. 호스트는 cse.nyu.edu 를 자신의 로컬 DNS 서버(dns.nyu.edu)에 질의를 보낸다. 질의에는 변환되어야하는 도메인네임(gaia.cs.umass.edu)이 포함되어있다.
2. 로컬 DNS 서버는 질의 메세지를 루트 DNS 서버에게 보낸다.
3. 루트 DNS 서버는 edu를 인식하고 edu에 대한 책임을 가진 TLD서버의 IP 주소 리스트를 로컬 DNS 서버에게 응답한다.
4. 로컬 DNS 서버는 질의 메세지를 TLD DNS 서버에게 보낸다.
5. TLD DNS 서버는 umass.edu를 인식하고 책임 DNS 서버의 IP 주소를 응답한다.
6. 로컬 DNS 서버는 질의 메세지를 책임 DNS 서버에게 보낸다.
7. 책임 DNS 서버는 gaia.cs.umass.edu의 IP를 응답한다.
8. 로컬 DNS 서버는 로컬 호스트에게 gaia.cs.umass.edu의 IP를 응답한다.
DNS 캐싱
DNS가 동작하는 예시 과정에서 재귀적 질의와 반복적 질의가 발생했다. 요청 호스트가 로컬 DNS 서버에게 자신을 대신해 질의에 대한 매핑을 얻도록 요구하므로 이는 재귀적 질의이다. 그러나 질의에 대한 응답 4개 중 3개는 로컬 DNS 서버가 대신 받으므로 이는 반복적 질의이다.
하지만 모든 DNS 요청에서 8번 혹은 그 이상의 메세지를 주고받게되면 네트워크에 부담이 갈 수 있는데, 다행히 DNS 서버가 응답을 받았을 때 로컬 메모리에 응답을 저장할 수 있다.
로컬 DNS 서버는 TLD 서버의 IP 주소를 저장할 수 있는데 만약 위와 같은 질의(gaia.cs.umass.edu의 IP주소)가 한 시간 뒤에 또 요청된다면, 로컬 DNS 서버는 루트 DNS 서버를 우회해 곧바로 TLD 서버에게 질의를 보낼 수 있게된다.
물론 DNS와 IP 사이의 매핑은 영구적이지 않기 때문에 DNS 서버는 일정기간이 지나게되면 저장된 정보를 제거한다.
그 외에 DNS가 제공하는 서비스
DNS는 도메인네임을 IP 주소로 변환하는 것 외에 추가로 서비스를 제공한다.
1. 호스트 엘리어싱
복잡한 호스트 네임을 가진 호스트는 하나 이상의 별명을 가질 수 있다. facebook.com을 정식호스트 네임이라 칭하며 fb.com을 별칭 호스트 네임이라 칭할 수 있다.
2. 메일 서버 엘리어싱
전자메일 서버(hotmail)을 이용하는 경우 사용자의 이메일이 아닌 hotmail 서버의 호스트 네임은 기억하기 어려울 수 있다. DNS 는 호스트의 IP 주소 뿐만 아니라 제공된 별칭 호스트 네임에 대한 정식 호스트 네임을 얻기 위해 (메일 어플리케이션에 의해 )수행된다.
3. 부하분산
중복 서버 사이에 부하를 분산하는데 사용할 수 있다. 사용자 접속이 많은 인기있는 사이트는 보통 여러 서버에 중복되어있어서 각 서버가 다른 종단에서 수행되고 다른 IP 주소를 갖는다. 중복 웹 서버의 경우 여러 IP 주소가 하나의 정식 호스트네임과 연관되어있고 DNS DB에서 IP주소 집합을 가지고 있다. 클라이언트가 도메인네임에 대한 질의를 하게되면 서버는 IP주소 집합에서 주소를 순환식으로 보냄으로써 트래픽 분산 효과를 낸다.
'Computer Science > Network' 카테고리의 다른 글
브라우저에 URL을 입력하면 일어나는 일 (0) | 2023.08.29 |
---|---|
모든 개발자를 위한 HTTP 웹 기본 지식 - HTTP 헤더2 : 캐시와 조건부 요청 (0) | 2022.10.24 |
모든 개발자를 위한 HTTP 웹 기본 지식 - HTTP 헤더1(일반헤더) (0) | 2022.10.03 |
모든 개발자를 위한 HTTP 웹 기본 지식 - HTTP 상태코드 (0) | 2022.09.26 |
모든 개발자를 위한 HTTP 웹 기본 지식 - HTTP 메소드 활용 (0) | 2022.09.19 |
- Total
- Today
- Yesterday
- 백준
- JVM
- 국비교육
- 스프링부트
- 오라클
- SQL
- Thymeleaf
- 데이터베이스
- Java
- Open API
- 넥사크로
- 이클립스
- 인턴
- C
- 프로그래머스
- 오류
- 개발용어
- 부트스트랩
- HeidiSQL
- JSP
- 네트워크
- 스프링
- CS
- CSS
- svn
- 환경설정
- C++
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |