티스토리 뷰
DNS - 인터넷 디렉터리 서비스
인터넷 호스트에 대한 식별자중 하나로 host name이 있다.
- www.naver.com, www.google.com
- 그러나 호스트 네임은 인터넷에서의 그 호스트 위치에 대한 정보를 거의 제공하지 않음
- 또 호스트 네임은 길이가 바뀌고 알파뉴메릭 문자로 구성되기에 라우터가 처리하는 데 어려움이 있다.
이런 이유로 호스트는 주로 IP 주소로 식별된다.
IP 주소는 계층 구조여서 주소를 왼쪽에서 오른쪽으로 조사함으로써 그 호스트가 어디에 위치하는지에 대한 정보를 얻을 수 있다.
DNS가 제공하는 서비스
사람은 좀더 기억하기 쉬운 호스트 네임 식별자를 좋아하지만, 라우터는 고정 길이의 계층구조를 가진 IP 주소를 좋아한다.
이런 선호 차이를 절충하기 위해, hostname -> IP address로 변환해주는 디렉터리 서비스가 필요함 -> 이것이 인터넷 DNS(Domain Name System)의 주요 임무임
DNS는
- DNS 서버들의 계층구조로 구현된 분산 데이터베이스
- 호스트가 분산 데이터베이스로 질의하도록 허락하는 애플리케이션 계층 프로토콜
DNS는 다른 애플리케이션 프로토콜들이 HTTP, SMTP, FTP 등 사용자가 제공한 호스트 네임을 IP 주소로 변환하기 위해 주로 이용함.
DNS 수행 예 (사용자의 호스트가 http request 메시지를 웹서버 www.someschool.edu로 보내기 위해 사용자 호스트는 www.someschool.edu의 IP주소를 얻어야만함)
- 같은 사용자 컴퓨터는 DNS 애플리케이션의 클라이언트 측을 수행함
- 브라우저는 URL로부터 호스트 네임 www.someschool.edu를 추출하고 그 호스트 네임을 DNS 애플리케이션의 클라이언트 측에 넘긴다.
- DNS 클라이언트는 DNS 서버로 호스트네임을 포함하는 질의를 보낸다.
- DNS 클라이언트는 궁극적으로 호스트 네임에 대한 IP 주소를 가진 응답을 받는다.
- 브라우저가 DNS로부터 IP주소를 받으면, 브라우저는 그 IP 주소의 80번 포트에 위치하는 HTTP 서버 프로세스로 TCP 연결을 초기화한다.
이 예로부터 DNS는 DNS를 사용하는 인터넷 애플리케이션에 추가 지연을 준다는 것을 볼 수 있다. 다행히도 원하는 IP 주소는 가까운 DNS 서버에 캐시(cache)되어 있어서 평균 DNS 지연뿐 아니라 DNS 네트워크 트래픽 감소에 도움을 줌
DNS의 중요한 추가적인 서비스
-host aliasing: 복잡한 호스트 네임을 가진 호스트는 하나 이상의 별명을 가질 수 있다. 예를 들어, relay1.west-coast.enterprise.com 같은 호스트 네임은 enterprise.com과 www.enterprise.com 같은 두 개의 별칭을 가질 수 있다. 이경우에 호스트 네임 relay1.west-coast.enterprise.com을 정식 호스트 네임(canonical hostname)이라고 한다. 별칭 호스트 네임은 정식 호스트 네임보다 대체로 기억하기 쉽다. DNS는 호스트의 IP 주소뿐만 아니라 제시한 별칭 호스트 네임보다 대체로 기억하기 쉽다.
-mail server aliasing: 전자메일 주소는 기억하기 쉬운것이 좋다. 그런데 메일 서버의 호스트 네임은 좀 복잡하고 기억하기 어려울 수 있다. DNS는 호스트의 IP 주소뿐만 아니라 제공된 별칭 호스트 네임에 대한 정식 호스트 네임을 얻기 위해 메일 애플리케이션에 의해 수행 될 수 있다.
-load distribution(부하 분산): DNS는 중복 웹 서버 같은 여러 중복 서버 사이에 부하를 분산하기 위해서도 사용됨. 인기 있는 사이트들은 여러 서버에 중복되어 있어서, 각 서버가 다른 종단 시스템에서 수행되고 다른 IP주소를 가짐. 중복 웹 서버의 경우, 여러 IP 주소가 하나의 정식 호스트 네임과 연관되어 있다. DNS 데이터베이스는 이 IP 주소 집합을 갖고 있다. 클라이언트가 주소 집합으로 매핑하는 호스트 네임에 대한 DNS 질의를 하면, 서버는 IP 주소 집합 전체를 가지고 응답한다. 그러나 각 응답에서의 주소 순서는 매번 회전한다. 클라이언트는 대체로 주소 집합 내부의 첫 번째 IP 주소로 HTTP 요청 메시지를 보내므로, DNS 회전은 여러 중복 서버들 사이에서 트래픽을 분산하는 효과를 낸다. DNS 회전은 전자메일에서도 사용되어 여러 메일 서버가 동일한 별칭을 가질 수 있다. 최근 아카마이 같은 회사는 웹 콘텐츠 분산을 제공하기 위해 좀더 세련된 방법으로 DNS를 이용하고 있다.
'Web' 카테고리의 다른 글
NGINX와 Apache (NGINX and Apache) (2) | 2020.04.04 |
---|---|
UDP (0) | 2016.09.22 |
HTTP의 keep-Alive와 TCP의 keepalive (0) | 2016.09.21 |
콘텐츠 인코딩과 전송 인코딩/청크 인코딩(Contents-Encoding and Transfer-Encoding/Chunked Encoding) (0) | 2016.09.16 |
[HTTP] 멀티파트 미디어 타입 (Multipart Media Type) (0) | 2016.09.15 |
- Total
- Today
- Yesterday
- good practice
- object
- log level
- webserver
- java
- Apache
- lood
- log
- runtime data areas
- logging
- logback
- async
- JVM
- logging facade
- NGINX
- linux
- slf4j
- Spring
- TaskExecutor
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |