일반적으로 사용자가 특정 웹 사이트에 접속할 때, IP주소를 입력하는 것이 아니라 사이트의 주소를 입력하게된다.
사용자가 사이트 주소를 입력하면, 해당 주소는 그에 맞는 IP address로 변환되어 라우팅이 진행된다.
이러한 mapping 과정을 수행하는 시스템이 `DNS(Domanin Name System)`에 해당하며,
application layer에서 동작하는 application program이다.
Domain Name System
DNS는 hostname을 IP address로 translate한다.
이 외에도 host aliasing, mail server, load distribution등의 기능을 수행한다.
`host aliasing`이란 실제 host 이름과 다른 이름으로 동작하게 해주는 서비스를 말한다.
즉 별칭을 허용하는 것인데, 우리가 가장 단순한 url을 입력했을 때 자동으로 detail한 url로 변화하면서 사이트가 렌더링 되는 경우 이러한 서비스가 적용되어 있다고 생각하면 된다.
`load distribution`이란 여러 대의 서버가 있을 때 요청들을 각 서버에 분산시켜 할당하는 방법을 말한다.
예를 들어 3대의 서버가 존재한다고 하고 3개의 요청이 들어왔을 때, DNS는 각 요청을 서버 A에 하나, 서버 B에 하나, 서버 C에 하나 배정하여 트래픽의 양을 공평하게 분배하는 기능을 한다.
DNS의 경우 반드시 `분산된 상태(Distributed)`로 서비스를 제공해야한다.
왜냐하면 DNS를 centralize 시킬 경우 유일하게 존재하는 DNS 서버에서 오류가 발생하면 주소 번역이 일어나지 않아 어떠한 application도 수행되지 않기 때문이다.
또한 트래픽이 지나치게 많이 몰리게 되며, 유지보수가 매우 어려워지기도 한다.
따라서 DNS는 다음과 같이 계층적(hierarchical)이고, 분산된(distributed) 구조로 이루어져 있다.
Root domain 아래에는 .kr, .jp와 같은 국가 도메인이 오기도 한다.
이렇게 Root domain 바로 아래에 있는 도메인을 Top Level Domain 이라고 하며, 이 아래에 존재하는 domain을 authoritative domain 이라고 한다.
Local DNS name server
Local DNS name server는 위에서 언급한 DNS 계층에 속하지 않는 DNS이다.
residential ISP, company, university에 의해 각 ISP에 설치가 되며 웹 캐시처럼 동작한다.
Local DNS name server를 적용한 DNS name resolution example은 다음과 같다.
위 두개의 그림은 DNS name resoultion을 하기 위한 서로 다른 경로 예시를 보여준다.
두 번째 예시의 경우 high-level domain에 트래픽 부담이 증가한다는 특징이 있다.
Caching
local name server는 TLD 서버를 caching한다.
이를 통해 응답 속도를 향상시키고, 각 DNS server를 돌아다니면서 발생하는 트래픽의 양을 감소시킬 수 있다.
다만 이런 cache data는 실제로는 out-of-date data일 가능성이 있기 때문에, TTL(Time To Leave)를 설정해주어, 일정 시간동안만 유효한 캐시로 동작하게 설정한다.
'Network' 카테고리의 다른 글
[Computer Network] Transport Layer(UDP와 TCP) (0) | 2023.11.01 |
---|---|
[Computer Network] Socket Programming (0) | 2023.11.01 |
[Computer Network] Application 계층의 Protocol (0) | 2023.10.31 |
[Computer Network] Internet Layer (0) | 2023.10.29 |
[Computer Network] Introduction (0) | 2023.10.27 |