DNS
Domain Name System
사용자에게 친숙한 도메인 이름을 컴퓨터가 네트워크에서 서로를 식별하는데 사용하는 IP 주소로 변환하는 인터넷 표준 프로토콜의 구성 요소
인터넷에서 모든 장치는 고유한 IP 주소를 가지고 있지만 이는 사람이 기억하기 어려움
=> 도메인이라는 일종의 별명을 이용한다면?
이 경우에는 도메인을 실제 네트워크 상에서 사용하는 IP 주소로 바꾸고 해당 IP 주소로 접속하는 과정이 필요
이러한 과정을 DNS라고 함
DNS는 전세계적으로 약속된 규칙을 공유하는데 상위 기관에서 인증된 기관에게 도메인을 생성하거나 IP 주소로 변경할 수 있는 '권한'을 부여
=> DNS는 이처럼 상위기관 또는 하위기관 같은 '계층구조'를 가지는 분산 데이터 베이스 구조
왜 이런 분산 데이터 베이스 구조를 사용할까?
도메인을 IP로 바꿔주는 서버가 한 대만 있으면 비효율적
=> 그럼 네임서버를 여러 대 만들면 해결되는게 아닐까?
이 경우 도메인과 IP 주소를 모든 서버에서 공유해야 함
효율적으로 정리하기 위해서 도메인을 계층적으로 구분하는 구조 선택
도메인에 있는 dot이 계층을 나타낸다
DNS Server
DNS 서버는 Domain Name Space의 계층적 구조에 대한 정보를 저장하고 있는 서버
DNS 서버는 총 4가지로 분류
만약 DNS 캐시가 존재하지 않는다면 해당 4가지 DNS 서버를 순차적으로 작동하여 요청한 도메인 주소를 IP 주소로 변환해서 클라이언트에 전달하는 작업을 함
Root Name Server
최상위 네임서버로 DNS 해석과 발생한 DNS 요청에 대하여 적절한 TLD 네임서버 정보를 반환
도메인 주소 맨 뒤에는 대부분 dot 이 생략되어 있고, 생략된 해당 dot이 Root Name Server
TLD Name Server
Authoritative DNS 서버의 주소를 저장하고 안내하는 역할
TLD Name Server는 ICANN의 지사인 IANA가 관리하며 두가지 서버로 구분
- 일반 최상위 도베인 : 국가별로 고유하지 않은 도메인 ( ex .com, .net )
- 국가 코드 최상위 도메인 : 국가 또는 주와 관련된 모든 도메인이 포함 ( ex .kr, .us )
Authoritative Name Server
일반적으로 DNS 서버에서 가장 마지막 단계
실제로 DNS 리소스 레코드를 보유하고 담당하는 서버
실제 도메인과 IP 주소의 관계가 기록, 저장, 변경되는 서버
DNS recursor
클라이언트의 요청을 받아 도메인을 Name Server로 전달하고 반환받은 IP 주소를 클라이언트에게 알려주는 중재자 역할
계층적 구조 트리에서 순차적으로 반환하는 결과를 재귀적으로 탐색해서 최종 결과를 DNS 캐시에 저장
=> 이후 동일한 도메인 주소로 요청을 보내면 재귀적으로 탐색하는 작업 없이 즉시 클라이언트에게 IP 주소 반환
DNS Query
DNS 쿼리는 사용자가 도메인 이름을 입력하고 IP 주소를 얻기 위해 DNS 서버에 보내는 요청
해당 요청은 DNS resolver가 사용자 컴퓨터에서 생성하고 DNS 서버에 전송
DNS 쿼리의 결과는 DNS recursor에게 반환
만약 해당 도메인 이름에 해당하는 IP 주소를 찾을 수 없는 경우 에러를 반환
DNS 쿼리는 재귀적(Recursive) 또는 반복적(Iterative)으로 구분
Reculsive Query
재귀적 질의라고 하며 결과물인 IP 주소를 돌려주는 작업
=> 결과적으로 Recursive 서버가 Recursive 쿼리를 웹 브라우저 등에게 돌려주는 역할
Recursive 쿼리를 받은 Recursive 서버는 Iterative 한 권한을 가진 네임 서버로 Iterative 쿼리를 보내서 IP 주소를 찾아 해당 결과물에 응답
Iterative Query
반복적 질의라고 하며 Recursive DNS 서버가 다른 DNS 서버에게 쿼리를 보내어 응답을 요청하는 작업
Recursive 서버가 권한을 가지고 있는 네임 서버들에게 반복적으로 쿼리를 보내서 IP 주소를 알아낸다
만약 Recursive 서버에 이미 IP 주소가 캐시되어 있다면 해당 과정은 생략
DNS 동작 원리

- 사용자가 브라우조 주소창에 URL을 입력
- 브라우저가 입력된 도메인의 IP 주소를 알아내기 위해 운영체제를 거쳐 DNS Resolver에 요청을 보냄
- DNS Resolver는 로컬 DNS 캐시에 이전에 방문한 도메인 정보가 있는지 확인
=> 만약 캐시에 기록이 있다면 추가적인 DNS 조회 없이 바로 IP 주소를 응답 - 캐시에 정보가 없는 경우 DNS Resolver는 Root DNS Server에서 최상위 도메인 DNS 서버의 주소 정보를 확인
- DNS Resolver는 최상위 도메인 서버에 연결하여 Authoritative Name Server의 주소를 요청하여 받음
- 최종적으로 DNS Resolver는 권환 네임 서버에서 도메인의 최종 IP 주소를 확인
해당 IP 주소는 로컬 DNS 캐시에 저장 - 받아온 최종 IP 주소를 다시 운영체제를 거쳐 브라우저로 전달
DNS 캐싱 DNS 서버 안에 이전에 처리한 DNS 쿼리 결과값을 한시적으로 저장하는 것
네임 서버 DNS 서버와 동일한 의미
DNS Resolver DNS recursor와 동일한 의미
ICANN 국제 인터넷 주소 관리 기구의 약자. 인터넷 DNS의 기술적 관리, IP 주소 공간 할당 등의 업무를 수행
IANA 인터넷 할당 번호 관리기관의 약자. IP 주소, 최상위 도메인 등을 관리하는 단체
재귀적 자기 자신을 재사용하여 정의...?
'FE Study' 카테고리의 다른 글
| HTTP vs TCP (0) | 2024.06.22 |
|---|---|
| CDN (0) | 2024.06.22 |
| http / https (0) | 2024.06.19 |
| CI / CD (0) | 2024.06.02 |
| Github Action (0) | 2024.06.02 |