-
728x90
DNS(Domain Name System)란?
- 인터넷이나 다른 IP 네트워크에서 도메인 이름을 IP주소로 변환하는 시스템
- 사용자에게 친숙한 도메인 이름을 컴퓨터가 네트워크에서 서로를 식별하는 데 사용하는 인터넷 프로토콜(IP) 주소로 변환하는 인터넷 표준 프로토콜
- google.com 같은 도메인 이름으로 온라인 정보에 엑세스 할 수 있다.DNS 요청
- 브라우저의 위치 표시줄에 도메인 이름(ex. google.com)을 입력한다.
- 브라우저는 (로컬 DNS 캐시를 사용하여) 이 도메인 이름으로 식별되는 IP주소를 이미 인식하고 있는지 컴퓨터에 묻고, 그렇다면 이름이 IP 주소(ex. 173.194.126.240)로 변환되어 브라우저는 웹 서버와 내용을 주고 받는다.
- 컴퓨터가 도메인 이름 뒤에 어떤 IP가 있는지 모르는 경우 DNS 서버에 계속 요청
- DNS 서버의 작업은 정확히 어떤 IP 주소가 등록된 각 도메인 이름과 일치하는지 컴퓨터에 알려주는 것
- 컴퓨터가 요청된 IP 주소를 알게 되면 브라우저는 웹 서버와 컨텐츠를 주고 받을 수 있다.
도메인 이름에 포함되어 있는 것
- TLD(최상위 도메인)(Top-Level Domain) : 도메인 이름의 마지막 점 오른쪽에 있는 섹션. ICANN에서 관리
- 일반 TLD : .com , .net , .org
- 국가별 TLD : .uk , .jp
- 정부 부서 TLD : .gov
- 교육 기관 TLD : .edu
- 레이블
- SLD : TLD 바로 앞에 있는 레이블
- TLD의 왼쪽에는 두번째 수준 도메인(2LD)이 있고 2LD 왼쪽에 무언가가 있으면 세번째 수준 도메인(3LD)이라고 한다.
- google.com => .com : TLD / google : 2LD
- google.co.kr => .kr : TLD / .co : 2LD / google : 3LD
- SLD : TLD 바로 앞에 있는 레이블
웹 페이지 로드 DNS 서버(4개)
- DNS recursor : 웹 브라우저와 같은 응용 프로그램을 통해 클라이언트 시스템에서 쿼리를 수신하도록 설계된 서버
- 루트 네임 서버 : 루트 서버는 사람이 읽을 수 있는 호스트 이름을 IP 주소로 변환하는 첫 단계(index처럼 특정 위치에 대한 참조 역할을 한다.)
- TLD 네임 서버 : 최상위 도메인 서버는 특정 IP 주소 검색의 다음 단계이며, 호스트 이름의 마지막 부분(ex. .com)을 호스팅
- 권한 있는 네임 서버 : 요청된 레코드에 엑세스할 수 있는 경우 요청된 호스트 이름의 IP 주소를 초기 요청을 한 DNS Recursor에 반환
DNS 조회의 8단계
- 사용자가 웹 브라우저에 google.com을 입력하면, 쿼리가 인터넷으로 이동하고 재귀적 DNS 확인자가 이를 수신
- 이어서 확인자가 DNS 루트 네임 서버(.)를 쿼리한다.
- 루트 서버가, 도메인에 대한 정보를 저장하는 최상위 도메인(TLD) DNS 서버(.com 또는 .net)의 주소로 Recursor에 응답한다. google.com을 검색할 경우의 요청은 .com TLD를 가리킨다.
- 확인자 .com TLD에 요청
- TLD 서버가 도메인 이름 서버(google.com)의 IP 주소로 응답
- 재귀 확인자가 DNS로 쿼리를 보낸다.
- google.com의 IP 주소가 네임 서버에서 확인자에게 반환한다.
- DNS 확인자가, 처음 요청한 도메인의 IP 주소로 웹 브라우저에 응답한다. ==> DNS 조회의 8단계를 거쳐 google.com의 IP 주소가 반환되면, 이제 브라우저가 웹 페이지를 요청할 수 있다.
- 브라우저가 IP 주소로 HTTP 요청을 보낸다.
- 해당 IP의 서버가 브라우저에서 렌더링할 웹 페이지를 반환
DNS Query의 유형
- 재귀 쿼리 - DNS 클라이언트는 DNS 서버가 요청된 리소스 레코드를 찾을 수 없는 경우 오류 메시지로 클라이언트에 응답할 것을 요구
- 반복 쿼리 - 이 상황에서 DNS 클라이언트는 DNS 서버가 가능한 최선의 답변을 반환하도록 함. 쿼리된 DNS 서버에 쿼리 이름과 일치하는 항목이 없으면 하위 수준의 도메인 네임 스페이스에 대한 권한이 있는 DNS 서버에 대한 참조를 반환. 그런 다음 DNS 클라이언트는 참조 주소를 쿼리함. 이 프로세스는 오류 또는 시간 초과가 발생할 때까지 쿼리 체인 아래에 있는 추가 DNS 서버에서 반복
- 비재귀 쿼리 - 일반적으로 DNS 확인자 클라이언트가 레코드에 대한 권한이 있거나, 해당 레코드가 캐시 내부에 있어서 액세스 권한이 있는 레코드에 대해 DNS 서버를 쿼리할 때 발생
DNS 캐싱
- 요청하는 클라이언트에 더 가깝게 데이터를 저장해 DNS 쿼리를 더 일찍 해결할 수 있고 DNS 조회 체인 아래에 있는 추가 쿼리를 피할 수 있어서 로드 시간이 향상되고 대역폭/CPU 소비가 줄어든다.
- 브라우저 DNS 캐싱
- 최신 웹 브라우저는 기본적으로 설정된 시간 동안 DNS 레코드를 캐시하도록 설계
- DNS 캐싱이 웹 브라우저에 가까울수록 캐시를 확인하고 IP 주소에 올바른 요청을 하기 위해 더 적은 수의 처리 단계를 수행해야 함.
- DNS 레코드에 대한 요청이 있을 때 브라우저 캐시는 요청된 레코드를 확인하는 첫 번째 위치
728x90'개념 정리' 카테고리의 다른 글
AWS 개념(1)(EC2, S3, RDS, VPC) (2) 2024.12.24 NAT란?(NAT의 종류) (0) 2024.11.28 Active Directory(AD, netbios와 dns 기반) (2) 2024.11.27 ICMP와 SNMP 분석 (0) 2024.11.27 서버 하드웨어 및 소프트웨어 (1) 2024.11.27